Los ficheros de log representan una buena forma de entender el funcionamiento del sistema y su comportamiento. Ya sea para labores de post-explotación, para analizar un incidente, para ver qué está pasando con alguna aplicación o simplemente para comprobar que todo funciona como se espera. Todos los sistemas operativos y servidores de uso habitual en internet cuentan con mecanismos de logging que permiten generar trazas en ficheros permanentes,  temporales, en el syslog o en el stdout del proceso. Hay muchas maneras de generar eventos en forma de log. En este post se verán 15 ficheros de log interesantes en sistemas Linux. Se trata de un artículo de nivel básico que servirá como complemento a los conocimientos fundamentales de este sistema operativo.

  1. /var/log/messages

    Dependiendo de la distribución de Linux utilizada, es posible que este fichero no se encuentre disponible en el sistema pero si lo está, en él se podrán apreciar los mensajes globales del sistema incluyendo trazas que generan algunos servicios durante el arranque, trazas que dejan los programas que se ejecutan por parte del demonio CROND, logs sobre procesos de autenticación llevados a cabo por los usuarios, etc.

  2. /var/log/syslog

    Como se mencionaba antes, el fichero “messages” ya no se encuentra disponible en algunas distribuciones recientes de Linux como es el caso de Debian y Ubuntu, sin embargo esta misma información se puede encontrar en el syslog. El estándar syslog es uno de los más conocidos en sistemas Linux y se caracteriza por centralizar todas las trazas que se producen en el sistema, incluyendo aquellas que registra el kernel. Hay que tener en cuenta que el protocolo syslog por defecto almacena los mensajes del sistema en este fichero, pero es posible administrar los logs de varias formas. Por ejemplo, se pueden enviar a un servidor syslog externo o directamente a un SIEM, se pueden enviar a un búfer en memoria o incluso, guardar los mensajes en diferentes ficheros en función de su criticidad ya que cada log generado tiene un tipo que permite saber que tan “grave” es el mensaje.

  3. /var/log/dmesg

    Cuando un sistema Linux arranca, enseña información muy variada sobre los dispositivos detectados en el sistema y los módulos del kernel que se encargan de gestionarlos. Dichos logs se generan en el fichero /var/log/dmesg pero dependiendo de la distribución es posible que este fichero no exista, en todo caso el comando “dmesg” permite acceder a estas trazas, las cuales son especialmente útiles para depurar y ver si los dispositivos que están conectados al ordenador se detectan correctamente.

  4. /var/log/auth.log

    Se trata de un fichero que almacena los eventos relacionados con mecanismos de autorización, por ejemplo cuando un usuario inicia sesión en el sistema. Suele incluir detalles sobre el mecanismo utilizado y el resultado (si la autenticación ha sido correcta o no).

  5. /var/log/daemon.log

    Incluye logs de algunos de los servicios que se ejecutan en segundo plano.

  6. /var/log/lastlog

    Contiene información sobre los usuarios que han iniciado sesión recientemente en el sistema. No obstante, no es un fichero que se pueda leer en formato ASCII, para acceder a sus contenidos se utiliza la herramienta “lastlog”.

  7. /var/log/kern.log

    Este fichero almacena los logs producidos por el kernel. Si por el motivo que sea es necesario compilar el kernel para añadir características o modificar algún parámetro será util para depurar.

  8. /var/log/dpkg.log

    En sistemas basados en Debian, cuando se instala/desinstala software utilizando la herramienta DPKG, los logs generados se almacenan en este fichero lo cual puede ser útil para saber qué programas se han ido instalando con esta utilidad.

  9. /var/log/btmp

    Este fichero incluye trazas sobre los intentos de autenticación fallidos en el sistema. Del mismo modo que ocurre con el fichero “lastlog”, no se puede leer como un fichero de texto plano ASCII, es necesario ejecutar la utilidad “last” la cual permitirá acceder a sus contenidos.

  10. /var/log/user.log

    Incluye información sobre los eventos producidos en las sesiones de los usuarios, dichos eventos incluyen conexiones o interfaces de red que se encuentran activas o errores que se van produciendo en el Desktop Manager que esté usando el usuario.

  11. /var/log/wtmp

    Contiene información sobre qué usuarios se encuentran autenticados y usando el sistema actualmente. Este fichero es el que utilizan las herramientas “who” y “w” para enseñar sus resultados.

  12. /var/log/boot.log

    Incluye exactamente las mismas trazas que enseña el sistema durante el proceso de arranque.

  13. /var/log/alternatives.log

    Los registros que genera el comando “update-alternatives” se quedan almacenados en este fichero y puede ser útil para efectos de depuración o ver qué cambios se han hecho sobre el software instalado.

  14. /var/log/cron

    Se trata de un fichero de logs en donde se guardan las trazas producidas por las tareas programadas ejecutadas por el demonio CROND.

  15. Directorios interesantes que pueden almacenar logs.

    Los ficheros listados anteriormente son comunes en sistemas Linux, sin embargo es bastante frecuente encontrar  servicios que generan sus propios ficheros de log en ubicaciones muy concretas y por supuesto, es recomendable revisar sus contenidos tanto para la administración del sistema como para detectar una posible intrusión. La ubicación exacta de cada directorio puede variar dependiendo de la distribución de Linux y de la forma en la que se haya instalado el programa, por ejemplo no es lo mismo instalar Apache HTTPD desde código fuente que con APT/YUM. En el primer caso los ficheros y directorios de configuración tendrán rutas más o menos estandar, pero si se ha instalado manualmente desde código fuente es posible indicar estos valores en el proceso de instalación. Dicho esto, algunos directorios que se deberían consultar ya que son habituales a la hora de almacenar logs son los siguientes:

    1. /var/log/httpd/ o /var/log/apache2
    2. /var/log/lighttpd/
    3. /var/log/mail/
    4. /var/log/samba/
    5. /var/log/mysqld.log
    6. /etc/rsyslog.d/ y  /etc/rsyslog.conf
    7. /var/log/audit/

Los ficheros log que se han enseñado aquí son probablemente los más interesantes desde el punto de vista de la seguridad en un sistema Linux, sin embargo no son los únicos. Hay bastantes secciones del sistema que incluyen trazas útiles y dependerá en gran medida del software instalado. ¿Qué ficheros de log echas en falta en este post? Escribe un comentario.

Un saludo y Happy Hack!
Adastra.