Centralizar los logs en un servidor dedicado sólo a almacenar nuestros eventos


Es una buena práctica es centralizar los eventos de nuestros sistemas en un servidor cuya única función sea recoger los logs de nuestros sistemas, clasificarlos y almacenarlos (y por tanto, otra excelente buena práctica es que en ese servidor solo ofrezcamos un servicio: el de recogida de eventos). Algunos argumentos para defender esta opinión son:

  • Mejora la seguridad
  • Permite centralizar los análisis de los eventos
  • Puede actuar como “copia de seguridad”
  • ….

Una buena opción en GNU/Linux es el uso de rsyslog cuya configuración es sencilla:

En el cliente, si quieres que siga guardando los logs en el propio equipo además de en el servidor, simplemente se debe añadir la línea “*.* @logserver” o “*.* @@logserver”  al final del fichero /etc/rsyslog.conf dejando lo que ya tienes. Y si, la segunda opción de configuración escrita es con 2 ‘@’, no es una errata; más adelante se explica la diferencia.
En el lado del servidor en el archivo /etc/rsyslog.conf encontrarás (justo al principio):

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

De las 3 primeras, la 2ª y 3ª son para UDP (como bien indica el comentario, es decir, la primera línea 😉 ); de las 3 segundas, la 5ª y 6ª para TCP.

Si configuras en el cliente con “*.* @srvLog”, le estás indicando use UDP para mandar todos sus registros a srvLog; si pones “*.* @@srvLog” le estás diciendo que use TCP y, según el protocolo de transporte que hayas decidido utilizar, tienes que descomentar las 2 últimas líneas del primer grupo o las 2 últimas del segundo. En ambos, la primera de ellas carga el módulo correspondiente y la segunda establece el puerto 514 para la escucha (podemos cambiarlo pero entonces la línea de configuración indicada al cliente debe incluir el puerto).

Por tanto, para UDP, debería quedar:

 # provides UDP syslog reception
 $ModLoad imudp
 $UDPServerRun 514

Para probar el funcionamiento (siempre, antes de utilizar una configuración en producción, debemos probarla bien) puedes usar la herramienta logger que fuerza la escritura del mensaje que desees (man logger para ver cómo usarla). Antes, asegúrate que:
1.- En el lado del servidor:

  •  El servicio está lanzado: por ejemplo utilizando ‘ps xa’ para ver si está el proceso,
  • está escuchando el puerto: netstat -an (también puedes usar lsof)

3.- Que puedes llegar al servidor desde el cliente (puedes usar ping y nmap para ver si detectas el puerto desde el cliente)

PD: Con man rsyslogd tienes más ayuda.

Referencias

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s