Rsyslog es un programa de registro de código abierto que utiliza la red IP para enviar todos los archivos de registro a un servidor de registro centralizado. Es una versión mejorada de Syslog en Linux. Permite a los administradores del sistema monitorear todos los servidores desde una sola ubicación.
Rsyslog funciona en un modelo cliente/servidor que recibe registros de clientes remotos en el puerto 514 o cualquier puerto personalizado configurado sobre el protocolo TCP/UDP. También admite bases de datos ( MySQL, PostgreSQL ) que se utilizan para almacenar registros.
Aquí en LinuxAPT, como parte de nuestros Servicios de administración de servidores, ayudamos regularmente a nuestros Clientes a realizar consultas de configuración de Rsyslog relacionadas en el sistema Linux.
En este contexto, veremos cómo instalar y configurar Rsyslog en Debian 10/11.
Pasos para instalar y configurar el servidor Rsyslog en el sistema Debian Linux
1. Instale el servidor Rsyslog
Para comenzar, instale el paquete Rsyslog del Repositorio Debian en su máquina servidor. Ejecute el siguiente comando:
$ sudo apt-get install rsyslog -y
Una vez completada la instalación, verifique que Rsyslog se esté ejecutando correctamente como se muestra a continuación:
$ sudo systemctl status rsyslog
Si todo está bien, entonces el servicio Rsyslog ahora está funcionando en su máquina servidor.
2. Configurar el servidor Rsyslog
Ahora que se está ejecutando, configure Rsyslog para que se ejecute como un servidor en su sistema Debian. Abra el archivo de configuración que es /etc/rsyslog.conf:
$ sudo vim /etc/rsyslog.conf
Localice las líneas a continuación y elimínelas para la recepción de registros UDP y TCP de clientes remotos:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
A continuación, debemos especificar la plantilla que utilizará el demonio Rsyslog para almacenar los registros entrantes de los sistemas cliente. Agregue las siguientes líneas al final de su archivo de configuración:
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
Luego, reinicie rsyslog para que los cambios surtan efecto:
$ sudo systemctl restart rsyslog
Rsyslog escucha en el puerto 514. Puede modificar el puerto predeterminado en el archivo de configuración. Para verificar que el demonio rsyslog está escuchando en el puerto 514, ejecute el siguiente comando ss:
$ sudo ss -tunlp | grep 514
3. Configure el cortafuegos para rsyslog
El demonio rsyslog ahora está configurado en el servidor. Si está detrás del firewall UFW, permita el puerto 514 para que el servidor pueda recibir mensajes de registro de los clientes. Ejecute los comandos:
$ sudo ufw allow 514/tcp
$ sudo ufw allow 514/udp
Reinicie el firewall para que se apliquen las nuevas reglas. Ejecute el comando:
$ sudo ufw reload
4. Configurar el cliente Rsyslog
A continuación, configure el cliente Rsyslog para enviar mensajes de registro al servidor Rsyslog. Asegúrese de que RSyslog esté correctamente instalado en su máquina cliente.
Primero, abra el archivo de configuración:
$ sudo nano /etc/rsyslog.conf
Copie y pegue las siguientes líneas al final del archivo:
#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514
#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514
La configuración anterior indica al cliente que envíe archivos de registro al servidor rsyslog utilizando los protocolos TCP y UDP. Reemplace rsyslog-server-ip con la dirección IP de su servidor.
Si el servidor remoto deja de funcionar y necesita mantener sus registros, puede configurar el búfer de la cola del disco agregando las siguientes líneas al archivo de configuración del cliente:
##Set disk queue when rsyslog server will be down:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Guarde y cierre el archivo. Vuelva a cargar el servicio rsyslog para que se apliquen los cambios:
$ sudo systemctl restart rsyslog
5. Ver archivos de registro de clientes
Los archivos de registro de Rsyslog se guardan en la carpeta /var/log/ de su servidor. Para ver los registros del cliente, use el siguiente comando ls:
$ ls /var/log/
De forma predeterminada, los archivos de registro del cliente se almacenan en una carpeta con el nombre del host del sistema cliente. En mi caso, el sistema cliente tiene el nombre de host Debian.
A continuación, ejecute el siguiente comando para ver los registros contenidos en el directorio del cliente:
$ sudo ls -l /var/log/debian/
También puede ver los registros en tiempo real en su terminal. Veamos los registros del usuario raíz. Ejecute el siguiente comando:
$ sudo tail -f /var/log/debian/sudo.log