¿Qué es Nagios? Es una aplicación muy completa para monitorear los servicios y procesos asociados a tu red. Permite el monitoreo de diversos servicios, tanto a nivel cliente como servidor, así como los puertos en donde se alojan los servicios de tu red.
¿Qué es Nagios?
Éste software es una aplicación que te permite el monitoreo de recursos, procesos, servicios de red, detección de problemas, etc. Es una herramienta robusta y de alto alcance, tal y como se describe en su sitio web: http://www.nagios.org.
Algunas de sus características principales son las siguientes:
- Monitorear los servicios de red, por ejemplo: SMTP, POP3, HTTP, HTTPS, PING, NNTP, entre otros.
- Monitoreo de los recursos de la computadora en general, por ejemplo, carga del procesador, uso de disco, de memoria, etc.
- Permite la detección plug-in de dispositivos, así también muestra cuando un dispositivo o equipo de la red es inalcanzable.
- Envío de notificaciones al presentarse un problema. La notificación puede ser registrada a través de un fichero o email.
- Establecer manejadores de eventos para los servicios, con el objetivo de encontrar una solución.
- Soporte de implementación de monitoreo redundante en los equipos, así como mostrar logs de éstos.
- Mantener un historial de problemas, status del monitoreo de red, entre otras funcionalidades.
Componentes de Nagios
El servicio cuenta con varias partes que te permiten tener un monitoreo completo del sistema.
- Tiene una amplia gamma de componentes (plugins) para permitirte personalizar tus reportes.
- El daemon mantiene un servicio latente para verificar los servicios y sus puertos.
- Cuenta con un CGI (Common Gateway Interface), el cual es un programa opcional que permite agregar una mejora a tu sistema de monitoreo a través de un cliente.
Anatomía de Nagios
Para entender cómo funciona éste software, es importante mostrar cómo se encuentra organizado éste software, tanto es su configuración, así como sus tipos de objeto, para facilitarte su uso.
Archivo de configuración web
El archivo de configuración para la interfaz web se llama nagios.conf. Éste archivo contiene todas las directivas de configuración para iniciar el directorio de trabajo de la aplicación, el cual se activa al reiniciar el servidor web apache después de establecer la configuración.
La ubicación por defecto del archivo de configuración está en la ruta:
- /etc/httpd/conf.d/nagios.conf (Para distribuciones basadas en Redhat o CentOS)
- /etc/apache2/conf.d/nagios.conf (Para distribuciones tipo Debian o Ubuntu)
La configuración del archivo contiene directivas muy similares a las de apache. Una configuración predeterminada podría ser la siguiente:
ScriptAlias /nagios/cgi-bin "/usr/lib/nagios/cgi" <Directory "/usr/lib/nagios/cgi"> Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Acceso a Nagios" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user Alias /nagios "/usr/share/nagios" <Directory "/usr/share/nagios"> Options None AllowOverride None Order allow,deny Allow from all AuthName "Acceso a Nagios" AuthType Basic AuthUserFile /etc/nagios/htpasswd.users Require valid-user </Directory>
Fichero de contraseñas
Como vimos en el archivo de configuración anterior, se requiere un archivo de contraseñas para autenticar al usuario. El archivo puede ser generado con el comando htpasswd de la siguiente forma:
htpasswd -c /etc/nagios/htpasswd.users admin
El cual nos solicitará introducir una nueva contraseña para el usuario nagadmin, la cuál será guardada en el archivo /etc/nagios/htpasswd.users. Si ya existe el fichero, omitimos escribir la opción -c.
Instalación de Nagios
Finalmente hemos llegado al punto de realizar las instalación del paquete. De acuerdo a nuestra distribución y versión del sistema operativo, la instrucción para llevar a cabo la instalación del paquete y sus dependencias es el siguiente:
Instalación en distribuciones Red Hat o Fedora
yum install nagios nagios-plugins nagios-plugins-nrpe nagios-devel
Instalación desde el código fuente
También es posible realizar la compilación e instalación directamente utilizando el release actual desde el sitio oficial. Lo descargamos utilizando wget o curl.
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz
Ahora descomprimimos el paquete tar.gz y vamos al directorio de trabajo.
tar xzf nagios-4.4.5.tar.gz
cd nagioscore-nagios-4.4.5/
Configuramos el paquete, al cual habilitamos el directorio del sitio httpd en donde se procesarán las instrucciones del cliente a través de la GUI, después compilamos con el conocido comando para Makefiles.
sudo ./configure –with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
En éste momento instalamos ahora los grupos necesarios para el funcionamiento de nagios, en donde en el caso de Debian, Ubuntu o distribuciones similares, utilizamos www-data como el grupo, mientras que para Red Hat, Fedora o CentOS, utilizamos el usuario apache (o nginx).
sudo make install-groups-users
sudo usermod -a -G nagios www-data
Ahora procedemos a colocar los usuarios dentro de los directorios por default para que tanto el daemon, como el cliente puedan acceder a sus políticas de configuración. Ese es finalmente el objetivo del make install.
sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config
sudo make install-webconf
Ahora activamos el módulo rewrite. En el caso de Debian o Ubuntu con Apache, utilizamos a2enmod para activar los módulos rewrite, cgi.
sudo a2enmod rewrite cgi
Por último reiniciamos el servidor web, para tener acceso al servicio de monitores a través de la ruta indicada en la configuración de Apache.
systemctl restart apache2
Archivo de configuración CGI
El archivo de configuración cgi.cfg contiene la configuración que debe tener el sistema para permitir el acceso a la información, comandos, configuración, procesos y servicios de Nagios, éste archivo lo puedes crear en /etc/nagios y editar con vim o con nano.
Un contenido estándar para el archivo cgi.cfg podría ser el mostrado a continuación:
# Uso de autenticación use_authentication=1 # Acceso al sistema o proceso de información authorized_for_system_information=nagadmin # Acceso a la información de configuración authorized_for_configuration_information=nagadmin # Acceso al sistema o proceso de comandos authorized_for_system_commands=nagadmin # Acceso al host global y servicio de vista authorized_for_all_services=nagadmin authorized_for_all_hosts=nagadmin # Acceso al host global y servicio de comandos authorized_for_all_service_commands=nagadmin authorized_for_all_host_commands=nagadmin
Como verás en éste archivo se manejan las autorizaciones para el servicio, en donde estamos proporcionando un acceso total al usuario “nagadmin” a todas las funcionalidades del servicio.
Archivo de configuración nagios.cfg
El archivo nagios.cfg contiene las directivas de configuración que se establecerán al servicio. Pueden configurarse en un solo archivo único, o a través de otros archivos derivados, por ejemplo:
# archivos de configuración cfg_file=/etc/nagios/contactgroups.cfg cfg_file=/etc/nagios/contacts.cfg cfg_file=/etc/nagios/hostgroups.cfg cfg_file=/etc/nagios/hosts.cfg cfg_file=/etc/nagios/services.cfg cfg_file=/etc/nagios/timeperiods.cfg # opciones de comandos externas check_external_commands=1 # comando externo para verificar intervalo command_check_interval=1
Evidentemente cada archivo de configuración derivado debe ser creado con anterioridad, por ejemplo con el comando touch, así como darle el propietario y grupo con el comando chown;
touch /etc/nagios/[nombre_archivo].cfg
chown nagios:nagios /etc/nagios/[nombre_archivo].cfg
En forma recursiva para cada uno de los archivos especificados en el archivo de configuración.
Configuración de archivos adicionales
Adicionalmente se pueden configurar las siguientes propiedades del objeto:
- Lapsos de tiempo.
- Contactos y sus grupos.
- Anfitriones y sus grupos.
- Servicios ofrecidos.
Para personalizar cada uno de éstos servicios, o establecer una configuración diferente a la predeterminada, puedes consultar la guía en la wiki de Centos, configuración también aplicable a otros entornos y distribuciones de Linux.
Inicialización del servicio
Para iniciar el servicio, primero verificamos que la configuración esté correcta e inicializamos utilizando los comandos:
chkconfig nagios on nagios -v nagios.cfg
Si no hay errores en la sintaxis de la configuración, podemos iniciar el servicio con systemctl:
systemctl start nagios
Con lo cual nuestro monitor queda iniciado. En éste momento el deamon se encuentra en ejecución y puedes empezar a monitorear tus procesos, servicios, red, etc.
Otros temas de seguridad recomendados
También te recomendamos aprender sobre los siguientes temas enfocados a la seguridad: