Configuración de Rsyslog.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción.

Conozca los conceptos básicos del sistema de registro centralizado.

Acerca de syslog.

Syslog es un estándar utilizado para la captura, el procesamiento y el transporte de mensajes de registro del sistema —es decir las bitácoras del sistema. Es tanto un protocolo de red como a la aplicación o biblioteca compartida que sirve para procesar y enviar los mensajes de registro del sistema.

Los mensajes se etiquetan con un código de identificación de entre los siguientes: auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp y local0 hasta local7. La etiqueta también incluye el tipo de programa que generó los mensajes, indicando también el nivel de severidad de entre los siguientes: Emergency, Alert, Critical, Error, Warning, Notice, Info y Debug.

¿Qué es Rsyslog?

Rsyslog es un eficiente y rápido sistema de procesamiento de registros de sistema. Ofrece un diseño modular de alto desempeño y niveles de seguridad apropiados. A diferencia de sus predecesores —sysklog y syslog— permite ingreso de datos desde diversas fuentes, transformación de datos y salida de resultados hacia varios destinos. Es lo suficientemente versátil y robusto para ser utilizado en entornos empresariales y tan ligero y sencillo que permite utilizarlo también en sistemas pequeños. Permite almacenar las bitácoras en archivos de texto simple o bases de datos MySQL/MariaDB y PostgreSQL, utilizar otros destinos en caso de falla, transporte de syslog a través de TCP, control detallado de formatos, etiquetas de tiempo exactas, operaciones en cola de procesamiento y capacidades de filtrado en cualquier parte de los mensajes.

URL: http://www.rsyslog.com/

Equipamiento lógico necesario.

El paquete rsyslog es un componente estándar en las distribuciones de Linux. En sistemas basados en ALDOS, viene instalado y activado por defecto. Sin embargo, en instalaciones mínimas —sin entorno gráfico— de Red Hat™ Enterprise Linux, AlmaLinux y Rocky Linux, donde el registro del sistema se gestiona principalmente con journalctl, puede que no esté presente. En tal caso, instálelo ejecutando:

dnf -y install rsyslog

Activar e iniciar servicio.

En sistemas con SystemD —Red Hat™ Enterprise Linux, AlmaLinux, Rocky Linux— se utilizan los mandatos systemctl. En sistemas con SysVinit —ALDOS— se utilizan los mandatos service y chkconfig. A continuación se detallan los procedimientos para cada familia.

Sistemas con systemd (Red Hat™ Enterprise Linux, AlmaLinux, Rocky Linux).

Si acaso fue desactivado el servicio, ejecute lo siguiente para volver a activarlo:

systemctl enable rsyslog

Ejecute lo siguiente para iniciar el servicio por primera vez o si éste fue detenido previamente:

systemctl start rsyslog

Ejecute lo siguiente para reiniciar el servicio y aplicar cambios a la configuración, pero interrumpiendo todas las conexiones establecidas en ese momento:

systemctl restart rsyslog

Ejecute lo siguiente para cargar los cambios en la configuración, sin interrumpir el servicio y manteniendo activas todas las conexiones establecidas:

systemctl reload rsyslog

Ejecute lo siguiente para detener el servicio:

systemctl stop rsyslog

Sistemas con SysVinit (ALDOS).

Si acaso fue desactivado el servicio, ejecute lo siguiente para volver a activarlo:

chkconfig rsyslog on

Ejecute lo siguiente para iniciar el servicio por primera vez o si éste fue detenido previamente:

service rsyslog start

Ejecute lo siguiente para reiniciar el servicio y aplicar cambios a la configuración, pero interrumpiendo todas las conexiones establecidas en ese momento:

service rsyslog restart

Ejecute lo siguiente para cargar los cambios en la configuración, sin interrumpir el servicio y manteniendo activas todas las conexiones establecidas:

service rsyslog reload

Ejecute lo siguiente para detener el servicio:

service rsyslog stop

Modificaciones necesarias en el muro cortafuegos.

Sólo es necesario abrir el puerto 514 (syslog) por TCP y UDP si se va a permitir a anfitriones remotos conectarse para almacenar sus registros en el servidor.

FirewallD (Recomendado en distribuciones modernas).

Ejecute lo siguiente:

firewall-cmd --zone=public --add-port=514/tcp --add-port=514/udp
firewall-cmd --permanent --zone=public --add-port=514/tcp --add-port=514/udp

SELinux y rsyslog en sistemas basados en RHEL.

El siguiente paso se puede omitir en Red Hat™ Enterprise Linux 7 y versiones superiores (incluyendo AlmaLinux y Rocky Linux). De modo predeterminado, SELinux viene activo en modo obligatorio (enforcing). Éste añade seguridad y protección adicional.

Desactivar por completo SELinux en un sistema operativo para servidores —en lugar de intentar aprender a utilizarlo— puede considerarse algo absolutamente irresponsable y negligente e invariablemente denotará una completa ignorancia de parte del administrador de sistemas respecto de aspectos de seguridad fundamentales en estas distribuciones.

Ejecute lo siguiente para añadir el contexto syslogd_port_t a las conexiones UDP a través del puerto 514.

semanage port -a -t syslogd_port_t -p udp 514

Procedimientos.

Esta sección describe los pasos necesarios para configurar de manera tradicional el servidor Rsyslog y sus clientes.

Configuración del servidor.

Configure el servidor para recibir y procesar registros de otros equipos en la red.

Archivo /etc/rsyslog.conf.

Edite el archivo /etc/rsyslog.conf:

vi /etc/rsyslog.conf

Localice lo siguiente alrededor de las líneas 12 y 18:

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

Habilite las líneas resaltadas eliminado las almohadillas:

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Guarde los cambios y salga del editor de texto.

Reinicie el servicio para aplicar los cambios. Utilice el mandato apropiado para su sistema:

Con la configuración realizadas hasta aquí, todos los mensajes de registro de los anfitriones remotos se almacenarán en los mismos archivos de registros que el anfitrión local.

Almacenamiento de registros en directorios por anfitrión.

De modo opcional puede modificar la configuración para generar automáticamente un directorio específico para cada anfitrión remoto.

Edite de nuevo el archivo /etc/rsyslog.conf:

vi /etc/rsyslog.conf

Añada lo siguiente al inicio de la sección de reglas —alrededor de la línea 34:

#### RULES ####

$template TmplAuth, "/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.*   ?TmplAuth
*.info,mail.none,authpriv.none,cron.none   ?TmplMsg

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

Guarde los cambios y salga del editor de texto.

Genere el directorio /var/log/rsyslog:

mkdir /var/log/rsyslog

Reinicie el servicio para aplicar los cambios con el mandato apropiado para su sistema ( systemctl restart rsyslog o service rsyslog restart ).

Almacenamiento de registros en MySQL™ o MariaDB™.

Conviene utilizar un motor de base de datos si la cantidad de datos gestionados en los mensajes de registro es muy grande. El siguiente procedimiento requiere omitir la sección anterior y que esté activo, configurado y funcionado MySQL™ o MariaDB™.

Ejecute lo siguiente para instalar el paquete con el módulo de rsyslog para conexión a MySQL™/MariaDB™:

Ejecute lo siguiente para crear la base de datos denominada Syslog con todas las tablas necesarias (se solicitará la contraseña de root):

/usr/share/doc/rsyslog-mysql-8.*/createDB.sql

Acceda al intérprete de mandatos de MySQL™/MariaDB™ (se solicitará la contraseña de root):

mysql -uroot -p

Dentro del intérprete, ejecute lo siguiente para configurar los permisos de acceso, usuario y contraseña de la base de datos Syslog. Sustituya 'especifique-una-contraseña' por una contraseña segura:

grant all on Syslog.* to Syslog@localhost identified by 'especifique-una-contraseña';
exit;

Edite de nuevo el archivo /etc/rsyslog.conf:

vi /etc/rsyslog.conf

Añada lo siguiente antes de la sección GLOBAL DIRECTIVES —alrededor de la línea 20 (sustituya contraseña-que-especificó-arriba por la contraseña real):

# Conexión a MySQL™/MariaDB™
$ModLoad ommysql
*.* :ommysql:127.0.0.1,Syslog,Syslog,contraseña-que-especificó-arriba
$AllowedSender UDP, 127.0.0.1, 172.16.1.0/28, 10.0.1.0/29
$AllowedSender TCP, 127.0.0.1, 172.16.1.0/28, 10.0.1.0/29

Lo anterior carga el módulo de conexión, especifica que todos los tipos de registro se almacenarán en la base de datos Syslog del anfitrión local, usando el usuario Syslog y la contraseña definida, permitiendo el envío desde el anfitrión local y desde los segmentos de red 172.16.1.0/28 y 10.0.1.0/29.

Guarde los cambios, salga del editor y reinicie el servicio para aplicar la nueva configuración:

Configuración de los clientes.

Configure los equipos cliente para enviar sus registros al servidor central.

Edite el archivo de configuración de Rsyslog en el cliente:

vi /etc/rsyslog.conf

Añada la siguiente línea al inicio de la sección de reglas (alrededor de la línea 34), sustituyendo 172.16.1.1 por la dirección IP real de su servidor Rsyslog:

*.* @172.16.1.1

O bien, especifique el nombre del servidor si éste es resuelto por un servidor DNS:

*.* @servidor.red-local.net

Reinicie el servicio en el cliente para aplicar los cambios:

Conclusión.

La configuración de un servidor centralizado de registros con Rsyslog proporciona una visión unificada y un control eficaz sobre las bitácoras de toda la infraestructura. Este manual ha cubierto los pasos esenciales, desde la activación del servicio y la configuración básica hasta opciones avanzadas como el almacenamiento por anfitrión o en bases de datos. Para entornos más complejos, se recomienda consultar la documentación oficial de Rsyslog y explorar herramientas complementarias como LogAnalyzer para el análisis y visualización de los registros almacenados.

Bibliografía.