# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Configurar un syslog remoto para centralizar logs


Syslogd permite ser configurado para escuchar y aceptar conexiones remotas, lo que implica poder recibir datos y almacenarlos de clientes externos (syslog de otros servidores). Esto es perfecto para crear un servidor syslog central y enviarle todos los logs de otros servidores, con la finalidad de tenerlos y gestionarlos todos en el mismo sitio.

La configuración es bastante sencilla. Vamos a ver los pasos a realizar en el servidor central syslogd y en los clientes.

Syslogd central

En el servidor syslogd que va a recibir todos los logs hay que revisar dos cosas. La primera que esté configurado para aceptar conexiones remotas. Para ello hay que añadir el parámetro “-r” a la línea de arranque. Ya sea en el script de /etc/init.d/syslog o si lo arrancamos a mano. En el script de init.d suele ser en la variable donde se especifican los parámetros:

SYSLOGD_OPTIONS="-r -m 0"

Y si lo arrancaramos a mano:

# syslogd -r -m 0

Una vez arrancado, debería estar escuchando en el puerto UDP 514. Aseguraos que está abierto en el firewall:

syslogd   13819      root    7u     IPv4  660344590      UDP *:syslog

Clientes syslogd

A la hora de configurar los clientes que van a enviar los logs al servidor central, únicamente tenemos que especificar qué logs van a ir al servidor central, lo haremos en el fichero de configuración /etc/syslog.conf.

Una línea estandar es esta por ejemplo, en la que mandamos a /var/log/messages los logs de cron, info, mail, etc:

*.info;mail.none;authpriv.none;cron.none		/var/log/messages

Para que estos logs se dejen de almacenar en el log local y pasen al remoto, únicamente indicamos con @servidor_syslogd el hostname/ip del servidor syslogd. Si por ejemplo el servidor syslogd tiene el hostname syslogd01:

*.info;mail.none;authpriv.none;cron.none	     @syslogd01

Reiniciamos syslogd y comenzaríamos a enviar los logs al servidor central:

# /etc/init.d/syslogd restart

Un ejemplo de como veríamos el log central con varias entradas de distintos servidores (servidor01, servidor02,…):

Aug 12 18:15:58 servidor01 snmpd[27557]: Connection from UDP: [xx.xx.xx.xx]:39892
Aug 12 18:15:58 servidor01 snmpd[27557]: Received SNMP packet(s) from UDP: [xx.xx.xx.xx]:39892
Aug 12 18:15:58 servidor02 snmpd[27557]: Connection from UDP: [xx.xx.xx.xx]:56751
Aug 12 18:15:58 servidor02 snmpd[27557]: Received SNMP packet(s) from UDP: [xx.xx.xx.xx]:56751
...
...

Categoría: Linux, Monitorización | Etiquetas: ,

3 Comentarios

  1. inedit00 dice:

    Una entrada genial, Alex. Hace tiempo que quería echarle un vistazo a esto de los logs remotos, pero nunca encontraba tiempo para ello. Aquí está muy bien explicado y parece realmente simple.

    Pero estoy pensando que este sistema es algo inseguro: abrir el puerto der firewall exponiendo una máquina que permite logear cosas en el disco duro a mi me huele a un ataque DoS llenando el disco duro del servidor de rsyslog. Sabes si el sistema también permita autenticación de algún modo. Ya sea por IP de origen, por sesión, etc… ?

    Un saludo y a seguir así, Jan.

    Nota: Sigo a bastantes blogs. El tuyo es el que tiene la tasa mas alta de posts útiles por número de posts publicados ;) Ánimos!

  2. Alex dice:

    Me alegro de que te sirvan los posts!

    Igual lo mas sencillo es, a nivel de firewall restringir el puerto UDP unicamente a determinadas IPs o a los rangos privados que vayan a usar el servicio de syslog y apañado.

    De todas formas lo de la autenticacion parece interesante. Lo revisare a ver.

    Saludo

  3. Raul Diaz dice:

    Esto que ustedes desean hacer se puede realizar con syslog-ng echenle un vistazo en: http://www.balabit.com/network-security/syslog-ng/opensource-logging-system

Deja una respuesta