Table of Contents
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
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
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
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
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
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/
Verifique el registro del cliente Rsyslog
Si el directorio existe, verifique los archivos de registro dentro de él, ejecutando.