Tu firewall pfSense esta funcionando perfecto dejandote tiempo para hacer otras tareas y estas confiado, que malo puede pasar? Pasar, puede pasar que se dañe un disco o que estes bajo ataque y no te hayas dado cuenta, pueden pasar muchas cosas y preciso en el momento en que no estabas mirando logs o monitoreando tu confiable firewall. Por esto es que hoy te traigo este articulo en el que agregaremos una capa de monitoreo con NRPE a tu pfSense para incluirlo en Nagios. Todo como ya es costumbre en español, paso a paso y con screenshoots para que no te pierdas y puedas hacerlo fácilmente
-Vamos al menú System - Package Manager - Available Packages, escribimos en la caja de texto nrpe. Presionamos Enter y nos aparecerá debajo, le damos click a su botón verde Install
-Se nos pide confirmar la instalación. Damos click al botón verde Confirm
-Se instala con éxito el paquete nrpe en nuestro pfSense
-A continuación vamos al menú Services - NRPEv2 y le damos click
-En la pagina que nos aparecerá activamos el servicio Enable NRPE, permitimos parámetros activando Allow Arguments. Por default ya vendrán varios comandos activos para ejecutarlos via el daemon NRPE
-En la sección Commands las columnas tienen los significados, nombre (el que usaremos en los conf de nagios y solo permite caracteres de la a-z o A-Z en ese rango), ejecución con privilegios (sudo), listado de plugins instalados en el firewall pfSense (podemos escogerlos en su lista desplegable), parámetro warning (no es grave pero hay que prestar atención), parámetro critical (es grave), parámetros extras. Esta sección nos permite crear nuevos comandos o eliminar los ya creados por medio del botón Delete
-Escribimos un nombre (Nagios), Description (descripcion), Type (Host(s)) y por ultimo tenemos dos variantes, un hostname (en caso de que tengas tu equipo Nagios con un dominio y es visible en internet) o con la ip publica. Damos click al botón Save
-Seguidamente vamos al menú Firewall - Rules y agregamos una regla dando click al botón verde Add (sugiero que sea para colocarla al final)
-En la sección Source elegimos Single host or alias y escribimos Nagios (el alias que nos creamos en el paso anterior). En Destination elegimos WAN address y Destination port range any y any en la ultima columna. La explicación de la regla es que aceptaremos conexiones del equipo Nagios en la interfaz de red Wan por cualquier puerto. Escribimos un comentario sobre esta regla en Description y damos click al botón Save
Requerimientos para agregar pfSense a Nagios
- pfSense firewall 2.x instalado y actualizado a la fecha
- Nagios instalado y actualizado a la fecha
- Plugins de Nagios instalados y actualizados
- Conectividad a internet y entre ambos equipos
-Vamos al menú System - Package Manager - Available Packages, escribimos en la caja de texto nrpe. Presionamos Enter y nos aparecerá debajo, le damos click a su botón verde Install
-Se nos pide confirmar la instalación. Damos click al botón verde Confirm
-Se instala con éxito el paquete nrpe en nuestro pfSense
-A continuación vamos al menú Services - NRPEv2 y le damos click
-En la pagina que nos aparecerá activamos el servicio Enable NRPE, permitimos parámetros activando Allow Arguments. Por default ya vendrán varios comandos activos para ejecutarlos via el daemon NRPE
-En la sección Commands las columnas tienen los significados, nombre (el que usaremos en los conf de nagios y solo permite caracteres de la a-z o A-Z en ese rango), ejecución con privilegios (sudo), listado de plugins instalados en el firewall pfSense (podemos escogerlos en su lista desplegable), parámetro warning (no es grave pero hay que prestar atención), parámetro critical (es grave), parámetros extras. Esta sección nos permite crear nuevos comandos o eliminar los ya creados por medio del botón Delete
Permitimos trafico NRPE entre pfSense y Nagios
-Este paso solo es necesario si tu equipo Nagios esta fuera de la LAN y hará la conexión via internet (Si ambos equipos están en la LAN, no es necesario y puedes saltar al siguiente paso a crear los comandos NRPE). Creamos un Alias en el menú Firewall - Aliases. Damos click al botón verde +Add-Escribimos un nombre (Nagios), Description (descripcion), Type (Host(s)) y por ultimo tenemos dos variantes, un hostname (en caso de que tengas tu equipo Nagios con un dominio y es visible en internet) o con la ip publica. Damos click al botón Save
-Seguidamente vamos al menú Firewall - Rules y agregamos una regla dando click al botón verde Add (sugiero que sea para colocarla al final)
-En la sección Source elegimos Single host or alias y escribimos Nagios (el alias que nos creamos en el paso anterior). En Destination elegimos WAN address y Destination port range any y any en la ultima columna. La explicación de la regla es que aceptaremos conexiones del equipo Nagios en la interfaz de red Wan por cualquier puerto. Escribimos un comentario sobre esta regla en Description y damos click al botón Save
Creamos un comando NRPE en pfSense para monitorear con Nagios
-Para crear un comando nuevo damos click al botón inferior verde +Add y nos aparecerá uno en blanco en la parte inferior del listado. Para este articulo agregare un chequeo de https, entonces escribimos check_https (primera columna izquierda), activamos Sudo, elegimos check_http (tercera columna), dejamos en blanco la cuarta y quinta columna. Escribimos en la sexta columna -H pfgw -S (-H con el hostname del equipo y -S para que verifique via https). Damos click al botón SaveAgregamos pfSense Firewall a Nagios por medio de NRPE
-En nuestro servidor Nagios nos vamos al directorio de objects a crear definiciones
cd /usr/local/nagios/etc/objects
-Hacemos una copia del conf localhost creando uno nuevo para pfsense llamado firewall.cfg
cp localhost.cfg firewall.cfg
-Editamos templates.cfg y creamos una plantilla para pfSense (el dia de mañana puede que tengas otro que agregar a Nagios)
vi templates.cfg
# pfSense definition
define host{
name pfsense ;Nombre de la plantilla
use generic-host ;Basado en plantilla generic-host
check_period 24x7 ;Se chequea 24 horas por 7 dias
check_interval 5 ;Chequeo cada 5 minutos
retry_interval 1 ;Se reintenta en caso de fallo al minuto
max_check_attempts 10 ;Maximo se repite el chequeo 10 veces
check_command check-host-alive ;Comando a usar para verificar que el host este activo
notification_period 24x7 ;Enviar notificaciones 24 horas por 7 dias
notification_interval 120 ;Intervalo de envio de notificaciones de 120 minutos
notification_options d,u,r ;Opciones d (down) u (up) y r (recovery)
contact_groups admins ;Enviar notificaciones al grupo admins
register 0 ;No se registra al ser una plantilla
}
-Modificamos nuestro horario de trabajo
vi timeperiods.cfg
# 'workhours' Definición de horario laboral normal de 8am a 5pm de lunes a viernes
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 08:00-17:00
tuesday 08:00-17:00
wednesday 08:00-17:00
thursday 08:00-17:00
friday 08:00-17:00
}
-Editamos el cfg de firewall y creamos la definición de nuestro pfSense firewall (OJO, reemplazar las xxx por la ip real del equipo al igual que el hostname y alias). A continuacion creamos un hostgroup donde iremos agrupando a los firewalls que vayamos colocando en Nagios y comenzamos a crear uno por uno los comandos a ejecutar por medio de NRPE en el equipo remoto, en este caso, nuestro firewall (recuerda que nombre al equipo pfgw en su alias)
vi firewall.cfg
define host{
use pfsense ; Nombre de plantilla a usar
; Esta definición hereda variables de la plantilla
host_name pfgw.test.com
alias pfgw
address xxx.xxx.xxx.xxx ;IP del equipo
}
define hostgroup{
hostgroup_name firewalls ; Nombre del grupo
alias Firewall servers ; Nombre largo del grupo
members pfgw ; Lista separada por comas de equipos pertenecientes al grupo
}
#Usuarios / pfgw
define service{
use local-service
host_name pfgw
service_description Usuarios
check_command check_nrpe!check_users
}
#Carga / pfgw
define service{
use local-service
host_name pfgw
service_description Carga
check_command check_nrpe!check_load
}
#Particion / pfgw
define service{
use local-service
host_name pfgw
service_description Particion /
check_command check_nrpe!check_root
}
#Particion /var pfgw
define service{
use local-service
host_name pfgw
service_description Particion /var
check_command check_nrpe!check_var
}
#Procesos zombie pfgw
define service{
use local-service
host_name pfgw
service_description Procesos zombie
check_command check_nrpe!check_zombie_procs
}
#Total de procesos pfgw
define service{
use local-service
host_name pfgw
service_description Total de procesos
check_command check_nrpe!check_total_procs
}
#Https pfgw
define service{
use local-service
host_name pfgw
service_description Https
check_command check_nrpe!check_https
}
-Editamos nagios.cfg y agregamos una linea para incluir a firewall.cfg
vi ../nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/firewall.cfg
-Ya casi terminamos pero debemos verificar que todo nuestro trabajo esta ok y no tenemos errores en los archivos de configuracion de nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.1.1
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 08-19-2015
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 9 services.
Checked 2 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 25 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 2 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
-Reiniciamos el servicio de Nagios
systemctl restart nagios
-Abrimos un browser y navegamos a la pagina de nuestro Nagios Core. En ella ya debemos poder ver el equipo pfgw (pfSense) con todos los servicios que estamos chequeando via check_nrpe
Artículos recomendados: Que tanto usas tu proxy, Estadisticas de squid en pfsense 2
Como instalar y configurar pfSense Squid Transparent Proxy
pfSense SquidGuard tutorial paso a paso
Como actualizar pfSense paso a paso
Ahora si podemos decir que no estamos ciegos con respecto a que esta pasando en nuestro firewall pfSense. Gracias a NRPE podemos agregar mas chequeos dependiendo de nuestras necesidades. Te gusto el articulo? hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
-Hacemos una copia del conf localhost creando uno nuevo para pfsense llamado firewall.cfg
cp localhost.cfg firewall.cfg
-Editamos templates.cfg y creamos una plantilla para pfSense (el dia de mañana puede que tengas otro que agregar a Nagios)
vi templates.cfg
# pfSense definition
define host{
name pfsense ;Nombre de la plantilla
use generic-host ;Basado en plantilla generic-host
check_period 24x7 ;Se chequea 24 horas por 7 dias
check_interval 5 ;Chequeo cada 5 minutos
retry_interval 1 ;Se reintenta en caso de fallo al minuto
max_check_attempts 10 ;Maximo se repite el chequeo 10 veces
check_command check-host-alive ;Comando a usar para verificar que el host este activo
notification_period 24x7 ;Enviar notificaciones 24 horas por 7 dias
notification_interval 120 ;Intervalo de envio de notificaciones de 120 minutos
notification_options d,u,r ;Opciones d (down) u (up) y r (recovery)
contact_groups admins ;Enviar notificaciones al grupo admins
register 0 ;No se registra al ser una plantilla
}
-Modificamos nuestro horario de trabajo
vi timeperiods.cfg
# 'workhours' Definición de horario laboral normal de 8am a 5pm de lunes a viernes
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 08:00-17:00
tuesday 08:00-17:00
wednesday 08:00-17:00
thursday 08:00-17:00
friday 08:00-17:00
}
-Editamos el cfg de firewall y creamos la definición de nuestro pfSense firewall (OJO, reemplazar las xxx por la ip real del equipo al igual que el hostname y alias). A continuacion creamos un hostgroup donde iremos agrupando a los firewalls que vayamos colocando en Nagios y comenzamos a crear uno por uno los comandos a ejecutar por medio de NRPE en el equipo remoto, en este caso, nuestro firewall (recuerda que nombre al equipo pfgw en su alias)
vi firewall.cfg
define host{
use pfsense ; Nombre de plantilla a usar
; Esta definición hereda variables de la plantilla
host_name pfgw.test.com
alias pfgw
address xxx.xxx.xxx.xxx ;IP del equipo
}
define hostgroup{
hostgroup_name firewalls ; Nombre del grupo
alias Firewall servers ; Nombre largo del grupo
members pfgw ; Lista separada por comas de equipos pertenecientes al grupo
}
#Usuarios / pfgw
define service{
use local-service
host_name pfgw
service_description Usuarios
check_command check_nrpe!check_users
}
#Carga / pfgw
define service{
use local-service
host_name pfgw
service_description Carga
check_command check_nrpe!check_load
}
#Particion / pfgw
define service{
use local-service
host_name pfgw
service_description Particion /
check_command check_nrpe!check_root
}
#Particion /var pfgw
define service{
use local-service
host_name pfgw
service_description Particion /var
check_command check_nrpe!check_var
}
#Procesos zombie pfgw
define service{
use local-service
host_name pfgw
service_description Procesos zombie
check_command check_nrpe!check_zombie_procs
}
#Total de procesos pfgw
define service{
use local-service
host_name pfgw
service_description Total de procesos
check_command check_nrpe!check_total_procs
}
#Https pfgw
define service{
use local-service
host_name pfgw
service_description Https
check_command check_nrpe!check_https
}
-Editamos nagios.cfg y agregamos una linea para incluir a firewall.cfg
vi ../nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/firewall.cfg
-Ya casi terminamos pero debemos verificar que todo nuestro trabajo esta ok y no tenemos errores en los archivos de configuracion de nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.1.1
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 08-19-2015
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 9 services.
Checked 2 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 25 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 2 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
-Reiniciamos el servicio de Nagios
systemctl restart nagios
-Abrimos un browser y navegamos a la pagina de nuestro Nagios Core. En ella ya debemos poder ver el equipo pfgw (pfSense) con todos los servicios que estamos chequeando via check_nrpe
Artículos recomendados: Que tanto usas tu proxy, Estadisticas de squid en pfsense 2
Como instalar y configurar pfSense Squid Transparent Proxy
pfSense SquidGuard tutorial paso a paso
Como actualizar pfSense paso a paso
Ahora si podemos decir que no estamos ciegos con respecto a que esta pasando en nuestro firewall pfSense. Gracias a NRPE podemos agregar mas chequeos dependiendo de nuestras necesidades. Te gusto el articulo? hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
Sígueme en twitter , google+, facebook o email y podrás estar enterado de todas mis publicaciones.Monitorea #pfSense por medio de #NRPE y #Nagios ~ videoJuegos y Open Source https://t.co/AH0yXIAsiV pic.twitter.com/QS9fjSjMg4
— Manuel Cabrera C (@drivemeca) July 14, 2016
Disfrútenlo.