Nuestros servicios, sistemas o dispositivos en general son víctimas de ataques que pasan desapercibidos a simple vista.
Los sistemas de monitorización nos pueden ayudar a prevenir y anticiparnos a los diversos problemas a los que pueden estar expuestos nuestros servicios, y ya no solo a nivel de la seguridad de los mismos.
Les propongo montar una solución de monitorización muy robusta y escalable basada en soluciones Open Source que nos van a ayudar por ejemplo a saber cuando un servidor web esta sufriendo algún tipo de escaneo, de tal forma que podamos anticiparnos y prevenir males mayores.
El scaneo o DoS contra nuestros servicios dejan rápidamente un rastro en tiempo real en nuestras máquinas debido a un incremento inmediato de recursos (cpu y memoria principalmente).
La idea es poder conocer en tiempo real, por ejemplo haciendo que nuestro sistema de monitorización nos envíe un e-mail en el momento que uno de nuestros servicios experimente un incremento inusual de su CPU o memoria.
Para ello vamos a montar una solución basada en la integración de diferentes aplicaciones de software libre: Nagios, check-mk, NagVis y pnp4, aunque el núcleo o core del sistema se basa en la aplicación Nagios y el paquete Check-mk.
¿Qué es Nagios?
Nagios a grandes rasgos es una solución de monitorización open source que permite la monitorización de máquinas y servicios, y notificar los cambios de estado que se producen en ellos.
Se compone de un núcleo desarrollado en C y de plugins y addons que son llamados por el núcleo bajo demanda.
Los plugins son independientes del núcleo por lo que pueden estar desarrollados en múltiples lenguajes.
Integración de soluciones
Existen variedad de soluciones de monitorización, incluso distribuciones como OMD la cual integra gran cantidad de servicios específicos para la monitorización de sistemas.
Nuestra idea es construir algo a nuestro gusto y medida, y totalmente controlado por nosotros.
Lo que haremos será integrar un conjunto de soluciones para disponer de una plataforma de monitorización robusta, escalable, con un entorno gráfico para la administración y gestión, que nos permita generar alertas y notificaciones bajo las circunstancias que definamos y además nos dé la posibilidad de obtener informes y reportes.
Vamos a utilizar los paquetes:
- Nagios Core.
- Nagios-plugins.
- Exim.
- Apache.
- Check-mk – Livestatus.
- Pnp4png.
- rrdtool.
- Nagvis.
Apoyándonos en el software Nagios como el core de nuestra plataforma, vamos a integrar Nagios con Check-mk.
Check-mk aporta un mayor rendimiento a la solución, automatización de la monitorización mediante agentes, sencillez para la administración y la integración bajo un mismo entorno gráfico de todas las aplicaciones que vamos a instalar.
Modo de operación
- Por cada host, Nagios realiza un check llamando a “check-mk” como si de un plugin cualquier se tratase.
- Check-mk conecta con un agente en el Host destino recogiendo en una sola vez todos los datos significativos.
- Check_mk carga la información de rendimiento en una BD rrd.
- Check_mk extrae los datos significativos comparándolos contra los niveles de Warning/Critical y los envía a Nagios mediante un check pasivo.
- Utilizaremos NagVis para la creación de mapas mediante los datos cargados en Nagios.
- Utilizaremos pnp4 para recoger la información de RRD y mostrarla en formato gráfico.
- Mediante check_msite integramos en una interfaz Web el acceso a todas las herramientas.
- El paquete check-mk incluye una herramienta llamada WATO, básicamente es un Interfaz Web para la creación sencilla de Host y Servicios y configuración de parámetros adicionales.
Fuente: https://mathias-kettner.de |
Instalación y configuración de la plataforma
En este apartado vamos a describir todos los comandos necesarios para poner en marcha la plataforma.
En cualquier caso es importante que reviséis las ultimas versiones estables en los sitios oficiales.
- sudo aptitude install apache2 libapache2-mod-php5 build-essential libgd2-xpm-dev php5-gd php5-gettext php5-mbstring mbstring php5-xmlrpc php5-sockets php-net-socket graphviz php5-sqlite libsnmp-perl libapache2-mod-python
- useradd -m -s /bin/bash nagios
- wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
- wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
tar zxvf nagios-3.2.3.tar.gz
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-3.2.3/
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users miusuario
/etc/init.d/apache2 reload
cd nagios-plugins-1.4.15/
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
make
make install
- Configurar Nagios para arrancar al iniciar el sistema
- Arrancar nagios
- Probar a acceder via web
http://192.168.1.1/nagios
- Descargar otros paquetes adicionales
- Paquete check-mk
- Paquete Nagvis (mapas de red)
- Paquete pnp4nagios (integración de gráficas de servicio)
Integración pnp4 con Nagios
- Instalar xinetd
- Instalar rrdtool
- Instalar pnp
- Descomprimir
cd pnp4nagios-0.6.15
./configure
make all
make install
make install-config
make install-init
make fullinstall
make install-webconf
- Habilitamos en apache el modulo rewrite
- Reiniciamos apache
- Editamos el archivo de configuración Nagios para activar el demonio pnp4nagios
- vi /usr/local/nagios/etc/nagios.cfg
Localizamos las líneas:
#broker_module=/somewhere/module1.o
#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
Añadimos justo debajo:
broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg
process_performance_data=1
Habilitar los comandos que procesan los datos:
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
Guardamos y salimos.
Comprobamos que existe el archivo: /usr/local/pnp4nagios/etc/npcd.cfg
Configuración de PNP4Nagios en español:
Editamos el fichero: /usr/local/pnp4nagios/etc/config.php
Localizamos estos valores y configuramos:
$conf['popup-width'] = "500px";
$conf['lang'] = "es_ES";
A continuación, debemos modificar el archivo de plantillas de nagios:
/usr/local/nagios/etc/objects/templates.cfg
Para añadir en la sección de HOSTS
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_
register 0
}
Y en SERVICES
define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}
En /usr/local/nagios/etc/objects/localhost.cfg
Añadiremos el uso de la plantilla que hemos configurado:
define host{
use linux-server,host-pnp
Al igual que en todos los servicios añadiremos el añadido de srv-pnp:
define service{
use local-service,srv-pnp ; Name of service template to use
host_name localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
Comprobamos que pnp4nagios se ha instalado correctamente:
http://192.168.1.1/pnp4nagios/
Si todo esta verde borrarmos el fichero:
rm /usr/local/pnp4nagios/share/install.php
Habilitar pop-up, copiamos el archivo status-header.ssi :
cp /usr/local/src/pnp4nagios-0.6.15/contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi/
El servicio tiene que estar arrancado:
/etc/init.d/
/etc/init.d/npcd start
El archivo de configuración esta: /usr/local/pnp4nagios/etc/npcd.cfg
Integración Nagios con Check_mk
cd check_mk-1.1.8
./setup.sh
- Todo por defecto.
- Reiniciar nagios y apache.
Please restart Nagios and Apache in order to update/active check_mk's web pages.
You can access the new Multisite GUI at http://localhost/check_mk/
Integración con Nagvis
La herramienta Nagvis nos va a permitir crear mapas y sobre ellos poder visionar los servicios/dispositivos que estamos monitorizando, podríamos llegar a construir un bonito cuadro de mando.
tar xzvf nagvis-1.5.9.tar.gz
chmod +x install.sh
./install.sh
Seleccionamos usar mklivestatus
Installation complete |
| |
| You can safely remove this source directory. |
| |
| For later update/upgrade you may use this command to have a faster update: |
| ./install.sh -n /usr/local/nagios -p /usr/local/nagvis -B /usr/local/nagios/bin/nagios -l "unix:/usr/local/nagios/var/rw/live" -b mklivestatus -u www-data -g www-data -w /etc/apache2/conf.d -a y
| |
| What to do next? |
| - Read the documentation |
| - Maybe you want to edit the main configuration file? |
| Its location is: /usr/local/nagvis/etc/nagvis.ini.php |
| - Configure NagVis via browser |
| <http://localhost/nagvis/config.php> |
| - Initial admin credentials: |
| Username: miusuario |
| Password: mipassword
- /etc/init.d/apache2 restart
- /etc/init.d/nagios restart
- Comprobamos: http://192.168.1.1/nagvis/
Plugins basados en SNMP
Nagios es una plataforma modular y junto con check-mk que dispone de inventariado automático snmp, es importante descargar a la plataforma Nagios las diferetnes MIBs, para ello:
sudo aptitude install snmp-mibs-downloader
Envío de notificaciones
Para el correcto envío de notificaciones la plataforma se apoya en un servidor de correo.
Instalamos exim4 por su facilidad de configuración, restringido al envio desde localhost.
apt-get install mailutils exim4
Instalación de agentes
El paquete check-mk dispone de agentes para plataformas Linux y Windows que pueden ser instalados en los equipos finales para la recolección de información.
Los agentes se encuentran en: /usr/share/check_mk/agents
Agentes para Linux
PASO 1: Instalación agente linux
Para instalarlo en un servidor destino Linux:
scp /usr/share/check_mk/agents/check_mk_agent.linux SERVIDOR-DESTINO-A-MONITORIZAR:/usr/bin/check_mk_agent
PASO 2:Instalación y configuración xinetd
Instalamos xinetd:
- apt-get update
- apt-get install xinetd
Configuramos xinetd para el agente:
Desde nuestra plataforma de monitorización por ejemplo aguila1.usj.es ejecutamos:
scp /usr/share/check_mk/agents/xinetd.conf HOST-DESTINO:/etc/xinetd.d/check_mk
En el HOST destino ejecutamos:
root@/etc/xinetd.d# /etc/init.d/xinetd restart
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.
chkconfig xinetd on
Y esto es todo, a divertirse porque la solución no tiene limites imaginables.
No hay comentarios:
Publicar un comentario