Monitorear un PfSense con Nagios

Había una vez, una empresa que tenía sus oficinas en Dontor Kuato y una planta en el interior del país, en el pueblo de La Despedida. Desde esa planta, se conectaban a través de una vpn (openvpn) a Dontor Kuato para alcanzar un TS y así poder utilizar... sufrir... las bondades de un ERP. Uno muy malo que genera muchos puestos de trabajo.

Tanto en Dontor Kuato como en La Despedida, un pfsense se ocupa del firewall y vpn. Servidor en .dk y cliente en .ld. Ahora bien, en .dk tenemos un Nagios. Divino. Pero.. ¿Podría monitorear el cliente VPN de LD y ver si llega a pinguear el servidor TS para correr el cliente del ERP? Sí, se puede.

La idea es instalar el demonio NRPE v2 en La Despedida, crear los comandos que hagan falta, una regla de nateo en el pfsense de Dontor Kuato para que las respuesta del pfsense de La Despedida lleguen al Nagios y por último, la configuración del Nagios.

En el pfsense de La Despedida

1. Ir a System -> Packages e instalar NRPE v2

2. Solo para la versión 1.2.3: Editar el archivo /usr/local/pkg/nrpe2.inc y modificar la línea que comienza así: $cmds[] = "command[{$cmd['name']}... por 

$cmds[] = "command[{$cmd['name']}]={$nagios_check_path}/{$cmd['warning']} -c {$cmd['critical']} {$cmd['extra']}\n";

Este hack es porque hay un misterio en la variable $cmd['command'] que lo quise dejar sin develar. Entonces, ahora pongo en el campo "Warning Level" de la GUI de pfsense el comando + el Warning Level

3. Crear un comando en Services -> NRPE v2. Para comprobar la conexión desde La Despedida hasta Dontor Kuato, usé check_icmp a la ip privada del TS donde corre el cliente del ERP. En mi caso, esta seria la configuración de mi comando nuevo donde 172.16.4.121 es la ip del ERP:

Name: check_vpn_erp

Command: check_icmp

Warning Level: 40ms,25%

Critical Level: 10ms,10%

Extra Options: -H 172.16.4.121

Configuración del Nagios

1. Creamos el "objeto" para el firewall de La Despedida y su servicio

define host { 
  use         linux-server 
  host_name   ladespedida_fw 
  alias       ladespedida_fw 
  address     ip_publica_de_la_despedida 
}
 
define service{ 
  use                 local-service 
  host_name           ladespedida_fw 
  service_description vpn la despedida 
  check_command       check_nrpe!check_vpn_erp 
}

2. Creamos una regla de NAT en el pfsense de Dontor Kuato (porque el Nagios está atrás del Firewall) para que el cliente, instalado en el pfsense de La Despedida llegue al Nagios.

3. Reiniciamos Nagios.

4. A disfrutar.