Análisis y Gestión de Logs en Sistemas Linux: Fundamentos y Herramientas

Clasificado en Informática

Escrito el en español con un tamaño de 6,51 KB

¿Qué es el Logging?

El logging es cualquier procedimiento por el cual un sistema operativo o aplicación graba eventos mientras ocurren y los guarda para un examen posterior. Es un componente esencial de cualquier sistema operativo, al cual se le debe prestar mucha atención. En cuanto a seguridad, nos permite mantener un registro de las acciones dañinas de un atacante, siendo la evidencia de que "nos han atacado".

Estructura de Archivos de Log

  • Toda la estructura de archivos de log se encuentra en el directorio: /var/log/
  • Este directorio contiene multitud de archivos que corresponden a distintos servicios que se ejecutan en nuestra máquina y posteriormente imprimen su actividad en el fichero de log correspondiente o incluso en ficheros de log compartidos.
  • Se pueden ver estos ficheros con el comando: tail -f /var/log/nombrefichero

Utilidades para Examinar Logs

Examinar los archivos de logs directamente puede resultar muy engorroso y dificultar la detección de anomalías, errores o situaciones extrañas en nuestro sistema. Para ello, existen utilidades que nos presentan esta información de forma más cómoda y legible:

  • lastlog
  • last

lastlog

Se encarga de imprimir información relativa a los logins de los usuarios. Muestra todos los usuarios contenidos en /etc/passwd y su último login si han iniciado sesión alguna vez, y si no, un mensaje "Never Logged in". Esta utilidad lee la información del fichero /var/log/lastlog:

Username   Port   From         Latest
root       tty1   Thu Jul 1 12:12:12 2003
user1      ttyp0  172.16.0.1   Thu Jul 1 12:15:00 2003
user2      **Never Logged in**

last

Informa del último login de usuarios, pero esta vez mostrando información solo de los usuarios que han hecho "log in", dando así información como: usuarios, terminal usado, IP, fecha y hora, y duración de sus sesiones. Esta utilidad lee la información del fichero /var/log/wtmp:

root       tty1   Thu Jul 1 12:12   Still logged in
user1      ttyp0  172.16.0.1   Thu Jul 1 12:15 – 12:20 (05:00)

Seguridad y Manipulación de Logs

A pesar de la existencia de logs del sistema que nos permiten registrar intentos de ataques y sus autores, esto no es infalible. Un buen atacante puede eliminar las pistas de su ataque mediante la utilización de programas llamados barredores o limpiadores. Estos programas básicamente se encargan de borrar las entradas de los ficheros de logs correspondientes, de forma que no queden indicios de su entrada.

Programas de Borrado de Logs

  • Cloak2 (shadowing)
  • Utclean (elimina entradas)
  • SYSLOG Fogger (entradas falsas)
  • Marry (editor)

Prevención de Borrado de Logs

  • Copias de seguridad de logs en otras máquinas.
  • Herramientas de logging de terceros.

Demonios de Gestión de Logs: syslogd y klogd

Existen dos demonios que se encargan de manejar los mensajes del kernel y del sistema:

  • syslogd: Guarda los logs del sistema y de muchos servicios. Guarda el nombre del programa, el tipo de servicio, la prioridad y el mensaje del propio programa.
  • klogd: Guarda los logs propios del kernel para su posterior análisis en caso de error, por ejemplo.

Ambos escriben sus mensajes en /var/log/messages.

Configuración de syslogd: syslog.conf

El syslogd nos permite personalizar los loggings del sistema mediante el fichero de configuración /etc/syslog.conf. Aquí se define todo sobre lo que se quiere hacer log. Para esto, se definen normas con dos campos:

  • Selector = A qué hacer log.
  • Action = Dónde hacer log.

Campo Selector

Consta de dos partes: type (facility) y priority.

Type (Facility)

  • auth
  • authpriv
  • cron
  • daemon
  • kern
  • lpr
  • mail
  • news
  • uucp

Priority

  • alert
  • crit
  • debug
  • emerg
  • err
  • info
  • notice
  • warning

Campo Action

Especifica a dónde deben ir los mensajes. Normalmente es un fichero, aunque otras opciones muy interesantes son:

  • Consola
  • Máquina remota
  • Usuarios concretos

Ejemplo de syslog.conf

#kernel
kern.* /dev/console
# The authpriv file goes to a remote host.
authpriv.* @otramaquina
# Log all the mail messages in one place.
mail.* /var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

*.emerg *: Todos los usuarios

Rotación de Logs con logrotate

Cuando tenemos un gran sistema Linux con muchos usuarios, máquinas, etc., los logs pueden llegar a ser ficheros muy grandes. Para solucionar esto, se usa logrotate, que nos permitirá realizar copias de seguridad de los logs o rotarlos. También permite comprimir y enviar logs.

Para realizar esto, se usa el cron, al cual se le indicará si queremos hacer esto diariamente, semanalmente, etc.

Opciones interesantes de logrotate

  • compress
  • daily
  • endscript
  • mail [dirección de correo]
  • monthly
  • nocompress
  • rotate [n]
  • size
  • weekly

Ejemplo de logrotate

errors [email protected]
compress
/var/log/messages {
  rotate 5
  weekly
  postrotate
  endscript
}

Herramientas Adicionales de Logging

LogWatch

Analiza los logs durante un periodo de tiempo especificado por el usuario y genera informes personalizables y de fácil lectura para el administrador.

Secure Syslog

Herramienta de logging de sistema criptográficamente segura, que permite la auditoría remota de los logs. Así, si un intruso entra con privilegios de root, sigue siendo posible auditar el sistema.

Entradas relacionadas: