Búsqueda de sitios web

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, 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 demonio Rsyslog en CentOS se puede configurar para ejecutarse como un servidor para recopilar mensajes de registro de múltiples 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 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 ejecutarse como cliente y como servidor al mismo tiempo.

En este tutorial describiremos cómo configurar un demonio Rsyslog CentOS/RHEL 7 para enviar mensajes de registro a un servidor Rsyslog remoto. 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 total.

Requisitos

  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 exigir 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 siguiente línea al final del archivo como se ilustra en el siguiente extracto.

*. *  @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 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 algunos caracteres especiales, como = o !, que pueden anteponerse a los niveles de prioridad para indicar “solo esta prioridad. ” para el signo igual y “no tiene esta prioridad o es superior a esta”.

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

  • kern.info=registros del kernel con prioridad de información y superior.
  • kern.=info=solo mensajes del kernel con prioridad de información.
  • kern.info;kern.!err=solo mensajes del kernel con información, aviso y prioridades de advertencia.
  • kern.debug;kern.!=warning=todas las prioridades del kernel excepto la advertencia.
  • kern.*=todos los mensajes de prioridades del kernel.
  • kern.none=no registra ningún mensaje de instalación del kernel relacionado, 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: enviar 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 pipe to logger, que los enviará a un servidor syslog distante, marcándolos como provenientes del local1 instalación.

8. Si también desea dirigir los mensajes de registro de errores de Apache a un servidor syslog remoto, agregue una nueva regla como la presentada en el ejemplo anterior, pero asegúrese de reemplazarla el nombre del archivo de registro httpd y el nivel de gravedad del archivo de registro para que coincida con la prioridad del 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, deberá 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, utilice 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 Apache HTTP 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.