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


La gestión de registros es uno de los componentes más críticos de 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 útiles en caso de solucionar problemas del sistema Linux, supervisar el sistema y revisar la solidez y los problemas de seguridad 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 demonio Rsyslog en CentOS se puede configurar para que se ejecute como un servidor a fin de recopilar 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 se puede configurar e iniciar en modo cliente. Esta configuración indica al demonio rsyslog que reenvíe los mensajes de registro a un servidor Rsyslog remoto 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 demonio Rsyslog de CentOS/RHEL 7 para enviar mensajes de registro a un servidor Rsyslog remoto. Esta configuración garantiza que se pueda conservar el espacio en 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 total.

  1. Procedimiento de instalación de CentOS 7.3
  2. Procedimiento de instalación de RHEL 7.3
  3. Configurar un servidor Rsyslog en CentOS/RHEL 7

Paso 1: verificar la instalación de Rsyslog

1. De forma predeterminada, el demonio Rsyslog ya está instalado y ejecutándose en un sistema CentOS 7. Para verificar si el servicio rsyslog está presente en el sistema, ejecute 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 hacer que el demonio Rsyslog instalado en un sistema CentOS 7 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 abra el archivo de configuración principal para editarlo.

# 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 indica al demonio Rsyslog que envíe todos los mensajes de registro, independientemente de la instalación o la gravedad, al host con la IP 192.168.10.254 a través del puerto 514/UDP.

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

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

El rsyslog de Linux también permite que tenga algunos caracteres especiales, como u003d o ! , que se pueden anteponer a los niveles de prioridad para indicar "solo esta prioridad" para el signo igual y "no esta prioridad o más alta que esta ”.

Algunas muestras de calificadores de nivel de prioridad de Rsyslog en CentOS 7:

  • kern.info u003d registros del kernel con prioridad de información y superior.
  • kern. u003d info u003d solo mensajes del kernel con prioridad de información.
  • kern.info; kern.! err u003d solo mensajes del kernel con información, avisos y prioridades de advertencia.
  • kern.debug; kern.! u003d warning u003d todas las prioridades del kernel excepto la advertencia.
  • kern. * u003d todos los mensajes de prioridades del kernel.
  • kern.none u003d no registre ningún mensaje relacionado con la instalación del kernel, independientemente de la prioridad.

Por ejemplo, suponiendo que desea enviar solo 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 siguiente línea al archivo de configuración rsyslog:

mail.* @192.168.10.254:514 

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

# systemctl restart rsyslog.service

6. Si por alguna razón el demonio 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 registros de Apache y Nginx a un servidor de registro remoto

7. El servidor HTTP Apache se puede configurar para enviar mensajes de registros a un servidor 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 de configuración principal de Apache, agregue la siguiente línea.

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

La línea obligará 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 utilidad de tubería al registrador, que los enviará a un servidor syslog distante, marcándolos como provenientes del local1 instalaciones.

8. Si también desea dirigir los mensajes de registro de error de Apache a un servidor syslog remoto, agregue una nueva regla como la que se presenta 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 por coincidir 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 demonio 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 syslog remoto, agregando 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 Rsyslog remoto, 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, además, ha indicado al servidor HTTP Apache o Nginx que reenvíe sus mensajes de registro a un servidor syslog remoto.

En caso de que su sistema falle, debería poder investigar el problema inspeccionando el contenido de los archivos de registro que están almacenados en el servidor syslog remoto.