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
- Página oficial de rsyslog
- Hardening de servidores GNU/Linux, de Carlos Álvarez Martíb y Pablo González Pérez, 0xWord, 2013, página 261-271