Monitoriza que la conexión a Internet de pfSense funciona bien

Monitoriza que la conexión a Internet de pfSense funciona bien

Sergio De Luz

Cuando tenemos una conexión a Internet con un sistema operativo orientado a entornos profesionales como pfSense, es totalmente necesario verificar externamente si la conexión a Internet está funcionando correctamente, para descartar problemas de configuración en los servidores VPN o en los túneles VPN que tengamos configurados. Gracias a UptimeRobot vamos a poder comprobar de forma remota si la conexión a Internet funciona bien, pero antes deberemos hacer unas configuraciones muy específicas en pfSense para que el sistema operativo no detecte falsos ataques.

¿Qué es UptimeRobot y cómo monitorizará la conexión?

UptimeRobot es un servicio web completamente gratuito que nos permitirá monitorizar la conexión a Internet de forma remota, este servicio dispone de decenas de servidores repartidos por todo el mundo, los cuales intentarán conectarse con nuestro equipo a través de TCP, UDP e incluso ICMP para comprobar que la conexión a Internet está funcionando correctamente. La versión gratuita nos permite comprobar hasta 50 host en intervalos de 5 minutos, suficiente para un entorno doméstico y para pequeñas y medianas empresas, aunque es posible que en tu empresa necesites saber más rápidamente si la conexión a Internet se cae. Si compras la versión premium podrás configurar intervalos de un minuto para comprobar si la conexión a Internet está funcionando bien, y dispondrás de más hosts para monitorizar, todo ello centralizado en la misma cuenta.

En RedesZone ya hemos hablado anteriormente de este servicio a fondo, sin embargo, si estamos utilizando un sistema operativo como pfSense, el cual es muy configurable y es capaz de detectar ataques de denegación de servicio y ataques por fuerza bruta, es posible que detecte estas conexiones como posibles ataques, y directamente bloquee la comunicación desde la IP de origen. Lo mismo ocurre si tenemos configurado un IDS/IPS en el propio pfSense, es posible que lo detecte como amenaza. Si el sistema operativo bloquea la dirección IP de origen y no «contesta» a UptimeRobot, entonces detectará que la conexión a Internet está caída, cuando realmente no lo está, dándonos una alerta falsa.

Una característica que nos ha gustado mucho de UptimeRobot, es que nos permitirá recibir avisos por email, Telegram, Twitter, Slack, Microsoft Teams y más, por lo que tendremos siempre una notificación de si existe algún problema. Además, siempre podremos instalar la app oficial de UptimeRobot para Android y iOS:

Una vez que ya sabemos todo lo que UptimeRobot puede hacer por nosotros, vamos a ver cómo configurar correctamente pfSense para evitar alertas de ataque falsas.

Configura pfSense para que UptimeRobot no sea bloqueado

Aunque UptimeRobot dispone de varios servidores repartidos por todo el mundo con el objetivo de monitorizar los diferentes hosts y evitar falsos positivos, en muchas ocasiones esto no es suficiente, sobre todo si tenemos muy bien configurado nuestro firewall pfSense. Todas las comprobaciones que realiza UptimeRobot se realizan desde Dallas-Estados Unidos, sin embargo, cuando se detecta una caída, el resto de nodos repartidos por el mundo comprobarán si realmente se ha caído la conexión o no. Sin embargo, en RedesZone hemos comprobado que esto no es suficiente si usas pfSense, ya que está continuamente diciéndonos que la conexión a Internet funciona correctamente, y que se ha caído, la comprobación está oscilando entre ambos estados.

En nuestro caso, la comprobación de si la conexión a Internet está levantada, la realizamos con unos «checks» en el servidor SSH del sistema operativo pfSense, el cual deberemos habilitar. Solo deberemos habilitar el servidor SSH y configurar un determinado puerto TCP de escucha, por ejemplo, el puerto 2222 para el SSH. Este puerto será accesible a través de Internet desde cualquier origen, con el objetivo de administrar el sistema operativo desde cualquier lugar.

Para solucionar el problema de los falsos positivos, debemos entrar en la interfaz web de configuración del sistema operativo de pfSense:

Nos vamos a la sección de SSH y nos aseguramos de que está habilitado, y que está escuchando en el puerto 2222, o en cualquier otro puerto.

En la sección de «Login protection», deberemos añadir todas y cada una de las redes y direcciones IP de origen de UptimeRobot. En esta «pass list» tendremos el listado de todas las direcciones IP de origen que pueden realizar «checks» contra el servidor web HTTPS o el servidor SSH configurado saltándose las restricciones del «login protection» que tenemos configurado.

En la web oficial de UptimeRobot tenemos el listado de todas las direcciones IP de origen que ellos utilizan, simplemente tendremos que ir introduciendo rango por rango o dirección IP por dirección IP. También tenemos las direcciones IPv6 que ellos usan, por si acaso en tu caso tienes IPv6 para acceder a Internet. Por último, también nos brindan un archivo txt con el listado de todas las direcciones IP para facilitar la configuración de los firewalls.

Cuando habilitamos el servidor SSH en el pfSense, si queremos que accedan desde Internet con cualquier dirección IP de origen, necesitaremos crear una regla en la sección de «Firewall / Rules«, en esta regla deberemos poner:

  • Action: Pass
  • Interface: WAN
  • Address Family: IPv4 y/o IPv6.
  • Protocol: TCP
  • Source: any
  • Destination: WAN Address
  • Destination Port Range: el puerto del servidor SSH donde está escuchando, en nuestro caso, el 2222.

También os recomendaríamos loguear todos los paquetes que reciba el firewall, activando la opción «Log packets that are handled by this rule», finalmente le daremos una descripción y pinchamos en guardar.

Antes de acabar, un detalle importante es que coloquéis la regla de pfSense en la sección WAN en el orden correcto, porque si tenemos una regla de denegar todo general por encima de esta regla específica, estarás bloqueando el tráfico y no funcionará desde el exterior.

Si ves los logs del sistema operativo, podrás ver la dirección IP de origen que está usando UptimeRobot, y también la dirección IP de destino y puerto (nosotros). Desde aquí podrás comprobar que cada 5 minutos está realizando una comprobación de si la conexión a Internet funciona correctamente, o mejor dicho, si el servidor SSH de pfSense es alcanzable a través de Internet.

Una vez que hemos visto cómo configurar correctamente pfSense, vamos a recordar cómo crear la regla en UptimeRobot para monitorizar nuestro pfSense.

Crear la regla de monitorización en UptimeRobot

Iniciamos sesión en UptimeRobot con nuestras credenciales, si nunca has usado esta herramienta, tendrás que registrarte en su versión «Free». En el menú principal podremos ver en la sección de la izquierda todas las reglas de monitorización creadas, pinchamos en «Add New Monitor» para crear una nueva regla.

El tipo de monitor que deberás usar es «Port», le damos un nombre descriptivo, ponemos «Port: Custom Port» para poner el puerto 2222 del servidor SSH que acabamos de configurar, y el intervalo de monitorización. En la versión gratuita de UptimeRobot nos permitirá un intervalo mínimo de 5 minutos, lógicamente, cuantas más comprobaciones realice antes nos avisará de que ha habido un problema con la conexión a Internet, pero esto solo está disponible en la versión de pago.

No debes olvidar seleccionar las alertas a enviar, podremos recibir una alerta por email, Telegram u otro servicio, siempre que lo hayas dado de alta anteriormente.

Una vez que hayamos terminado, pinchamos en «Create Monitor» y ya tendremos UptimeRobot funcionando. Ahora deberás revisar en pfSense que has recibido correctamente el paquete, comprobando los logs del firewall en la sección WAN, puedes filtrar los logs poniendo el puerto de destino 2222 que es el puerto del SSH, también podrás comprobar que la dirección IP de origen está dentro del rango de direcciones IP que os hemos indicado anteriormente.

¿Puedo limitar las conexiones SSH solamente a UptimeRobot?

Si quieres habilitar el servidor SSH solamente para las direcciones de UptimeRobot, con el objetivo de comprobar si la conexión a Internet funciona bien, podrás limitar las conexiones SSH a través de la regla en el firewall. Si nos vamos a «Firewall / Aliases» podrás crear un alias con todas las direcciones IP de origen de UptimeRobot, para facilitar enormemente la configuración de la regla. Podemos poner la URL con el archivo de texto que os hemos proporcionado anteriormente, y lo ponemos directamente en el Aliases de URL (IP):

Gracias a esto, podremos incorporar todas las direcciones IPv4 y IPv6 automáticamente y sin necesidad de ir una por una, para facilitar enormemente la configuración. Tal y como podéis ver, en la sección de Aliases / URLs nos aparecerán ya cargadas estas direcciones IP públicas d eorigen que usa UptimeRobot:

Ahora tendríamos que editar la regla de SSH, y definir:

  • Address Family: IPv4 y IPv6, para cubrir también las direcciones IPv6.
  • Source – Single host or alias: IP_UptimeRobot

Y pinchamos en «Save» y en aplicar cambios. Ahora mismo solamente tendría acceso al servidor SSH las direcciones IP de origen definidas en el aliases, que se corresponden con las direcciones IP de UptimeRobot, para no dejar el servidor SSH expuesto a todo el mundo.

Gracias a UptimeRobot y una buena configuración en pfSense para evitar falsos positivos, podrás comprobar que la conexión a Internet funciona correctamente y no tienes una incidencia. Por supuesto, lo más recomendable es poner el dominio DNS dinámico en el propio UptimeRobot, porque si tienes una IP pública dinámica cambiará cada cierto tiempo, y podrás obtener falsos positivos de pérdida de conectividad.