Configurar un servidor de registro centralizado con Rsyslog en CentOS/RHEL 8


Para que los administradores del sistema reconozcan o analicen problemas en un servidor CentOS 8 o RHEL 8, es importante conocer y ver los eventos que ocurrieron en el servidor en un período de tiempo particular a partir de los archivos de registro que se encuentran en /var/log el directorio en el sistema.

El sistema Syslog (Protocolo de registro del sistema) en el servidor puede actuar como un punto central de monitoreo de registros en una red donde todos los servidores, dispositivos de red, conmutadores, enrutadores y servicios internos que crean registros, ya sean vinculados al problema interno particular o simplemente mensajes informativos. puede enviar sus registros.

En un servidor CentOS/RHEL 8, el demonio Rsyslog es el servidor de registro más importante que viene preinstalado de manera predeterminada, seguido por el demonio Systemd Journal (journald).

Rsyslog es una utilidad de código abierto, desarrollada como un servicio de arquitectura cliente/servidor y puede lograr ambos roles de forma independiente. Puede ejecutarse como servidor y recopilar todos los registros transmitidos por otros dispositivos a través de la red o puede ejecutarse como cliente enviando todos los eventos internos del sistema registrados a un servidor Syslog remoto.

  1. Instalación de "CentOS 8.0" con capturas de pantalla
  2. Instalación de RHEL 8 con capturas de pantalla

Para configurar un servidor de registro centralizado en un servidor CentOS/RHEL 8, debe verificar y confirmar que la partición /var tiene suficiente espacio (unos pocos GB como mínimo) para almacenar todos los archivos de registro registrados en el sistema que envían por otros dispositivos en la red. Le recomiendo que tenga una unidad separada (LVM o RAID) para montar el directorio /var/log/.

Cómo configurar el servidor Rsyslog en CentOS/RHEL 8

1. Como dije, el servicio Rsyslog se instala y se ejecuta automáticamente en el servidor CentOS/RHEL 8. Para verificar que el demonio se esté ejecutando en el sistema, ejecute el siguiente comando.

# systemctl status rsyslog.service

Si el servicio no se está ejecutando de forma predeterminada, ejecute el siguiente comando para iniciar el demonio rsyslog.

# systemctl start rsyslog.service

2. Si la utilidad Rsyslog no está instalada de forma predeterminada en el sistema que planea usar como servidor de registro centralizado, ejecute el siguiente comando dnf para instalar el paquete rsyslog e iniciar el demonio.

# dnf install rsyslog
# systemctl start rsyslog.service

3. Una vez instalada la utilidad Rsyslog, ahora puede configurar rsyslog como un servidor de registro centralizado abriendo el archivo de configuración principal /etc/rsyslog.conf, para recibir mensajes de registro para clientes externos.

# vi /etc/rsyslog.conf

En el archivo de configuración /etc/rsyslog.conf, busque y descomente las siguientes líneas para otorgar la recepción de transporte UDP al servidor Rsyslog a través del puerto 514. Rsyslog utiliza el protocolo UDP estándar para la transmisión de registros.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. El protocolo UDP no tiene la sobrecarga de TCP y hace que la transmisión de datos sea más rápida que el protocolo TCP. Por otro lado, el protocolo UDP no garantiza la confiabilidad de los datos transmitidos.

Sin embargo, si desea utilizar el protocolo TCP para la recepción de registros, debe buscar y descomentar las siguientes líneas en el archivo de configuración /etc/rsyslog.conf para configurar el demonio Rsyslog para enlazar y escuchar un socket TCP en el puerto 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Ahora cree una nueva plantilla para recibir mensajes remotos, ya que esta plantilla guiará al servidor Rsyslog local, donde guardar los mensajes recibidos enviados por los clientes de la red Syslog.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

La directiva $template RemoteLogs guía al demonio Rsyslog a recopilar y escribir todos los mensajes de registro transmitidos en archivos distintos, según el nombre del cliente y la aplicación del cliente remoto que creó los mensajes según las propiedades descritas agregadas en el configuración de la plantilla: % HOSTNAME% y% PROGRAMNAME% .

Todos los archivos de registro recibidos se escribirán en el sistema de archivos local en un archivo asignado con el nombre del nombre de host de la máquina cliente y se mantendrán en el directorio/var/log /.

La regla de redireccionamiento & ~ indica al servidor Rsyslog local que deje de procesar el mensaje de registro recibido y elimine los mensajes (no los escriba en archivos de registro internos).

RemoteLogs es un nombre arbitrario dado a esta directiva de plantilla. Puede utilizar el nombre que desee que mejor se adapte a su plantilla.

Para configurar plantillas de Rsyslog más complejas, lea el manual del archivo de configuración de Rsyslog ejecutando el comando man rsyslog.conf o consulte la documentación en línea de Rsyslog.

# man rsyslog.conf

6. Después de realizar los cambios de configuración anteriores, puede reiniciar el demonio Rsyslog para aplicar los cambios recientes ejecutando el siguiente comando.

# service rsyslog restart

7. Una vez que reinició el servidor Rsyslog, ahora debería actuar como un servidor de registro centralizado y registrar los mensajes de los clientes Syslog. Para confirmar los sockets de red Rsyslog, ejecute la utilidad grep para filtrar la cadena rsyslog.

# netstat -tulpn | grep rsyslog 

Si el comando netstat no está instalado en CentOS 8, puede instalarlo usando el siguiente comando.

# dnf whatprovides netstat
# dnf install net-tools

8. Si tiene SELinux activo en CentOS/RHEL 8, ejecute el siguiente comando para permitir el tráfico rsyslog según el tipo de socket de red.

# semanage port -a -t syslogd_port_t -p udp 514
# semanage port -a -t syslogd_port_t -p tcp 514

Si el comando semanage no se instala en CentOS 8, puede instalarlo usando el siguiente comando.

# dnf whatprovides semanage
# dnf install policycoreutils-python-utils

9. Si tiene un firewall activo en el sistema, ejecute el siguiente comando para agregar las reglas necesarias para permitir el tráfico rsyslog en los puertos de Firewalld.

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd --reload

También puede limitar las conexiones entrantes en el puerto 514 de los rangos de IP incluidos en la lista blanca, como se muestra.

# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
# firewall-cmd --reload

¡Eso es todo! Rsyslog ahora está configurado como un servidor de registros centralizados y puede recopilar registros de clientes remotos. En el próximo artículo, veremos cómo configurar el cliente Rsyslog en el servidor CentOS/RHEL 8.