Recibir informes sobre sucesos de Ubuntu Server 18.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.

Además, para construir el informe, se pueden establecer tres niveles de tolerancia diferentes:

  • Workstation: Está orientado a estaciones de trabajo y otros equipos que no sean críticos. Ignora todos los eventos que coincidan con las reglas contenidas en los archivos ignore.d.workstation, ignore.d.server e ignore.d.paranoid.

  • Server. Pensado para ordenadores que actúan como servidores de red. Ignora todos los eventos que coincidan con las reglas contenidas en los archivos ignore.d.server e ignore.d.paranoid.

  • Paranoid. Está dirigido a equipos con una función crítica, por ejemplo, los que actúan como cortafuegos. Únicamente ignora los eventos que coincidan con las reglas contenidas en el archivo ignore.d.paranoid.

Este modo de funcionar nos permite automatizar, en parte, la supervisión del sistema a la vez que mejoramos la seguridad. Su único inconveniente es que debemos dedicar algún esfuerzo para su correcta instalación y configuración.

Antes de instalar

Para su correcto funcionamiento, Logcheck necesita que se encuentre instalado, y correctamente configurado, el servidor de correo PostFix. Si en el momento de instalar Logcheck, Postfix no se encuentra en el sistema, se añadirá como una dependencia más e, incluso, se ejecutará su asistente de configuración.

Sin embargo, instalándolo de forma separada, podemos independizar ambas tareas y asegurarnos que Postfix funciona correctamente antes de afrontar la instalación de Logcheck. Este es el modo en el que hemos enfocado el presente artículo. De hecho, antes de continuar, te recomiendo que hagas lo mismo.

Para lograrlo, puedes seguir las indicaciones de un artículo que ya publicamos en SomeBooks.es con el título Configurar Postfix para usar el SMTP de Gmail en Ubuntu 18.04 LTS.

Instalar Logcheck

Afortunadamente, Logcheck se encuentra en los repositorios oficiales de Ubuntu, por lo que su instalación será muy sencilla.

Como es habitual cuando instalamos nuevos programas, lo primeros será actualizar la base de datos de paquetes de nuestro equipo. De esta forma, nos aseguramos de que instalamos la última versión del software que necesitemos. Lo conseguiremos ejecutando la siguiente orden:

sudo apt update

Y como estamos realizando una tarea administrativa, también tendremos que autenticarnos.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-001

En nuestro caso, el sistema nos muestra el tamaño de la descarga para cada repositorio disponible, el tamaño total y el tiempo empleado. También nos informa sobre el número de paquetes que podríamos actualizar.

Incluso nos sugiere la orden que podríamos utilizar para obtener la lista completa de los paquetes actualizables.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-002

A continuación, instalamos Logcheck de la forma habitual:

sudo apt install logcheck

Escribimos el comando y pulsamos la tecla Intro.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-003

Como se necesitan instalar algunas dependencias, el sistema nos solicita nuestra aprobación.

Podemos pulsar la tecla S o, sencillamente, pulsar Intro, ya que la respuesta afirmativa es la predeterminada.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-004

Después de esto, la instalación continuará unos instantes más.

Solo tenemos que esperar a que concluya.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-005

Configurar Logcheck

Una vez concluida la instalación, 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.

Como aquí solemos utilizar el editor nano, escribiremos algo como esto:

 sudo nano /etc/logcheck/logcheck.conf

Como antes, escribimos el comando y pulsamos la tecla Intro.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-006

Inmediatamente después tendremos el contenido del archivo en la pantalla.

Contenido del archivo logcheck.conf.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-007

A continuación, nos desplazamos hasta la línea que contiene la variable SENDMAILTO y sustituimos el valor predeterminado por el que nos convenga a nosotros (para nuestro ejemplo, somebooks.es@gmail.com).

Después, descendemos hasta la línea que contiene la variable MAILASATTACH y ponemos su valor a 1.

Cuando terminemos de hacer los cambios anteriores, salimos del editor pulsando las teclas Ctrl + X.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-008

Al hacerlo, el editor nos preguntará si queremos guardar los cambios que hemos realizado.

Para contestar afirmativamente, pulsamos la tecla Y.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-009

A continuación, nos da la oportunidad de cambiar el nombre del archivo, para no perder su valor anterior.

Como nosotros queremos sobrescribirlo, pulsamos la tecla Intro.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-010

Comprobar el funcionamiento de Logcheck

Una vez completados los cambios anteriores, 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 hecho, 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

Es decir, ejecutamos el comando con los privilegios de la cuenta indicada.

Nosotros, además, añadiremos dos argumentos a logcheck:

  • -o, que sustituye el envío del correo electrónico por la salida en pantalla. Así, vemos el resultado de forma inmediata y comprobamos que funciona satisfactoriamente.

  • -t, que inhibe el seguimiento de los eventos procesados, lo que nos permite seguir haciendo pruebas sin perder los eventos anteriores.

Por lo tanto, el comando nos queda así:

sudo -u logcheck logcheck -o -t

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

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-011

Un momento más tarde, el resultado aparecerá en pantalla.

Salida de nuestra primera prueba.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-012

Una vez comprobado que el mecanismo funciona, nos queda asegurarnos de que se reciben los correos electrónicos que produzca Logcheck. Y para lograrlo, solo tenemos que repetir el comando anterior, pero eliminando la opción -o:

sudo -u logcheck logcheck -t

Volvemos a escribir el comando y pulsamos la tecla Intro.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-013

Si todo ha sido correcto, unos instantes después tendremos, en la bandeja de entrada de la cuenta de correo que hayamos configurado como destinataria, un nuevo mensaje.

Ademas, comprobamos que incorpora un archivo adjunto con el informe generado.

Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-014

Por cierto, para facilitar su lectura o procesamiento, el informe se genera en formato de texto plano.

En cualquier caso, debes tener en cuenta que, si Logcheck no encuentra mensajes nuevos, no enviará ningún correo electrónico.

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.

    Para lograrlo, bastaría con editar el archivo logcheck.logfiles:

    sudo nano /etc/logcheck/logcheck.logfiles

    Como en ocasiones anteriores, escribimos la orden y pulsamos la tecla Intro.

    Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-015

    Cuando se abra veremos qué archivos está analizando actualmente Logcheck.

    De momento, solo aparecen los archivos predeterminados

    Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-016

    Por ejemplo, podríamos añadir el archivo /var/log/boot.log, que es donde se anotan las incidencias de inicio del sistema.

    Cuando terminemos de escribirlo, salimos del editor pulsando las teclas Ctrl + X y asegurándonos de guardar los cambios.

    Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-017

    También podríamos haber añadido los 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.

    Para comenzar, podemos editarlo para ver su contenido:

    sudo nano /etc/cron.d/logcheck

    De nuevo, escribimos la orden y pulsamos la tecla Intro.

    Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-018

    Comprobamos que Logcheck se pondrá en marcha con cada reinicio o en el minuto 2 de cada hora.

    Como ves en la imagen siguiente, la única diferencia entre ambas líneas es el argumento -R, que incluirá el texto «Reboot:» en el asunto del mensaje enviado por email. De ese modo, el administrador también tendrá constancia de que se ha producido un reinicio.

    Modificando este archivo ajustaremos la frecuencia de los informes según nuestras necesidades.

    Recibir-informes-sobre-sucesos-de-Ubuntu-Server-1804-LTS-con-Logcheck-019

  • Las reglas de filtrado: Logcheck procesa los sucesos según una serie de reglas redactadas como expresiones regulares. Estas líneas representan patrones que aparecen en los archivos de sucesos cuando se produce un determinado evento. 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.

    Las demás son consideradas sucesos del sistema.

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

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

El artículo de hoy lo hemos desarrollado sobre Ubuntu Server pero, para ponerlo en práctica sobre la versión de escritorio, solo tienes que abrir una ventana de terminal. Por ejemplo, usando la combinación de teclas Alt + Control + T.