Capítulo 9: Administración del servidor Ubuntu 14.04 LTS



9.2. Registros de sucesos

Para un administrador es muy importante saber qué ocurre en su sistema. Afortunadamente, los sistemas Linux en general, guardan detalles del funcionamiento del sistema en diferentes archivos. Su objetivo es anotar cualquier funcionamiento anómalo o cualquier problema que pueda surgir en el sistema.

Todos estos archivos se encuentran en el directorio /var/log.

La mayor parte del comportamiento de rsyslogd se encuentra definido en el archivo /etc/rsyslog.conf, aunque algunas opciones también se establecen en /etc/rsyslog.d/.

Es posible modificar estos archivos para cambiar dicho comportamiento, pero se escapa de los objetivos de este texto explicar cómo hacerlo.

En versiones antiguas de Linux, era el demonio syslogd (Syslog Daemon) quien se encargaba de guardar información sobre el funcionamiento del sistema. Sin embargo, en la actualidad suelen utilizarse dos herramientas que ofrecen una mayor cantidad de opciones. Son estas:

  • syslog-ng: Es una implementación open source del demonio syslogd, pero ofreciendo más prestaciones, como la aplicación de filtros, ordenar la información según el origen, enviarla a distintos lugares, según su naturaleza, etc.
  • rsyslogd: Una versión mejorada de syslogd con capacidades de multi-hilo, que se centra en la seguridad y en la fiabilidad. Esta es la opción predeterminada en Ubuntu 14.04 LTS y por esto es en la que nos vamos a centrar aquí.

Los registros de sucesos que se vigilan de forma predeterminada desde rsyslogd son los siguientes:

Registros de sucesos

Si un servicio está produciendo sucesos, éstos estarán recogidos bajo el directorio /var/log. Por ejemplo, aquí encontraremos un archivo llamado auth.log. También podemos encontrar subdirectorios que pueden contener los archivos de sucesos de algún subsistema particular como, por ejemplo, el directorio lightdm, que contiene varios archivos de sucesos relativos al gestor de sesiones LightDM.

1

Contenido del archivo auth.log en el servidor.

El formato de todos los archivos de sucesos es muy parecido, pero necesitamos conocerlo antes de poder analizar su contenido. En el caso de auth.log se estructura de la siguiente forma:

  • Fecha del suceso
  • Hora del suceso
  • Nombre del equipo donde se ha producido
  • Programa / servicio que lo ha originado
  • Opcionalmente, aparecerá el PID del proceso
  • Mensaje informativo que describe el suceso.

Por ejemplo, una línea del archivo auth.log podría ser como esta:

Jun  3 20:36:25 somebooks-lnxsrv sudo:  usuario : TTY=pts/2 ; PWD=/home/usuario ; USER=root ; COMMAND=/usr/bin/gedit /var/log/auth.log

Aquí vemos que el día 3 de Junio, a las 20:36, en el equipo somebooks-lnxsrv el programa sudo informa de que usuario ejecuta desde la terminal, y con privilegios de root, el comando /usr/bin/gedit /var/log/auth.log. Podríamos ser algo más precisos en la explicación, pero creo que estaríamos siendo menos didácticos.

Los archivos de sucesos acaban siendo demasiado extensos. Sin embargo, podemos utilizar comandos de Linux que nos ayuden a centrarnos en la información que nos interesa.

Por ejemplo, el comando tail -f /var/log/auth.log nos permitirá obtener sólo las 10 últimas líneas del archivo auth.log. y el comando cat /var/log/auth.log | grep "lightdm" nos permite ver sólo las líneas que contienen el texto lightdm.

Uso de Logcheck para consultar sucesos.

Ya hemos visto más arriba cómo podemos consultar e interpretar los sucesos anotados por el sistema. Sin embargo, existe una herramienta que nos facilita la realización de esas consultas. Me refiero a Logcheck.

Logcheck revisa los archivos de sucesos del sistema, cada cierto tiempo, ofreciendo al Administrador sólo aquellas incidencias que resulten importantes. El resultado es más fácil de leer que los archivos originales, consolida el contenido de los diferentes archivos en una sola salida y descarta los sucesos que carezcan de interés

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

1

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.

2

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.

3

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.

4

Cuando acabemos, pulsamos la tecla Intro.

5

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:

    Con algunas direcciones de correo que incluyen signos (como, por ejemplo, somebooks_es@gmail.com), Logcheck puede no funcionar correctamente.
  • 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.

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

6

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

7

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.

8

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.

1

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

Aprenderemos más sobre la programación de tareas en otro apartado de este mismo capítulo.

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

2

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.

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

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.

Consultar sucesos en la interfaz gráfica.

Ubuntu 14.04 LTS incorpora una herramienta gráfica que nos permite consultar los sucesos del sistema de una forma bastante intuitiva. Para ejecutarla, desplegamos el Dash y comenzamos a escribir parte de su nombre.

Recuerda que puedes desplegar el Dash haciendo clic en el botón superior del Launcher o pulsando la tecla Súper (la que suele tener el icono de Windows).

1

Cuando aparezca la herramienta, hacemos clic sobre ella.

Al poco, veremos una ventana dividida verticalmente en dos áreas diferentes. La de la izquierda muestra los archivos de sucesos que podemos analizar con el visor. A la derecha se muestran los sucesos relativos al archivo que tengamos seleccionado en el lado izquierdo.

Las entradas más modernas se muestran al final de la lista.

2

Haciendo clic sobre un archivo diferente, cambian los sucesos mostrados.

Añadir más archivos de sucesos

Cuando queramos consultar algún archivo de sucesos que no se encuentre en la lista de la izquierda, sólo tendremos que añadirlo. Para conseguirlo, hacemos clic sobre el botón que hay en la parte superior derecha de la ventana (Menú de sucesos).

1

En el menú que aparece, elegimos la opción Abrir

Aparecerá una ventana que nos permite localizar el archivo que estamos buscando.

2

Cuando lo encontremos, hacemos doble clic sobre él.

Al volver a la ventana Sucesos del sistema comprobaremos que el nuevo archivo ya se encuentra en la lista de la izquierda.

Aunque acabemos añadiendo muchos archivos, será muy fácil localizarlos, porque se muestran ordenados alfabéticamente. Lo único que debes recordar es que Linux diferencia entre mayúsculas y minúsculas, y que las primeras tienen un valor ASCII menor, por lo que irán antes.

3

Al seleccionar el nuevo archivo a la izquierda, se muestran sus sucesos a la derecha.

Filtrar el contenido de los archivos de sucesos

Como habrás comprobado, la cantidad de información que se acumula en los archivos de sucesos es considerable y, en ocasiones, resulta complicado localizar un suceso determinado.

Para ayudarnos, Sucesos del sistema incorpora una herramienta de filtrado.

1

Podemos abrirla desde la opción Filtros, eligiendo Gestionar filtros.

Aparecerá la ventana Filtros, donde podremos crear nuevos filtros (botón Añadir), modificar sus características (botón Propiedades) o eliminarlos (botón Quitar). Lógicamente, la primera vez sólo tendremos disponible el primero.

2

Hacemos clic sobre el botón Añadir.

Se mostrará la ventana Añadir filtro nuevo donde debemos definir sus características:

  • Un nombre, que sea descriptivo, para identificarlo con facilidad cuando hayamos creado muchos filtros.
  • Una expresión regular, que defina lo que estamos buscando. En nuestro caso, para simplificar, escribiremos sólo una palabra. Así, Sucesos del sistema buscará aquellos sucesos que contengan la palabra elegida.
  • Indicar si queremos resaltar u ocultar los sucesos que cumplan la condición. En nuestro caso los resaltaremos.
  • En caso de que estemos resaltando sucesos, podremos fijar también un color de primer plano y un color de fondo. Al pulsar el botón de color, se muestra un panel con diferentes colores donde bastará con elegir uno de ellos.

3

Finalmente, cuando hayamos concluido, haremos clic sobre el botón Aplicar.

De vuelta en la ventana Sucesos del sistema, ahora encontraremos un nuevo elemento en la opción Filtros con el nombre que le hayamos puesto al filtro en el paso anterior.

4

Al elegirlo, se destacarán, con los colores indicados, aquellos sucesos que cumplan la condición del filtro.

5

También disponemos de la opción Sólo mostrar coincidencias.

6

Si la elegimos, se ocultarán inmediatamente todos los sucesos que no cumplan con las condiciones impuestas en el filtro.