Recibir informes sobre sucesos de Ubuntu Server 14.04 LTS con Logcheck

Publicado por P. Ruiz en

Cuando necesitamos controlar lo que está pasando en un sistema, debemos recurrir a su registro de sucesos. Para lograrlo, podemos acceder directamente a los archivos donde se almacenan, que se encuentran en la ruta /var/log y guardan su información en texto plano. También podemos utilizar otras herramientas, como Cockpit o Webmin, que nos hacen un poco más grata la tarea.

Sin embargo, existe una alternativa, llamada Logcheck, que nos simplifica bastante el trabajo. A diferencia de las anteriores, Logcheck compara las entradas recientes en el registro de sucesos con un conjunto de reglas predefinidas. Dichas reglas identifican los eventos como urgentes o los desestiman como rutinarios. Al final, envía el resultado por correo electrónico al administrador del sistema. También hace un seguimiento de los eventos procesados, para no repetirlos en sucesivas ejecuciones.

Los archivos de registro que se tienen en cuenta de forma predeterminada son /var/log/syslog y /var/log/auth.log, aunque este comportamiento puede ser modificado según nuestras necesidades.

Los sucesos que no son ignorados se catalogan en tres categorías de seguridad, según su trascendencia:

  • Active System Attacks (Ataque al sistema activo).

  • Security Violations (Violación de seguridad).

  • Unusual Activity (Actividad inusual)

Instalar Logcheck

Afortunadamente, Logcheck se encuentra en los repositorios de Ubuntu 14.04 LTS, por lo que su instalación es tan sencilla como ejecutar el siguiente comando:

sudo apt-get install logcheck

Abrimos una ventana de terminal y ejecutamos el comando.

La forma predeterminada en la que Logcheck envía su información al administrador es a través de correo electrónico. Por este motivo, Logcheck tiene como dependencia al paquete PostFix.

Si no está configurado con antelación, durante la instalación de Logcheck se realiza una configuración básica de Postfix.

La primera pantalla del asistente nos indica que deberemos escoger entre distintas opciones de configuración. Cuando hayamos leído la información, pulsamos la tecla Intro.

Para el funcionamiento de Logcheck no tiene mucha importancia la opción que elijamos. Aquí nos inclinaremos por Sitio de Internet. ya que enviaremos el correo utilizando el protocolo SMTP a una dirección de correo externa a nuestra red local.

Nos desplazamos con las teclas de cursor y, cuando estemos sobre la opción elegida, volvemos a pulsar la tecla Intro.

Por último, elegiremos el nombre del dominio que se utilizará para cualificar las direcciones de correo que no tengan nombre. De forma predeterminada, el asistente nos ofrece el hostname de la máquina, pero aquí lo hemos cambiado por el nombre antiguo para comprobar que Logcheck sí cualifica sus correos con el nombre de host actual.

Cuando acabemos, pulsamos la tecla Intro.

Poco después, habrá terminado la instalación.

Ya estamos casi listos para comprobar si el sistema funciona correctamente. Sin embargo, aún tenemos que editar el archivo de configuración de Logcheck para indicarle dos detalles. Se trata del archivo /etc/logcheck/logcheck.conf y estos son los valores a incluir:

  • La dirección de correo electrónico donde deben enviarse los informes, que se encuentra en la variable SENDMAILTO.

  • Que dichos informes deben incluirse como archivos adjuntos. Esto se hace asignando a la variable MAILASATTACH el valor 1.

Con algunas direcciones de correo que incluyen signos (como, por ejemplo, somebooks_es@gmail.com), Logcheck puede no funcionar correctamente.

Debemos recordar usar el editor con privilegios de superusuario (para no resultar monótonos, en este caso hemos utilizado gEdit).

Saldremos del editor asegurándonos de guardar los cambios.

Cuando hayamos hecho estos cambios, estamos listos para probar el funcionamiento de Logcheck. Sin embargo, antes debemos saber que durante su instalación, se ha creado un usuario, también llamado logcheck, con el fin de evitar que el comando tenga que ejecutarse como root. De echo, si intentas ejecutarlo con privilegios de root, obtendrás un error.

Para ejecutar el comando logcheck con el usuario logcheck, necesitamos recurrir al argumento -u del comando sudo. Su formato general es este…

sudo -u usuario comando

… Y adaptándolo a nuestras necesidades actuales, nos queda así:

sudo -u logcheck logcheck

La ejecución del comando empleará un tiempo que estará en función del número de sucesos que deba procesar.

El proceso de análisis tardará un tiempo que dependerá del número de eventos que deban revisarse. Finalmente, obtendremos de nuevo el prompt del sistema. El momento en el que se reciba el e-mail dependerá de la configuración predeterminada de Logcheck. En mi sistema, los eventos se envían en el minuto 2 de cada hora aunque, como veremos después, es muy sencillo cambiar esta característica.

Cuando consultemos el correo, veremos que el asunto incluye el nombre del servidor, la fecha y la hora en la que se ha realizado la consulta.

El informe se incluye como un archivo adjunto en formato de texto plano.

Ajustar el funcionamiento de Logcheck

Existen varias cuestiones que podemos adecuar a nuestras necesidades en el funcionamiento de Logcheck:

  • Los archivos de sucesos a monitorizar: El archivo /etc/logcheck/logcheck.logfiles contiene el nombre de los archivos de los que Logcheck obtiene los sucesos que analiza. De forma predeterminada proceden de auth.log y syslog, pero podemos añadir aquellos que consideremos oportunos. Por ejemplo, podríamos añadir el archivo /var/log/boot.log, que es donde se anotan las incidencias de inicio del sistema.

    Saldremos del editor pulsando las teclas ctrl + x y asegurándonos de guardar los cambios.

    … o podríamos incluir ficheros generados por cualquier aplicación, como /var/log/apache2/error.log o /var/log/apache2/localhost/error.log.

  • La frecuencia con la que se ejecuta Logcheck: El archivo /etc/cron.d/logcheck representa una tarea para cron e indica con qué frecuencia se generan los informes.

    Modificando este archivo ajustaremos la frecuencia de los informes según nuestra necesidad.

  • Las reglas de filtrado: Logcheck procesa los sucesos según una serie de reglas redactadas como expresiones regulares que representan patrones que aparecen en los archivos de sucesos cuando se produce un determinado suceso. Por ejemplo, una regla podría ser así:

    login.*: .*LOGIN FAILURE.* FROM .*root

    Con ella buscamos líneas en las que el subsistema login indique cualquier fallo al tratar de iniciar sesión como root.

    Se escapa de los objetivos de este documento entrar en detalle sobre la construcción y eliminación de reglas para Logcheck. Basta con decir que se almacenan en archivos de texto, dentro de diferentes carpetas, según su tipo:

    • Las que identifican un suceso como un intento de intrusión se guardan en el directorio /etc/logcheck/cracking.d.

    • Las que excluyen un suceso como un intento de intrusión se guardan en el directorio /etc/logcheck/cracking.ignore.d.

    • Las que identifican un suceso como una alerta de seguridad se guardan en el directorio /etc/logcheck/violations.d.

    • Las que excluyen un suceso como una alerta de seguridad se guardan en el directorio /etc/logcheck/violations.ignore.d.

    Puedes encontrar información detallada sobre el filtrado de sucesos en /usr/share/doc/logcheck-database/README.logcheck-database.gz.

    Las demás son consideradas sucesos del sistema.

Y esto es todo por el momento. Espero que te haya resultado útil.