Cómo configurar el cliente Rsyslog para enviar registros al servidor Rsyslog en CentOS 7


La administración de registros es uno de los componentes más críticos en una infraestructura de red. Los mensajes de registro son generados constantemente por numerosos software del sistema, como utilidades, aplicaciones, demonios, servicios relacionados con la red, kernel, dispositivos físicos, etc.

Los archivos de registro resultan ser útiles en caso de solucionar problemas del sistema Linux, monitorear el sistema y revisar la seguridad y los problemas del sistema.

Rsyslog es un programa de registro de código abierto, que es el mecanismo de registro más popular en una gran cantidad de distribuciones de Linux. También es el servicio de registro predeterminado en CentOS 7 o RHEL 7 .

El daemon Rsyslog en CentOS se puede configurar para que se ejecute como un servidor para recoger los mensajes de registro de varios dispositivos de red. Estos dispositivos actúan como clientes y están configurados para transmitir sus registros a un servidor rsyslog.

Sin embargo, el servicio Rsyslog también puede configurarse e iniciarse en modo cliente. Esta configuración le indica al demonio rsyslog que reenvíe los mensajes de registro a un servidor remoto Rsyslog utilizando los protocolos de transporte TCP o UDP. El servicio Rsyslog también se puede configurar para que se ejecute como cliente y como servidor al mismo tiempo.

En este tutorial describiremos cómo configurar un daemon Rsyslog CentOS/RHEL 7 para enviar mensajes de registro a un servidor remoto Rsyslog. Esta configuración garantiza que se pueda conservar el espacio en el disco de su máquina para almacenar otros datos.

El lugar donde casi todos los archivos de registro se escriben de forma predeterminada en CentOS es la ruta del sistema /var . También es recomendable crear siempre una partición separada para el directorio /var , que puede crecer dinámicamente, para no agotar la partición /(root) .

Un cliente Rsyslog siempre envía los mensajes de registro en texto sin formato, si no se especifica lo contrario. No debe configurar un cliente Rsyslog para transmitir mensajes de registro a través de Internet o redes que no están bajo su control completo.

  1. CentOS 7.3 Installation Procedure
  2. RHEL 7.3 Installation Procedure
  3. Configure a Rsyslog Server in CentOS/RHEL 7

Paso 1: Verifique la instalación de Rsyslog

1. De forma predeterminada, el daemon Rsyslog ya está instalado y ejecutándose en un sistema CentOS 7. Para verificar si el servicio rsyslog está presente en el sistema, emita los siguientes comandos.

# rpm -q | grep rsyslog
# rsyslogd -v

2. Si el paquete Rsyslog no está instalado en CentOS, ejecute el siguiente comando para instalar el servicio.

# yum install rsyslog

Paso 2: Configurar el servicio Rsyslog como cliente

3. Para aplicar el demonio Rsyslog instalado en un sistema CentOS 7 para que actúe como un cliente de registro y enrute todos los mensajes de registro generados localmente a un servidor Rsyslog remoto, modifique El archivo de configuración rsyslog de la siguiente manera:

Primero abre el archivo de configuración principal para editar.

# vi /etc/rsyslog.conf

Luego, agregue la línea de abajo al final del archivo como se ilustra en el extracto de abajo.

*. *  @192.168.10.254:514

En la línea anterior, asegúrese de reemplazar la dirección IP del FQDN del servidor rsyslog remoto en consecuencia. La línea anterior le indica al demonio Rsyslog que envíe todos los mensajes de registro, independientemente de la instalación o la gravedad, al host con el puerto IP 192.168.10.254 a través de 514/UDP .

4. Si el servidor de registro remoto está configurado para escuchar solo en las conexiones TCP o si desea utilizar un protocolo de red de transporte confiable, como TCP, agregue otro carácter @ al frente del host remoto como se muestra en el siguiente ejemplo:

*. *  @@logs.domain.lan:514

El rsyslog de Linux también permite tener algunos caracteres especiales, como = o ! , que pueden ser prefijados a los niveles de prioridad para indicar “ solo esta prioridad "Para el signo igual y" no es esta prioridad o superior a esta ".

Algunos ejemplos de calificadores de nivel de prioridad Rsyslog en CentOS 7:

  • kern.info = kernel logs with info priority and higher.
  • kern.=info = only kernel messages with info priority.
  • kern.info;kern.!err = only kernel messages with info, notice, and warning priorities.
  • kern.debug;kern.!=warning = all kernel priorities except warning.
  • kern.* = all kernel priorities messages.
  • kern.none = don’t log any related kernel facility messages regardless of the priority.

Por ejemplo, suponiendo que desea enviar solo los mensajes de una instalación específica a un servidor de registro remoto, como todos los mensajes de correo relacionados, independientemente del nivel de prioridad, agregue la línea a continuación al archivo de configuración rsyslog:

mail.* @192.168.10.254:514 

5. Finalmente, para aplicar la nueva configuración, el servicio Rsyslog debe reiniciarse para que el demonio recoja los cambios, ejecutando el siguiente comando:

# systemctl restart rsyslog.service

6. Si, por algún motivo, el daemon Rsyslog no está habilitado durante el tiempo de arranque, ejecute el siguiente comando para habilitar el servicio en todo el sistema:

# systemctl enable rsyslog.service

Paso 3: envíe los registros de Apache y Nginx a un servidor de registro remoto

7. El servidor HTTP Apache puede configurarse para enviar mensajes de registro a un servidor de syslog remoto agregando la siguiente línea a su archivo de configuración principal, como se ilustra en el siguiente ejemplo.

# vi /etc/httpd/conf/httpd.conf

En el archivo principal de Apache, agregue la línea de abajo.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

La línea forzará al demonio HTTP a escribir los mensajes de registro internamente en el archivo de registro del sistema de archivos, pero también procesará los mensajes a través de una tubería a la utilidad del registrador, que los enviará a un servidor de syslog distante, marcándolos como provenientes del local1 instalaciones.

8. Si también desea dirigir los mensajes de registro de error Apache a un servidor de syslog remoto, agregue una nueva regla como la presentada en el ejemplo anterior, pero asegúrese de reemplazar el nombre del archivo de registro httpd y el nivel de gravedad del archivo de registro para que coincida con la prioridad de error, como se muestra en el siguiente ejemplo:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Una vez que haya agregado las líneas anteriores, debe reiniciar el daemon de Apache para aplicar los cambios, emitiendo el siguiente comando:

# systemctl restart httpd.service                 

10. A partir de la versión 1.7.1 , el servidor web Nginx tiene capacidades integradas para registrar directamente sus mensajes en un servidor de syslog remoto, al agregar las siguientes líneas de código a un archivo de configuración nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Para un servidor IPv6 , use el siguiente formato de sintaxis para incluir la dirección IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. En el servidor remoto Rsyslog, debe realizar el siguiente cambio en el archivo de configuración rsyslog para recibir los registros enviados por el servidor web Apache.

local1.* @Apache_IP_address:514

¡Eso es todo! Ha configurado correctamente el demonio Rsyslog para que se ejecute en modo cliente y, también, le ha indicado a Apache HTTP servidor o Nginx que reenvíe sus mensajes de registro a un servidor de syslog remoto.

En caso de que el sistema se bloquee, debería poder investigar el problema inspeccionando el contenido de los archivos de registro que se almacenan en el servidor de syslog remoto.