Configura alertas por uso de ancho de banda con nagios y check_tcptraffic

Configura alertas por uso de ancho de banda con nagios y check_tcptraffic

Hoy una receta interesante para Nagios, que permitirá recibir alertas por consumo de ancho de banda en vuestros servidores, algo muy util para detectar rápidamente un uso fraudulento de vuestra red.

Detectamos tráfico anomalo (picos altos de salida o entrada) cuando algo “no está funcionando de forma normal”, lo mas habitual es encontrar estos picos por alguno de estos motivos:

– Un aumento significativo en el numero de conexiones a alguna web que alojamos (tráfico de salida)
– Estamos sufriendo un DDoS contra nuestro servidor (tráfico de entrada)
– Algun alojamiento ha sido hackeado y han conseguido colocar algun script maligno

Si se dá el tercer caso, el tráfico que generen con el script puede ser de cualquier tipo, todo depende de lo que se “permita” hacer en el servidor y lo bien bastionado que lo tengamos todo.

Detectar el aumento en el ancho de banda es relativamente sencillo si estamos permanentemente monitorizando el servidor, pero lo que queremos, es que nuestro sistema de monitorización sea capaz de avisarnos de ese aumento de tráfico extraño, sin tener los ojos puestos en las gráficas en todo momento.

Para este manual, nos encontramos con que ya disponemos de un monitor instalado basado en Nagios (ya hemos hablado de el en otras ocasiones) y NRPE instalado en el servidor que vamos a monitorizar, con esta base lo que nos permitirá monitorizar el ancho de banda será el plugin “check_tcptraffic” podemos instalarlo siguiendo estos pasos:

EN EL SERVIDOR A MONITORIZAR:

Descargar check_tcptraffic de aqui:

http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=1483&cf_id=24

Y ejecutamos:

tar zxvf check_tcptraffic-2.2.4.tar.gz
cd check_tcptraffic-2.2.4
perl Makefile.PL
make
make install

Una vez instalado es probable que a la hora de ejecutarlo tengamos algun problema con modulos de perl que nos faltan, por ejemplo, si ejecutamos nuestro plugin y obtenemos algun error similar a esto:

# /usr/lib/nagios/plugins/contrib/check_tcptraffic
Can't locate Nagios/Plugin/Threshold.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/nagios/plugins/contrib/check_tcptraffic line 36.
BEGIN failed--compilation aborted at /usr/lib/nagios/plugins/contrib/check_tcptraffic line 36.

o esto otro:

# /usr/lib/nagios/plugins/contrib/check_tcptraffic
Can't locate Readonly.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/nagios/plugins/contrib/check_tcptraffic line 40.
BEGIN failed--compilation aborted at /usr/lib/nagios/plugins/contrib/check_tcptraffic line 40.

La solución pasa por instalar los modulos que nos falten, mediante CPAN o el sistema de paquetes de nuestra distribución, si teneis CentOS, seria tan sencillo como hacer esto:

yum install perl-Nagios-Plugin perl-Readonly

Y si queremos hacerlo desde CPAN seria algo así:

perl -MCPAN -e 'shell'
cpan> install Nagios::Plugin::Threshold
cpan> install Readonly

Una vez solucionadas las dependencias, comprobamos que el comando no da errores:

# /usr/lib/nagios/plugins/contrib/check_tcptraffic
Usage: check_tcptraffic [OPTIONS]

Missing argument: critical
Missing argument: warning
Missing argument: interface
Missing argument: speed

Enhorabuena! tenemos el plugin listo para funcionar, tan solo nos falta decidir el ancho de banda a partir del cual nos enviará un warning o un critical, en nuestro caso decidimos que 10mbits/s es un síntoma de alerta y que a partir de 14mbits/s será un critical, como al plugin le tenemos que pasar los valores en bytes/s tendríamos que ejecutar algo así:

# /usr/lib/nagios/plugins/contrib/check_tcptraffic -i eth0 -s 100 -w 1310720 -c 1835008
TCPTRAFFIC OK - eth0 288305 bytes/s | TOTAL=288305B;1310720;1835008 IN=282888B;; OUT=5417B;; TIME=1B;;

OJO! la primera vez que ejecutemos el script, nos indicará que no encuentra la BD y que la inicializa, en la siguiente ejecución tendremos ya datos reales.

Los parametros que tenemos que cambiar en esta llamada son:

-i
-s
-w
-c

Con estos valores configurados, editamos el fichero de configuración de NRPE, normalmente: /etc/nagios/nrpe.cfg y agregamos la linea:

command[check_traffic]=/usr/lib/nagios/plugins/contrib/check_tcptraffic -i eth0 -s 100 -w 1310720 -c 1835008

Una vez agregada, reiniciamos nrpe.

EN EL SERVIDOR NAGIOS:

Agregamos el en el nagios el servicio que monitorizará el tráfico, si disponeis de un front end como centreon para el nagios esta tarea se simplifica al máximo, en caso contrario se tendria que crear un servicio similar a este:

define service{
	use generic-service
	host_name host.domain.com
	service_description Ancho de banda
	is_volatile 0
	check_period 24x7
	max_check_attempts 4
	normal_check_interval 5
	retry_check_interval 1
	contact_groups admins
	notification_options w,u,c,r
	notification_interval 10
	notification_period 24x7
	check_command check_nrpe!check_traffic
}

Una vez introducido el servicio, lo asignamos al servidor que vamos a monitorizar y reiniciamos nagios.

Espero que os haya sido de utilidad!

Write a Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.