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
- 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.