Recientemente configuré un servidor syslog central. Los registros se organizan en archivos, en carpetas con el nombre de las máquinas cliente (mediante DNS) y se analizan con logcheck.
Algunas de las máquinas cliente tienen más de un sistema operativo (es decir, Linux y Windows) y terminan teniendo la misma dirección IP y nombre de host. El resultado es que los registros de Windows (mensajes) y los registros de Linux terminaron en el mismo archivo, lo que nos hizo a mí y a logcheck bastante infelices. Estoy interesado en mantener separados los registros de diferentes sistemas operativos.
Mi solución ha sido hacer que syslog escuche en múltiples puertos y configurar syslog/rsyslog en las máquinas cliente de Linux y Windows para usar un número de puerto diferente. De esta manera puedo redirigir fácilmente los registros a los archivos apropiados según su fuente.
Sin embargo, no estoy del todo convencido de la elegancia de la solución: nmap puede detectar el sistema operativo del cliente a través de la huella digital de la pila TCP/IP.
¿Existe alguna forma de configurar Syslog-ng para redirigir los datos entrantes según el sistema operativo de una máquina cliente?
Respuesta1
Su enfoque con diferentes puertos para máquinas Linux y Windows no está nada mal.
Alternativas:
- usar el programa como destino en syslog-ng (por ejemplo, su script personalizado que verifica el sistema operativo actual de la máquina cliente y escribe en linux.log o windows.log): lento y poco confiable.
- usar match(...) en el filtro syslog-ng para distinguir entre cadenas de syslog de Linux y Windows (no estoy seguro de que pueda ser fácil y confiable a menos que pueda colocar alguna subcadena de marcador en el syslog del cliente) y usar dicho filtro para seleccionar el archivo de registro de destino.
Difícilmente se pueden recomendar ambos.
Otro truco más puede ser utilizar el transporte tcp para syslog desde clientes Linux y udp desde Windows. Luego puede configurar destinos de archivos con filtro de protocolo.