TOP

Configuración RSyslog para centralizar logs en Debian6

RSyslog te permite no solo configurar los logs en local, donde los recolectaremos y con que prioridad, sino también aceptar conexiones remotas con el fin de recibir  logs de otros equipos y poder centralizar todas estas operaciones de logueo. Configuraremos un escenario simple con dos máquinas Debian, uno hará de cliente y otro de servidor.


Manos a la obra. Por un lado tendremos que configurar la parte del servidor, que a fin de cuentas será aquella que reciba todo los datos. Para permitir que nuestro servidor de logs reciba peticiones, debemos modificar el fichero de configuración de rsyslog, que encontramos normalmente en /etc/rsyslog.conf . En este fichero habilitamos un par de cosillas:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception 
$ModLoad imtcp 
$InputTCPServerRun 514 

Estas opciones modifican el parametro de -r de syslog que ya está obsoleto. Una vez modificado, para que el servidor asuma los cambios, reiniciamos el demonio rsyslog.

/etc/init.d/rsyslog restart
o
service rsyslog restart

Con esto hemos habilitado la recepción de logs en nuestro servidor.Vamos con la parte del cliente. Suponemos que nuestro cliente es otro Debian, la configuración es sencilla, simplemente introduciremos en el archivo  /etc/rsyslog.conf la siguiente linea.

*.* @<IP remota> 

La @ nos indica que deben enviarse los logs a un servidor remoto. si aparece una sola @ será utilizando UDP, colocando dos @ utilizaremos TCP. Sencillo. 

Ya tendriamos configurado nuestro servidor de syslog para recibir logs de nuestro cliente Debian, pero hay un pequeño incoveniente. Con la configuración que tenemos actualmente, tanto los logs del servidor como del cliente se meterian en los mismos ficheros, lo que puede dar lugar a confusión.

Separación de logs

Las reglas para la separación de los logs se rigen por el par <facility, nivel de criticidad>. Tenemos niveles de criticidad de 0 (emergencias) a 7 (debugging), mientras que las facilities nos indican el origen del mensaje (existe un número fijo de ellas). Algunos demonios del sistema tienen asignados facilities, como pueden ser mail, user, kern etc...aquellos que no tengan ninguna asociada debe utilizar las definidas para uso "local" (local0 al local7). Nosotros  utilizaremos estas últimas para separar los logs de cliente y servidor. El formato de las reglas es el siguiente:

<facility>.<criticidad> <archivo log destino (ej /var/log/syslog)>

Tanto la criticidad como la facility pueden ser *, indicando que abarque todo. Por ejemplo,
mail.* envia todos los logs del demonio mail al archivo especificado.

Conociendo las bases para la configuración del servidor, es posible armar una que reciba logs de diferentes fuentes y los separe en distintos archivos.
Dado que por defecto todo va a parar a syslog, lo mejor es eliminar las facilities local* de dicha configuración y después utilizarlas en los dispositovs de red. El primer paso es editar la regla correspondiente (en /etc/rsyslog.conf) para que quede como sigue:
*.*;auth,authpriv.none;\
local0.none;\
local1.none;\
local2.none;\
local3.none;\
local4.none;\
local5.none;\
local6.none;\
local7.none -/var/log/syslog
También hay que evitar que info, notice y warning terminen en /var/log/messages
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none;
local0.none;\
local1.none;\
local2.none;\
local3.none;\
local4.none;\
local5.none;\
local6.none;\
local7.none -/var/log/messages
y que los mensajes de debugging terminen en /var/log/debug
*.=debug;\
auth,authpriv.none;\
news.none;mail.none;
local0.none;\
local1.none;\
local2.none;\
local3.none;\
local4.none;\
local5.none;\
local6.none;\
local7.none -/var/log/debug
La separación se puede realizar de varias maneras, una es basándose en las facilities. Para ello, a cada tipo de dispositivo se asigna una facility de las "local use" y luego se implementa la configuración en base a esto, de la siguiente manera:
local3.* /var/log/remote/firewalls.log
local4.* /var/log/remote/routers.log
local5.* /var/log/remote/APs.log
local6.* /var/log/remote/switches.log
De esta manera, utilizaremos local3 para firewalls, local4 para routers etc etc, aunque todo esto es configurable al nivel que queramos.

Fuente: http://itfreekzone.blogspot.com.es/2011/09/armar-servidor-de-logging-con-rsyslog-y.html

Un saludo,
Víctor.

0 comentarios:

Publicar un comentario