Configuración de Rsyslog.

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

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

Acerca de syslog.

Syslog es un estándar utilizado para la captura, el procesamiento y el trasporte 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 daos desde diversas fuentes, trasformació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 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 esencial y obligatorio de cualquier distribución de GNU/Linux moderna y por tanto viene instalado de modo predeterminado y el servicio estará activo en todos los niveles de ejecución.

Activar e iniciar servicio.

CentOS 7 y Red Hat™ Enterprise Linux 7, openSUSE™ y SUSE™ Linux Enterprise 12.

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:

systectl reload rsyslog

Ejecute lo siguiente para detener el servicio:

systemctl stop rsyslog

ALDOS 1.4, CentOS 6 y Red Hat™ Enterprise Linux 6.

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.

Herramienta system-config-firewall.

Ejecute lo siguiente si utiliza el muro cortafuegos predeterminado del sistema:

system-config-firewall

Habilite el puertos 514/UDP y 514/TCP (syslog) y aplique los cambios.

Herramienta system-config-firewall habilitando el puerto 514/TCP y 514/UDP para Rsyslog en modo gráfico.
Herramienta system-config-firewall habilitando el puerto 514 por TCP y UDP para Rsyslog en modo gráfico.

Herramienta system-config-firewall habilitando el puerto 514/TCP y 514/UDP para Rsyslog en modo texto.
Herramienta system-config-firewall habilitando el puerto 514 por TCP y UDP para Rsyslog en modo texto.

Servicio iptables.

Ejecute lo siguiente:

iptables -A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 514 -j ACCEPT

Guarde los cambios ejecutando lo siguiente:

service iptables save

O bien edite el archivo /etc/sysconfig/iptables:

vi /etc/sysconfig/iptables

Añada el siguiente contenido:

-A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 514 -j ACCEPT

Reinicie el servicio para aplicar los cambios:

service iptables restart

FirewallD.

Ejecute lo siguiente:

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

Shorewall.

Edite el archivo /etc/shorewall/rules:

vi /etc/shorewall/rules

Añada el siguiente contenido:

#ACTION SOURCE  DEST    PROTO   DEST        SOURCE #                               PORT        PORT(S)1 ACCEPT  all     fw      udp     514 ACCEPT  all     fw      tcp     514

Reinicie el servicio:

service shorewall restart

YaST Firewall.

Ejecute lo siguiente para iniciar el módulo de muro cortafuegos de YaST:

yast firewall

El la sección de reglas personalizadas, añada dos reglas para habilitar las conexiones desde la red de área local para el puerto 514 por TCP y UDP.


Reglas personalizadas del módulo firewall de YaST.

Pulse F10 para aplicar los cambios y egresar al intérprete de mandatos.

SELinux y rsyslog en CentOS y Red Hat™ Enterprise Linux.

El siguiente paso se puede omitir en CentOS 7 y Red Hat™ Enterprise Linux 7. De modo predeterminado CentOS y Red Hat™ Enterprise Linux  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 CentOS y Red Hat™ Enterprise Linux.

Ejecute lo siguiente —sólo en el servidor— 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.

Configuración del servidor.

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.

systemctl restart rsyslog

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.

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™ en CentOS y Red Hat™ Enterprise Linux:

yum -y install rsyslog-mysql

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

yast -i rsyslog-module-mysql

Ejecute lo siguiente en CentOS y Red Hat™ Enterprise Linux para crear la base de datos denominada Syslog con todas las tablas necesarias —se solicitará la contraseña de root:

mysql -uroot -p < /usr/share/doc/rsyslog-*/mysql-createDB.sql

Ejecute lo siguiente en SUSE™ Linux Enterprise para crear la base de datos denominada Syslog con todas las tablas necesarias —se solicitará la contraseña de root:

mysql -uroot -p < /usr/share/doc/packages/rsyslog/mysql-createDB.sql

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

mysql -uroot -p

Ejecute lo siguiente para configurar los permisos de acceso, usuario y contraseña de la base de datos Syslog:

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:

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

# Conexión a MySQL™/MariaDB™
$ModLoad ommysql
$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

#### GLOBAL DIRECTIVES ####

# Use default timestamp format

Lo anterior carga el módulo de conexión a MySQL™/MariaDB™, especifica que todas los tipos de registro se almacenará en una base de datos en el anfitrión local, en la base de datos Syslog, usando el usuario Syslog y la contraseña que especificó unos pasos arriba, desde el anfitrión local y desde los anfitriones de los segmentos de red 172.16.1.0/28 y 10.0.1.0/29.

Guarde los cambios y salga del editor de texto.

Reinicie el servicio para aplicar los cambios.

service rsyslog restart

Configuración de los clientes.

Edite el archivo /etc/rsyslog.conf si utiliza CentOS o Red Hat™ Enterprise Linux:

vi /etc/rsyslog.conf

Edite el archivo /etc/rsyslog.d/remote.conf si utiliza SUSE™ Linux Enterprise:

vi /etc/rsyslog.d/remote.conf

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

#### RULES ####

*.* @172.16.1.1

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

O bien especifique el nombre del servidor —si éste es resuelto por un servidor DNS.

#### RULES ####

*.* @servidor.red-local.net

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

Reinicie el servicio para aplicar los cambios.

Ejecute lo siguiente si utiliza CentOS 7, Red Hat™ Enterprise Linux 7 o SUSE™ Linux Enterprise 12:

systemctl restart rsyslog

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6:

service rsyslog restart

Utilice aplicaciones como LogAnalyzer para visualizar y hacer análisis de los mensajes de registro almacenados en la bases de datos.

Bibliografía.