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.
Conozca los conceptos básicos del sistema de registro centralizado.
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.
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.
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
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.
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
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
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.
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
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
Esta sección describe los pasos necesarios para configurar de manera tradicional el servidor Rsyslog y sus clientes.
Configure el servidor para recibir y procesar registros de otros equipos en la red.
/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:
systemctl restart rsyslogservice rsyslog restartCon 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.
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 ).
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™:
dnf (RHEL, AlmaLinux, Rocky Linux):
dnf -y install rsyslog-mysqlyum (ALDOS):
yum -y install rsyslog-mysqlEjecute 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:
systemctl restart rsyslogservice rsyslog restartConfigure 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:
systemctl restart rsyslogservice rsyslog restartLa 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.