Instale y configure pfBlockerNg para DNS Black Listing en pfSense Firewall


En un artículo anterior se discutió la instalación de una poderosa solución de firewall basada en FreeBSD conocida como pfSense. pfSense, como se mencionó en el artículo anterior, es una solución de firewall muy poderosa y flexible que puede hacer uso de una computadora vieja que puede estar tirada sin hacer mucho.

Este artículo hablará sobre un maravilloso paquete complementario para pfsense llamado pfBlockerNG.

pfBlockerNG es un paquete que se puede instalar en pfSense para proporcionar al administrador del firewall la capacidad de extender las capacidades del firewall más allá del firewall tradicional L2/L3/L4 con estado.

A medida que las capacidades de los atacantes y los ciberdelincuentes continúan avanzando, también deben hacerlo las defensas que se implementan para frustrar sus esfuerzos. Como ocurre con cualquier cosa en el mundo de la informática, no existe una única solución que solucione todos los productos que existen.

pfBlockerNG proporciona a pfSense la capacidad del firewall para permitir/denegar decisiones basadas en elementos como la geolocalización de una dirección IP, el nombre de dominio de un recurso o las calificaciones de Alexa de sitios web particulares.

La capacidad de restringir elementos como nombres de dominio es muy ventajosa, ya que permite a los administradores frustrar los intentos de las máquinas internas que intentan conectarse a dominios defectuosos conocidos (en otras palabras, dominios que se sabe que tienen malware, contenido ilegal u otros datos insidiosos).

Esta guía le explicará cómo configurar un dispositivo de firewall pfSense para usar el paquete pfBlockerNG, así como algunos ejemplos básicos de listas de bloqueo de dominio que se pueden agregar/configurar en la herramienta pfBlockerNG.

Este artículo hará un par de suposiciones y se basará en el artículo de instalación anterior sobre pfSense. Los supuestos serán los siguientes:

  • pfSense ya está instalado y no tiene reglas configuradas actualmente (pizarra limpia).
  • El firewall solo tiene un puerto WAN y un puerto LAN (2 puertos).
  • El esquema de IP que se utiliza en el lado de la LAN es 192.168.0.0/24.

Cabe señalar que pfBlockerNG se puede configurar en un cortafuegos pfSense ya en ejecución/configurado. La razón de estas suposiciones aquí es simplemente por el bien de la cordura y muchas de las tareas que se completarán aún se pueden realizar en una caja pfSense de pizarra no limpia.

La siguiente imagen es el diagrama de laboratorio para el entorno pfSense que se utilizará en este artículo.

Instalar pfBlockerNG para pfSense

Con el laboratorio listo para funcionar, ¡es hora de comenzar! El primer paso es conectarse a la interfaz web del cortafuegos pfSense. Nuevamente, este entorno de laboratorio está utilizando la red 192.168.0.0/24 con el firewall actuando como puerta de enlace con una dirección de 192.168.0.1. El uso de un navegador web y la navegación a "https://192.168.0.1" mostrará la página de inicio de sesión de pfSense.

Algunos navegadores pueden quejarse del certificado SSL, esto es normal ya que el certificado está autofirmado por el cortafuegos pfSense. Puede aceptar con seguridad el mensaje de advertencia y, si lo desea, se puede instalar un certificado válido firmado por una CA legítima, pero está fuera del alcance de este artículo.

Después de hacer clic con éxito en "Avanzado" y luego en "Agregar excepción ...", haga clic para confirmar la excepción de seguridad. A continuación, se mostrará la página de inicio de sesión de pfSense y permitirá que el administrador inicie sesión en el dispositivo de firewall.

Una vez que haya iniciado sesión en la página principal de pfSense, haga clic en el menú desplegable "Sistema" y luego seleccione "Administrador de paquetes".

Al hacer clic en este enlace, se cambiará a la ventana del administrador de paquetes. La primera página que se cargará serán todos los paquetes instalados actualmente y estará en blanco (nuevamente, esta guía asume una instalación limpia de pfSense). Haga clic en el texto "Paquetes disponibles" para obtener una lista de paquetes instalables para pfSense.

Una vez que se cargue la página "Paquetes disponibles", escriba "pfblocker" en el cuadro "Término de búsqueda" y haga clic en "Buscar". El primer elemento que se devuelve debe ser pfBlockerNG. Busque el botón "Instalar" a la derecha de la descripción de pfBlockerNG y haga clic en "+" para instalar el paquete.

La página se recargará y solicitará al administrador que confirme la instalación haciendo clic en "Confirmar".

Una vez confirmado, pfSense comenzará a instalar pfBlockerNG. ¡No navegue fuera de la página del instalador! Espere hasta que la página muestre una instalación exitosa.

Una vez que se ha completado la instalación, puede comenzar la configuración de pfBlockerNG. Sin embargo, la primera tarea que debe completarse son algunas explicaciones sobre lo que sucederá una vez que pfBlockerNG esté configurado correctamente.

Una vez que pfBlockerNG está configurado, las solicitudes de DNS para sitios web deben ser interceptadas por el firewall pfSense que ejecuta el software pfBlockerNG. pfBlockerNG tendrá listas actualizadas de dominios defectuosos conocidos que se asignan a una dirección IP incorrecta.

El cortafuegos pfSense necesita interceptar las solicitudes de DNS para poder filtrar los dominios defectuosos y utilizará un sistema de resolución de DNS local conocido como UnBound. Esto significa que los clientes de la interfaz LAN deben utilizar el cortafuegos pfSense como resolución de DNS.

Si el cliente solicita un dominio que está en las listas de bloqueo de pfBlockerNG, pfBlockerNG devolverá una dirección IP falsa para el dominio. ¡Comencemos el proceso!

Configuración de pfBlockerNG para pfSense

El primer paso es habilitar la resolución de DNS UnBound en el cortafuegos pfSense. Para hacer esto, haga clic en el menú desplegable "Servicios" y luego seleccione "Resolución de DNS".

Cuando la página se vuelva a cargar, la configuración general del resolutor de DNS será configurable. Esta primera opción que debe configurarse es la casilla de verificación "Habilitar el solucionador de DNS".

La siguiente configuración es establecer el puerto de escucha de DNS (normalmente el puerto 53), configurar las interfaces de red en las que el solucionador de DNS debe escuchar (en esta configuración, debe ser el puerto LAN y Localhost), y luego configurar el puerto de salida (debe ser WAN en esta configuración).

Una vez que se hayan realizado las selecciones, asegúrese de hacer clic en "Guardar" en la parte inferior de la página y luego haga clic en el botón "Aplicar cambios" que aparecerá en la parte superior de la página.

El siguiente paso es el primer paso en la configuración de pfBlockerNG específicamente. Navegue a la página de configuración de pfBlockerNG en el menú "Firewall" y luego haga clic en "pfBlockerNG".

Una vez que se haya cargado pfBlockerNG, primero haga clic en la pestaña "DNSBL" para comenzar a configurar las listas de DNS antes de activar pfBlockerNG.

Cuando se cargue la página "DNSBL", habrá un nuevo conjunto de menús debajo de los menús de pfBlockerNG (resaltados en verde a continuación). El primer elemento que debe abordarse es la casilla de verificación "Habilitar DNSBL" (resaltada en verde a continuación).

Esta casilla de verificación requerirá que se utilice el sistema de resolución de DNS UnBound en la casilla pfSense para inspeccionar las solicitudes de dns de los clientes LAN. No se preocupe, UnBound se configuró antes, ¡pero esta casilla deberá estar marcada! El otro elemento que debe completarse en esta pantalla es la "IP virtual DNSBL".

Esta IP debe estar en el rango de la red privada y no una IP válida en la red en la que se utiliza pfSense. Por ejemplo, una red LAN en 192.168.0.0/24 podría usar una IP de 10.0.0.1 ya que es una IP privada y no forma parte de la red LAN.

Esta IP se utilizará para recopilar estadísticas y monitorear los dominios que están siendo rechazados por pfBlockerNG.

Al desplazarse hacia abajo en la página, hay algunas configuraciones más que vale la pena mencionar. La primera es la "Interfaz de escucha DNSBL". Para esta configuración, y la mayoría de las configuraciones, esta configuración debe establecerse en "LAN".

La otra configuración es "Lista de acciones" en "Configuración del cortafuegos IP DNSBL". Esta configuración determina lo que debe suceder cuando una fuente DNSBL proporciona direcciones IP.

Las reglas de pfBlockerNG se pueden configurar para realizar cualquier cantidad de acciones, pero lo más probable es que "Denegar ambos" sea la opción deseada. Esto evitará las conexiones entrantes y salientes a la IP/dominio en la fuente DNSBL.

Una vez seleccionados los elementos, desplácese hasta la parte inferior de la página y haga clic en el botón "Guardar". Una vez que la página se recarga, es hora de configurar las Listas de Bloqueos de DNS que se deben usar.

pfBlockerNG proporciona al administrador dos opciones que se pueden configurar de forma independiente o en conjunto, según las preferencias del administrador. Las dos opciones son alimentaciones manuales de otras páginas web o EasyLists.

Para leer más sobre las diferentes EasyLists, visite la página de inicio del proyecto: https://easylist.to/

Configurar pfBlockerNG EasyList

Analicemos y configuremos las EasyLists primero. La mayoría de los usuarios domésticos encontrarán que estas listas son suficientes, así como las menos onerosas desde el punto de vista administrativo.

Las dos EasyLists disponibles en pfBlockerNG son "EasyList w/o Element Hiding" y "EasyPrivacy". Para utilizar una de estas listas, primero haga clic en "DNSBL EasyList" en la parte superior de la página.

Una vez que se vuelva a cargar la página, la sección de configuración de EasyList estará disponible. Deberán configurarse los siguientes ajustes:

  • Nombre del grupo DNS: elección del usuario, pero sin caracteres especiales
  • Descripción: elección del usuario, se permiten caracteres especiales
  • Estado de EasyList Feeds: si se utiliza la lista configurada
  • EasyList Feed: se puede agregar qué lista usar (EasyList o EasyPrivacy).
  • Encabezado/Etiqueta: elección del usuario, pero sin caracteres especiales

La siguiente sección se utiliza para determinar qué partes de las listas se bloquearán. Nuevamente, todos estos son preferencias del usuario y se pueden seleccionar varios si se desea. Los ajustes importantes en "DNSBL - EasyList Settings" son los siguientes:

  • Categorías: se pueden seleccionar varias preferencias del usuario y
  • Acción de lista: debe configurarse como "Sin vincular" para inspeccionar las solicitudes de DNS.
  • Frecuencia de actualización: con qué frecuencia pfSense actualizará la lista de sitios defectuosos

Cuando la configuración de EasyList esté configurada según las preferencias del usuario, asegúrese de desplazarse hasta la parte inferior de la página y haga clic en el botón "Guardar". Una vez que la página se recargue, desplácese hasta la parte superior de la página y haga clic en la pestaña "Actualizar".

Una vez en la pestaña de actualización, marque el botón de opción para "Recargar" y luego marque el botón de opción para "Todo". Esto se ejecutará a través de una serie de descargas web para obtener las listas de bloqueo seleccionadas anteriormente en la página de configuración de EasyList.

Esto debe hacerse manualmente, de lo contrario, las listas no se descargarán hasta la tarea cron programada. Siempre que se realicen cambios (listas agregadas o eliminadas) asegúrese de ejecutar este paso.

Mire la ventana de registro a continuación para ver si hay errores. Si todo salió según lo planeado, las máquinas cliente en el lado LAN del firewall deberían poder consultar el firewall pfSense en busca de sitios defectuosos conocidos y recibir direcciones IP incorrectas a cambio. Una vez más, las máquinas cliente deben configurarse para usar el cuadro pfsense como su resolución de DNS.

Observe en el nslookup anterior que la URL devuelve la IP falsa configurada anteriormente en las configuraciones de pfBlockerNG. Este es el resultado deseado. Esto daría lugar a que cualquier solicitud a la URL "100pour.com" se dirija a la dirección IP falsa de 10.0.0.1.

Configurar fuentes DNSBL para pfSense

A diferencia de AdBlock EasyLists, también existe la posibilidad de utilizar otras listas negras de DNS dentro de pfBlockerNG. Hay cientos de listas que se utilizan para rastrear el comando y control de malware, spyware, adware, nodos tor y todo tipo de otras listas útiles.

Estas listas a menudo se pueden incluir en pfBlockerNG y también se pueden usar como listas negras de DNS adicionales. Hay bastantes recursos que proporcionan listas útiles:

  • https://forum.pfsense.org/index.php?topicu003d114499.0
  • https://forum.pfsense.org/index.php?topicu003d102470.0
  • https://forum.pfsense.org/index.php?topicu003d86212.0

Los enlaces anteriores proporcionan hilos en el foro de pfSense donde los miembros han publicado una gran colección de la lista que utilizan. Algunas de las listas de favoritos del autor incluyen las siguientes:

  • http://adaway.org/hosts.txt
  • http://www.malwaredomainlist.com/hostslist/hosts.txt
  • http://pgl.yoyo.org/adservers/serverlist.php?hostformatu003dhosts&mimetypeu003dplaintext
  • https://zeustracker.abuse.ch/blocklist.php?downloadu003ddomainblocklist
  • https://gist.githubusercontent.com/BBcan177/4a8bf37c131be4803cb2/raw

Una vez más, hay toneladas de otras listas y el autor recomienda encarecidamente que las personas busquen más/otras listas. Sin embargo, continuemos con las tareas de configuración.

El primer paso es volver al menú de configuración de pfBlockerNG a través de "Firewall" -> "pfBlockerNG" -> "DSNBL".

Una vez en la página de configuración de DNSBL, haga clic en el texto "Fuentes de DNSBL" y luego haga clic en el botón "Agregar" una vez que se actualice la página.

El botón Agregar permitirá al administrador agregar más listas de direcciones IP o nombres DNS incorrectos al software pfBlockerNG (los dos elementos que ya están en la lista son de prueba del autor). El botón Agregar lleva al administrador a una página donde se pueden agregar listas DNSBL al firewall.

Las configuraciones importantes en esta salida son las siguientes:

  • Nombre del grupo DNS: elegido por el usuario
  • Descripción: útil para mantener los grupos organizados
  • Configuración de DNSBL: estas son las listas reales
    • Indique: si esa fuente se utiliza o no y cómo se obtiene
    • Fuente: el enlace/fuente de la Lista negra de DNS
    • Encabezado/Etiqueta: elección del usuario; sin caracteres especiales

    Una vez que se hayan establecido estas configuraciones, haga clic en el botón Guardar en la parte inferior de la página. Al igual que con cualquier cambio en pfBlockerNG, los cambios entrarán en vigencia en el siguiente intervalo cron programado o el administrador puede forzar manualmente una recarga navegando a la pestaña 'Actualizar', haga clic en el botón de opción 'Recargar' y luego haga clic en 'Todo' boton de radio. Una vez seleccionados, haga clic en el botón "Ejecutar".

    Mire la ventana de registro a continuación para ver si hay errores. Si todo salió según lo planeado, pruebe que las listas estén funcionando simplemente intentando hacer un nslookup desde un cliente en el lado de lan a uno de los dominios enumerados en uno de los archivos de texto usados en la configuración de DNSBL.

    Como se puede ver en el resultado anterior, el dispositivo pfSense está devolviendo la dirección IP virtual que se configuró en pfBlockerNG como la IP incorrecta para los dominios de la lista negra.

    En este punto, el administrador podría continuar ajustando las listas agregando más listas o creando listas personalizadas de dominios/IP. pfBlockerNG continuará redirigiendo estos dominios restringidos a una dirección IP falsa.

    Gracias por leer este artículo sobre pfBlockerNG. Muestre su agradecimiento o apoyo al software pfSense, así como a pfBlockerNG, contribuyendo de todas las formas posibles al desarrollo continuo de estos dos maravillosos productos. Como siempre, comente a continuación con cualquier sugerencia o pregunta.