En este momento estás viendo Como configurar un servidor de registros con syslog

Como configurar un servidor de registros con syslog

Como configurar un servidor de registros con syslog

Vamos a instalar y configurar un servidor de registros con syslog para poder verificar los registros de forma centralizada. Los registros son determinantes y reveladores cuando se trata de resolución de problemas y seguridad, así como fuentes de datos confiables para comprender las estadísticas del sistema y hacer predicciones de tendencias.

Tan pronto como el núcleo o kernel y los procesos comienzan a ejecutarse y comunicarse entre sí, se produce una gran cantidad de información. La mayor parte se envía a ficheros, los llamados ficheros de registro o logs. La búsqueda de un evento que se produjo en un servidor, en un equipo de red o en un cliente, sería un quebradero de cabeza para el administrador del sistema, de ahí la importancia de tener una forma estandarizada y centralizada de realizar un seguimiento de los eventos del sistema.

Su uso será una práctica importante e imprescindible, para cualquier administrador de sistemas que se precie. Si dispones de unos pocos equipos la tarea será rápida y sencilla, pero si son muchos los equipos a monitorear, necesitarás un servidor de registros centralizado.

En estos escenarios de trabajo, con muchos equipos, es cuando la gestión de registros centralizada se convierte en imprescindible. Con syslog, podremos reunir y sincronizar los registros de todos los servidores Linux (registros de autentificación, de logueos correctos e incorrectos, registros cron, syslogs, etc…), en un solo servidor, simplificando el trabajo.

Tienes más información sobre Como revisar los ficheros de log en GNU/Linux en este artículo anterior.

Sumario

  • Que es syslog
  • Características de syslog
  • Formato de los mensajes de syslog
  • Instalación y configuración del servidor syslog
  • Instalación y configuración en los clientes

Que es syslog

Syslog, acrónimo de System Logging Protocol, es un estándar de facto para el envío de mensajes de registro o eventos del sistema a un servidor específico, llamado servidor de Syslog, en una red informática. Se denomina syslog tanto al protocolo de red como a la aplicación que envía los mensajes de registro y al proceso del servidor real o daemon. Aunque en puridad, el demonio se denomina syslogd.

Fue desarrollado por Eric Allman en la Universidad de California en Berkeley en el año 1981.

Esquema del funcionamiento del servidor Syslog
Esquema del funcionamiento del servidor Syslog

Este protocolo está habilitado en la mayoría de dispositivos de red, como routers, switches, firewalls, puntos de acceso Wi-Fi, otros servidores e incluso lo encontramos en algunas impresoras y escáneres. Lo tenemos disponible en todos los sistemas GNU/Linux, UNIX y derivados, así como en la mayoría de servidores web como Apache o Nginx.

El Protocolo Syslog esta definido en el documento RFC 5424

Características de syslog

La arquitectura de este sistema es de cliente y servidor.

Como hemos comentado, cualquier sistema genera mensajes en respuesta a eventos ocurridos en un equipo cualquiera. Estos eventos se generan y registran de manera local, lo que crea la situación de que el administrador de sistemas, se encuentre con la necesidad de revisar múltiples equipos en diferentes ubicaciones. La solución es un servidor Syslog con toda la información, generada por los equipos de red, de manera centralizada, facilitando su consulta y permitiendo una mejor visualización de toda la infraestructura de IT.

Syslog emplea el protocolo UDP en el puerto 514 de manera predeterminada, aunque lo puedes configurar para que escuche en cualquier otro puerto. No obstante, algunos dispositivos utilizan el protocolo TCP en el puerto 1468, que también puedes cambiar, para obtener confirmación de entrega de los mensajes al servidor. Esta opción es la recomendable si la comunicación se realiza a través de la WAN.

Con esta herramienta podremos recoger, registrar y analizar diversos eventos como: un intento de acceso con contraseña equivocada, un acceso correcto al sistema, anomalías y variaciones en el funcionamiento normal del sistema, alertas cuando ocurre alguna condición especial, información sobre las actividades del sistema operativo y errores del hardware o el software.

Formato de los mensajes de syslog

Para comprender como funcionan estos mensajes, vemos su estructura. Está compuesta por tres partes: PRI (valor de prioridad), HEADER (información de identificación) y MSG (el mensaje).

Los datos de PRI, especifican dos valores numéricos que ayudan a clasificar el mensaje según el tipo de mensaje o qué sistema generó el evento. En la siguiente tabla vemos los valores que aparecerán en el campo llamado «Facility».

Tabla con los valores facility
Tabla con los valores facility

El segundo dato determina la importancia o gravedad del mensaje mediante un código numérico de 0 a 7. Son los valores del campo «Severity».

Valores del campo "Severity"
Valores del campo «Severity»

En el HEADER encontramos otros datos de identificación que incluyen la marca de tiempo del mensaje, el nombre de host, nombre de dominio o dirección IP.

Estos dos primeros códigos, conjuntamente, permiten una clasificación rápida y clara de los mensajes registrados.

En el texto del mensaje o MSG, nos ofrece datos como la ID del proceso que ha generado el aviso, nombre de la aplicación y el contenido del propio mensaje.

En algunos casos el mensaje será en texto plano, fácilmente legible. Sin embargo algunos ficheros de log pueden contener datos binarios, como es el caso de /var/log/wtmp que almacena datos relevantes para inicios de sesión exitosos. En estos casos necesitaremos algún comando como, last, dmesg, uptime, file, etc.

Por ejemplo, para consultar intentos fallidos de inicio de sesión se usa el comando especial lastb.

Los mensajes de syslog no suelen superan los 1024 bytes de tamaño.

El protocolo Syslog, en los clientes, puede generar ingentes cantidades de mensajes que se reenviarán al servidor Syslog, por ello, la capacidad más importante de un servidor Syslog es la de filtrar correctamente y reaccionar de forma adecuada a los datos de syslog entrantes.

Datos de syslog centralizados en un servidor
Datos de syslog centralizados en un servidor

En los sistemas más modernos, los mensajes se vuelcan en una Base de Datos común que utiliza los valores «Facility» como claves de búsqueda.

Instalación del servidor syslog

Evidentemente, es mucho más fácil y rápido revisar un solo servidor, que los innumerables equipos de red que tengamos bajo nuestra supervisión. Así que vamos a ver como instalar y configurar un servidor syslog en varios sistemas GNU/Linux. Lógicamente, también veremos como configurar los clientes.

Dependiendo del S.O. y la versión instalada, es posible que Syslog este instalado por defecto. Si no es tu caso lo instalas con los siguientes comandos.

# CentOS, Rocky, Alma y derivados
sudo yum install rsyslog -y
# o
sudo dnf install rsyslog -y

# Debian, Ubuntu y derivados
sudo apt install rsyslog -y

En mi caso, con Debian 12 ejecuto.

sudo apt install rsyslog -y

Si no lo tienes instalado lo hará a continuación.

Instalación de syslog en el servidor
Instalación de syslog en el servidor

Configurar el servidor de registros con syslog

Una vez termine la instalación de la herramienta, tenemos que configurar el servidor. Para ello editamos el fichero de configuración en la ruta /etc/rsyslog.conf.

sudo nano /etc/rsyslog.conf
Edición del fichero de configuración
Edición del fichero de configuración

Aquí encontrarás varias lineas comentadas. Tienes que descomentar las lineas que contienen ModLoad imudp, UDPServerRun 514, ModLoad imtcp y InputTCPServerRun 514. Te deberá quedar como sigue,

# provides UDP syslog reception

module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception

module(load="imtcp")
input(type="imtcp" port="514")
Configuración realizada
Configuración realizada

Una vez realizados los cambios, los guardamos y cerramos el editor. Necesitamos reiniciar la herramienta para tenerlo operativo. Luego comprobamos que el servicio esta activo.

sudo systemctl restart rsyslog

systemctl status rsyslog
Reiniciación del servicio y comprobación
Reiniciación del servicio y comprobación

Lo que hemos configurado, es habilitar el puerto 514, tanto en TCP, como en UDP. El servidor quedará a la escucha en el puerto 514, para poder recibir los registros de log que se generen en todos los equipos configurados como clientes.

Configurar el cliente Syslog

Ya tenemos el servidor syslog operativo. Ahora debemos configurar los clientes para que envíen los mensajes a nuestro servidor.

Para ello, en las máquinas cliente seleccionadas, también instalamos el paquete «rsyslog». Lo hago en un Debian 11. Según S.O. ejecuta,

# CentOS, Alma Linux y derivados
sudo yum install rsyslog -y
#o
sudo dnf install rsyslog -y

# Ubuntu y derivados
sudo apt install rsyslog -y
Instalación de syslog en el cliente
Instalación de syslog en el cliente

Como vemos ya lo tenía instalado

Con el cliente syslog instalado procedemos a su configuración editando el fichero en la ruta /etc/rsyslog.conf.

sudo nano /etc/rsyslog.conf
Configuración del cliente syslog
Configuración del cliente syslog

Tenemos que añadir, al final del fichero, la linea siguiente indicando la ip real del servidor Syslog que recibirá los registros.

cron.none;*.info;mail.none;authpriv.none @IP-Servidor_destino:514

En mi caso

cron.none;*.info;mail.none;authpriv.none @192.168.1.10:514
Configuración del socket de comunicación en el cliente
Configuración del socket de comunicación en el cliente

Guardamos los cambios en el fichero y cerramos el editor. Ya solo nos queda reiniciar la herramienta. y comprobar el estado del servicio.

sudo systemctl restart rsyslog

systemctl status rsyslog
Comprobación de la configuración del cliente

El cliente ya habrá iniciado el envío de mensajes al servidor. Si accedes al servidor Syslog, receptor de los mensajes, podrás ver todos los registros guardados en la ruta /var/log. Si revisamos el contenido de este directorio encontramos otros directorios, que vemos someramente.

  • /var/log/auth.log – Almacena información sobre la autenticación.
  • /var/log/kern.log – Almacena información del kernel.
  • /var/log/syslog – Almacena información del sistema.
  • /var/log/messages – Almacena datos del sistema y de algunas aplicaciones.

Nos desplazamos al directorio indicado

cd /var/log

Una opción muy recomendable es visualizar los mensajes entrantes en tiempo real, conforme van llegando. Ejecuta el comando.

tail -f /var/log/syslog
Ejemplo de logs en el servidor
Ejemplo de logs en el servidor

Si la red es muy grande es importante configurar los mensajes que se reenviarán al servidor de Syslog, según los recursos y los valores de gravedad de los eventos generados, para evitar saturar el servidor y la propia red. Por ejemplo, un router nos informa de la inactividad de una interfaz de red, y este dato es muy importante. O la configuración de una impresora en red, para que únicamente genere tráfico para los eventos críticos.

Con el servidor Syslog podrás recibir, categorizar y almacenar los mensajes de registro para su posterior análisis y tener una visión completa de lo que está sucediendo en toda la red.

Encontrarás, para hilar más fino, configuraciones adicionales en, Como revisar los ficheros de log en GNU/Linux, para almacenar los mensajes en diferentes directorios, clasificarlos por prioridad, avisar a los usuarios o establecer una rotación (logrotate) para que se borren los más antiguos y evitar que siga creciendo el registro.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en pie de la página o desde aquí mismo.

Esta entrada tiene 2 comentarios

  1. Josevi

    Muy útil el artículo Javier. ¿Podemos crear un sistema de alarma ante una línea de log que nos llegue?. Si tenemos el registro .log en txt plano, ¿lógicamente se puede hacer una búsqueda concreta o filtrado de la información que nos interesa?

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.