Búsqueda de sitios web

Cómo administrar los registros del sistema (configurar, rotar e importar a la base de datos) en RHEL 7 - Parte 5


Para mantener seguros sus sistemas RHEL 7, necesita saber cómo monitorear todas las actividades que tienen lugar en dichos sistemas examinando los archivos de registro. Por lo tanto, podrá detectar cualquier actividad inusual o potencialmente maliciosa y solucionar problemas del sistema o tomar otra acción adecuada.

En RHEL 7, el demonio rsyslogd es responsable del registro del sistema y lee su configuración desde /etc/rsyslog.conf (este archivo especifica la ubicación predeterminada para todos los registros del sistema) y de archivos dentro de /etc/rsyslog.d, si los hay.

Configuración de rsyslogd

Una inspección rápida de rsyslog.conf será útil para comenzar. Este archivo está dividido en 3 secciones principales: Módulos (ya que rsyslog sigue un diseño modular), directivas Global (utilizadas para establecer propiedades globales del demonio rsyslogd) y Reglas. Como probablemente adivinarás, esta última sección indica qué se registra o muestra (también conocido como selector) y dónde, y será nuestro enfoque a lo largo de este artículo.

Una línea típica en rsyslog.conf es la siguiente:

En la imagen de arriba, podemos ver que un selector consta de uno o más pares Facility:Priority separados por punto y coma, donde Facility describe el tipo de mensaje (consulte la sección 4.1.1 en RFC 3164 para ver la lista completa de funciones disponibles para rsyslog) y Prioridad indica su gravedad, que puede ser una de las siguientes palabras que se explican por sí mismas:

  1. depurar
  2. información
  3. aviso
  4. advertencia
  5. errar
  6. crítico
  7. alerta
  8. emerger

Aunque no es una prioridad en sí misma, la palabra clave none significa que no hay ninguna prioridad para la instalación dada.

Nota: Una prioridad dada indica que todos los mensajes de dicha prioridad y superiores deben registrarse. Por lo tanto, la línea del ejemplo anterior indica al demonio rsyslogd que registre todos los mensajes con información de prioridad o superior (independientemente de la instalación), excepto aquellos que pertenecen a mail, authpriv y servicios cron (no se tendrán en cuenta los mensajes procedentes de estas instalaciones) a /var/log/messages.

También puede agrupar varias instalaciones utilizando el signo de dos puntos para aplicar la misma prioridad a todas ellas. Así, la línea:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Podría reescribirse como

*.info;mail,authpriv,cron.none                /var/log/messages

En otras palabras, las funciones mail, authpriv y cron se agrupan y la palabra clave none se aplica a la tres de ellos.

Crear un archivo de registro personalizado

Para registrar todos los mensajes del demonio en /var/log/tecmint.log, debemos agregar la siguiente línea en rsyslog.conf o en un archivo separado (más fácil de administrar). ) dentro de /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Reiniciemos el demonio (tenga en cuenta que el nombre del servicio no termina con una d):

systemctl restart rsyslog

Y verifique el contenido de nuestro registro personalizado antes y después de reiniciar dos demonios aleatorios:

Como ejercicio de autoestudio, le recomendaría que juegue con las funciones y prioridades y registre mensajes adicionales en archivos de registro existentes o cree otros nuevos como en el ejemplo anterior.

Rotar troncos usando Logrotate

Para evitar que los archivos de registro crezcan sin cesar, la utilidad logrotate se utiliza para rotar, comprimir, eliminar y, alternativamente, enviar registros por correo, facilitando así la administración de sistemas que generan grandes cantidades de archivos de registro.

Lectura sugerida: Cómo configurar y administrar la rotación de registros usando Logrotate en Linux

Logrotate se ejecuta diariamente como un trabajo cron (/etc/cron.daily/logrotate) y lee su configuración de /etc/logrotate .conf y de archivos ubicados en /etc/logrotate.d, si los hay.

Como en el caso de rsyslog, incluso cuando puede incluir configuraciones para servicios específicos en el archivo principal, crear archivos de configuración separados para cada uno le ayudará a organizar mejor sus configuraciones.

Echemos un vistazo a un logrotate.conf típico:

En el ejemplo anterior, logrotate realizará las siguientes acciones para /var/loh/wtmp: intentará rotar solo una vez al mes, pero solo si el archivo tiene al menos 1 MB de tamaño, luego cree un nuevo archivo de registro con permisos establecidos en 0664 y propiedad otorgada al usuario raíz y al grupo utmp. A continuación, mantenga solo un registro archivado, como lo especifica la directiva de rotación:

Consideremos ahora otro ejemplo que se encuentra en /etc/logrotate.d/httpd:

Puede leer más sobre la configuración de logrotate en sus páginas de manual (man logrotate y man logrotate.conf). Ambos archivos se proporcionan junto con este artículo en formato PDF para su comodidad de lectura.

Como ingeniero de sistemas, dependerá de usted decidir durante cuánto tiempo se almacenarán los registros y en qué formato, dependiendo de si tiene /var en una partición separada / volumen lógico. De lo contrario, realmente querrás considerar eliminar registros antiguos para ahorrar espacio de almacenamiento. Por otro lado, es posible que se vea obligado a mantener varios registros para futuras auditorías de seguridad de acuerdo con las políticas internas de su empresa o cliente.

Guardar registros en una base de datos

Por supuesto, examinar los registros (incluso con la ayuda de herramientas como grep y expresiones regulares) puede convertirse en una tarea bastante tediosa. Por esa razón, rsyslog nos permite exportarlos a una base de datos (los RDBMS compatibles con OTB incluyen MySQL, MariaDB, PostgreSQL y Oracle.

Esta sección del tutorial asume que ya ha instalado el servidor y el cliente MariaDB en el mismo cuadro de RHEL 7 donde se administran los registros:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Luego use la utilidad mysql_secure_installation para establecer la contraseña para el usuario root y otras consideraciones de seguridad:

Nota: Si no desea utilizar el usuario raíz de MariaDB para insertar mensajes de registro en la base de datos, puede configurar otra cuenta de usuario. para hacerlo. Explicar cómo hacerlo está fuera del alcance de este tutorial, pero se explica en detalle en la base de conocimientos de MariaDB. En este tutorial usaremos la cuenta raíz por simplicidad.

A continuación, descargue el script createDB.sql de GitHub e impórtelo a su servidor de base de datos:

mysql -u root -p < createDB.sql

Finalmente, agregue las siguientes líneas a /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Reinicie rsyslog y el servidor de la base de datos:

systemctl restart rsyslog 
systemctl restart mariadb

Consultar los registros usando la sintaxis SQL

Ahora realice algunas tareas que modificarán los registros (como detener e iniciar servicios, por ejemplo), luego inicie sesión en su servidor de base de datos y use comandos SQL estándar para mostrar y buscar en los registros:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Resumen

En este artículo explicamos cómo configurar el registro del sistema, cómo rotar los registros y cómo redirigir los mensajes a una base de datos para facilitar la búsqueda. Esperamos que estas habilidades le sean útiles mientras se prepara para el examen RHCE y también en sus responsabilidades diarias.

Como siempre, sus comentarios son más que bienvenidos. No dude en utilizar el siguiente formulario para comunicarse con nosotros.