Cómo configurar el servidor de registro central con Rsyslog en Linux

Cómo configurar el servidor de registro central con Rsyslog en Linux

Los registros. son un componente fundamental de cualquier software o sistema operativo. Los registros generalmente registran las acciones del usuario, los eventos del sistema, la actividad de la red y mucho más, según para qué están destinados. Uno de los sistemas de registro más utilizados en sistemas Linux es rsyslog.

Rsyslog. es un sistema de procesamiento de registros potente, seguro y de alto rendimiento que acepta datos de diferentes tipos de fuentes (sistemas/aplicaciones) y los genera en múltiples formatos.

Ha evolucionado de un demonio syslog. normal a un sistema de registro de nivel empresarial con todas las funciones . Está diseñado en un modelo cliente/servidor, por lo que puede configurarse como cliente y/o como servidor de registro central para otros servidores, dispositivos de red y aplicaciones remotas.

Entorno de prueba

Con el propósito de esta guía, usaremos los siguientes hosts:

  • Servidor. 192.168.241.140
  • Cliente. 172.31. 21.58

Cómo instalar y configurar el servidor Rsyslog

La mayoría de las distribuciones de Linux vienen con el paquete rsyslog. preinstalado. En caso de que no esté instalado, puede instalarlo usando su herramienta de administración de paquetes de Linux como se muestra.

$ sudo yum update && yum install rsyslog #CentOS 7 $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04 freestar.config .enabled_slots.push

Una vez instalado rsyslog. debe iniciar el servicio por ahora, habilitarlo para que se inicie automáticamente en boot y verifique su estado con el comando systemctl.

$ sudo systemctl start rsyslog $ sudo systemctl enable rsyslog $ sudo systemctl status rsyslog

El archivo de configuración principal de rsyslog se encuentra en /etc/rsyslog.conf. que carga módulos, define las directivas globales, contiene reglas para procesar mensajes de registro y también incluye todos los archivos de configuración en /etc/rsyslog.d/ para varias aplicaciones/servicios.

$ sudo vim/etc/rsyslog.conf

Por defecto, rsyslog. usa imjournal. y imusock. para importar mensajes de registro estructurados de systemd journal. y para aceptar mensajes de syslog de aplicaciones que se ejecutan en el sistema local a través de sockets Unix, respectivamente.

 Módulos Rsyslog para registro  Módulos Rsyslog para registro Módulos Rsyslog para registro

Para configurar rsyslog como un servidor de registro central/de red, debe configurar el protocolo ( UDP. o TCP. o ambos) lo utilizará para la recepción de syslog remota, así como el puerto en el que escucha.

Si desea utilizar una conexión UDP. que es más rápido pero no confiable, busque y descomente las líneas a continuación (reemplace 514. con el puerto en el que desea que escuche, esto debe coincidir con la dirección del puerto a la que los clientes envían mensajes, veremos esto más al configurar un cliente rsyslog).

$ ModLoad imudp $ UDPServerRun 514

Para usar la conexión TCP. (que es más lenta pero más confiable), busque y descomente las líneas siguientes.

$ ModLoad imtcp $ InputTCPServerRun 514

En este caso, queremos use conexiones UDP y TCP al mismo tiempo.

 Configurar el servidor de registro Rsyslog  Configurar el servidor de registro Rsyslog Configurar el servidor de registro Rsyslog

A continuación, debe definir el conjunto de reglas. para procesar registros remotos en el siguiente formato.

Facilidad.severity_level destino (donde almacenar el registro)

Donde:

  • Facilidad. es el tipo de mensaje que genera el proceso/aplicación, incluye autenticación, cron, demonio, kernel, local0..local7. El uso de * significa todas las instalaciones.
  • nivel_severidad. es el tipo de mensaje de registro: emerg-0, alerta-1, crit-2, err-3, warn-4, aviso-5, info-6, debug-7. El uso de * significa todos los niveles de gravedad y ninguno implica ningún nivel de gravedad.
  • destino. es un archivo local o un servidor rsyslog remoto (definido en la forma IP: puerto).

Usaremos el siguiente conjunto de reglas. para recopilar registros de hosts remotos, usando la plantilla RemoteLogs. Tenga en cuenta que estas reglas deben ir antes que las reglas para procesar mensajes locales, como se muestra en la captura de pantalla.

$ template RemoteLogs, “/var/log/% HOSTNAME%/% PROGRAMNAME% .log” *. *? RemoteLogs & ~  Definir conjunto de reglas para Rsyslog-Logging  Definir conjunto de reglas para Rsyslog-Logging Definir conjunto de reglas para Rsyslog-Logging

Mirando lo anterior conjunto de reglas. la primera regla es “$ template RemoteLogs”,/var/log/% HOSTNAME%/% PROGRAMNAME% .log ””.

La directiva $ template. le dice al demonio rsyslog que recopile y escriba todos los los mensajes remotos recibidos a distintos registros en /var/log. según el nombre de host. (nombre de la máquina del cliente) y la instalación del cliente remoto (programa/aplicación) que generó los mensajes como definido por la configuración presente en la plantilla RemoteLogs.

La segunda línea “*. *? RemoteLogs”. significa grabar mensajes de todas las instalaciones con cualquier gravedad niveles usando la configuración de la plantilla RemoteLogs.

La línea final “& ~”. indica a rsyslog que deje de procesar los mensajes una vez que se escriben en un archivo. Si no incluye “& ~”. los mensajes se escribirán en los archivos locales.

Hay muchas otras plantillas que puede utilizar, para obtener más información, consulte la página de manual de configuración de rsyslog ( man rsyslog.conf. o consulte la documentación en línea de Rsyslog.

Eso es todo con la configuración del servidor rsyslog. Guarde y cierre el archivo de configuración. Para aplicar los cambios recientes, reinicie el demonio rsyslog con el siguiente comando.

$ sudo systemctl restart rsyslog

Ahora verifique los sockets de red rsyslog. Utilice el comando ss. (o netstat con los mismos indicadores) y canalice la salida a grep para filtrar las conexiones rsyslogd.

$ sudo ss-tulnp | grep “rsyslog”  Verificar el estado de la red Rsyslog  Verificar el estado de la red Rsyslog Verificar el estado de la red Rsyslog

A continuación, en CentOS 7. si tiene SELinux. habilitado, ejecute los siguientes comandos para permitir el tráfico de rsyslog según el tipo de conexión de red.

$ sudo semanage-a-t syslogd_port_t-p udp 514 $ sudo semanage-a-t syslogd_port_t-p tcp 514

Si el sistema tiene un firewall habilitado, debe abrir el puerto 514. para permitir ambas conexiones UDP/TCP. al servidor rsyslog, mediante la ejecución.

————-En CentOS————- $ sudo firewall-cmd–permanent–add-port = 514/udp $ sudo firewall-cmd–permanent–add-port = 514/tcp $ sudo firewall-cmd–reload ————-En Ubuntu————- $ sudo ufw allow 514/udp $ sudo ufw allow 514/tcp $ sudo ufw reload

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

Ahora en el sistema cliente, verifique si el servicio rsyslog se está ejecutando o no con el siguiente comando.

$ sudo systemctl status rsyslog

Si no está instalado, instálelo e inicie el servicio como se muestra antes.

$ sudo yum update && yum install rsyslog #CentOS 7 $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04 $ sudo systemctl start rsyslog $ sudo systemctl enable rsyslog $ sudo systemctl status rsyslog

Una vez el servicio rsyslog está en funcionamiento, abra el archivo de configuración principal donde realizará los cambios a la configuración predeterminada.

$ sudo vim/etc/rsyslog.conf

Para forzar al demonio rsyslog a actuar como un cliente de registro y reenviar todos los mensajes de registro generados localmente al servidor rsyslog remoto, agregue esta regla de reenvío al final del archivo como se muestra en la siguiente captura de pantalla.

*. * @@ 192.168.100.10: 514  Configurar el cliente Rsyslog  Configurar el cliente Rsyslog Configurar el cliente Rsyslog

El abov La regla enviará mensajes desde todas las instalaciones y en todos los niveles de gravedad. Para enviar mensajes desde una instalación específica, por ejemplo, auth. use la siguiente regla.

auth. * @@ 192.168.100.10: 514

Guarde los cambios y cierre el archivo de configuración. Para aplicar la configuración anterior, reinicie el demonio rsyslog.

$ sudo systemctl restart rsyslog

Cómo monitorear el registro remoto en el servidor Rsyslog

El paso final es verificar si el rsyslog es realmente recibir y registrar mensajes del cliente, en /var/log. en la forma nombre de host/nombre de programa.log.

Ejecute un comando ls para long listado del directorio de registros principal y verifique si hay un directorio llamado ip-172.31.21.58. (o el nombre de host de su máquina cliente).

$ ls-l/var/log/ Check Rsyslog Client Logging  Comprobar registro del cliente Rsyslog Verifique el registro del cliente Rsyslog

Si el directorio existe, verifique los archivos de registro dentro de él, ejecutando.