Configurar el syslogd para que acepte mensajes de sistemas remotos
Ya he comendao alguna vez que el router que uso para conectar a Internet es un Zyxel 660HW-61. Este router permite enviar sus mensajes al syslog de una máquina UNIX remota:

El puerto de red asignado al syslog es el 514/UDP:
# grep syslog /etc/services syslog 514/udp
Sin embargo, el proceso syslogd de Debian no se conecta a ese puerto porque no escucha mensajes de la red por defecto. Si queremos que lo haga, tenemos que editar el fichero /etc/default/syslogd, que en la configuración estándar no contiene ninguna opción:
# For remote UDP logging use SYSLOGD="-r" # SYSLOGD=""
Si queremos que escuche de la red, hemos de especificar la opción -r:
# For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-r"
que sirve precisamente para esto:
-r This option will enable the facility to receive message from the
network using an internet domain socket with the syslog service
(see services(5)). The default is to not receive any messages
from the network.
y reiniciar el proceso con “/etc/init.d/sysklogd restart“. Tras esto, podremos comprobar que el demonio funciona con la opción deseada
# ps -ef | grep syslog root 4547 1 0 17:35 ? 00:00:00 /sbin/syslogd -r
y que el proceso está escuchando en el puerto 514/UDP:
# netstat -a | grep syslog udp 0 0 *:syslog *:*
Puesto que los mensajes del Zyxel van a llegar por la facility local2, podemos querer establecer un fichero de log específico para él en el /etc/syslog.conf (para que se relea después de modificarlo, haremos un “/etc/init.d/sysklogd reload“):
local2.* /var/log/zyxel.log
Si quisiéramos que fuera un sistema Linux (por ejemplo, una Debian) el que mandara ciertos mensajes a un syslog remoto, podríamos hacerlo simplemente poniendo en el syslog.conf una línea como:
local3.* @sistemaremoto.dominio
Tras releer la configuración, con una sencilla prueba con el comando logger:
logger -p local3.info "Mensaje de prueba"
veremos que, efectivamente, el mensaje aparece en el sistema remoto en varios logs configurados para recibir mensajes de la prioridad formada por la pareja facility/level que hemos especificado:
# grep "Mensaje de prueba" /var/log/* /var/log/messages:Dec 8 18:18:15 ordenador logger: Mensaje de prueba /var/log/syslog:Dec 8 18:18:15 ordenador logger: Mensaje de prueba
Recordemos que las facilities son:
- auth, security 1
- authpriv
- cron
- daemon
- ftp
- kern
- lpr
- mark (sólo para uso interno)
- news
- sys-log
- user
- uucp
- local0 → local7
y los levels:
- debug
- info
- notice
- warning, warn 1
- error, err 1
- crit
- alert
- emerg, panic 1
1. En los casos en que aparecen dos etiquetas juntas, la segunda es equivalente a la primera y está obsoleta.
Si tomamos una traza de red vemos que el protocolo (BSD syslog Protocol) es extraordinariamente sencillo (RFC 3164):

Podemos ver que la prioridad es un byte que contiene la facility (5bits) y el level (3bits).
Con un simple netcat también podemos mandar mensajes a un syslogd remoto que esté escuchando la red, aunque no pongamos la cabecera con la prioridad y la fecha del evento:
# echo "Nuevo mensaje de prueba con el netcat" | netcat -q 0 -u 192.168.1.20 514
y en el /var/log/syslog remoto encontramos el mensaje:
Dec 8 18:39:15 ordenador Nuevo mensaje de prueba con el netcat
:wq




Gracias Super Coco, como siempre la explicación con todo lujo de detalles.
Hecha la prueba con un Comtrend
Saludos
@Bytecoders ¡Gracias a ti por la visita! ¡Me alegro de que te haya resultado útil!
Voy a ver si yo también pruebo con mi d-link. Como ya ha dicho bytecoders, muy bien explicado (como siempre).
Saludos, Iván.
@Iván ¡Gracias!
buenas! muy bueno el “pique”, de todos modos estoy probando habilitar el syslog de un debian para un equipo remoto,pero en la distribución no aparece el /etc/default/syslogd, suspuestamente debería soportar tanto el logueo normal como el remoto. A no ser que por defecto no escuche mensajes de red y que haya que habilitarlo. Sabría decirme alguien cómo? No estoy pudiendo mandar los logs desde un router cisco al debian.
Support of both internet and unix domain sockets enables this utility package to support both local and remote logging.
gracias!!
saludos,
adriana
@adriana El paquete
sysklogdcontiene el fichero/etc/default/syslogd:Así que si dicho paquete está instalado deberías de tener ese fichero de configuración. Si no, prueba a reinstalar el paquete. También puede ser que estés usando un
syslogdalternativo.Hola,
El post ha sido de mucha utilidad. Me gustaría saber qué es una “facility” y cómo puedo saber de forma sencilla que “facility” utiliza my router para ponerlo en un log aparte.
Gracias,
@Mario La facility es el área temática a la que se asocia el mensaje. Del “
man syslog.conf“:Para saber qué facility usa tu router, busca la documentación o captura todas las facilities para ver cuál está usando.