Cómo configurar el filtrado IP y el «blackholing» DNS en pfSense utilizando pfBlockerNG

Marc Dahan

By Marc Dahan . 5 diciembre 2023

Cybersecurity Journalist

Miklos Zoltan

Fact-Checked this

pfSense es una solución de firewall/ruteador de código abierto muy potente. Basado en FreeBSD, pfSense tiene un enfoque fuerte en seguridad. Incluso en una configuración «vanilla» (básica), pfSense será mucho más seguro que cualquier ruteador que puedas comprar en una tienda.

Por defecto, pfSense ofrece muchas herramientas para personalizar la configuración de tu red segura. Pero además de sus herramientas predeterminadas, pfSense también cuenta con un repositorio de paquetes adicionales que puedes instalar para mejorar aún más tu configuración.

En este post, nos centraremos en pfBlockerNG. pfBlockerNG es un paquete opcional disponible para pfSense. Lo que hace pfBlockerNG es esencialmente ampliar la funcionalidad del firewall de pfSense dándote la habilidad de ajustar finamente las conexiones entrantes y salientes usando listas de bloqueo IP y DNS.

Guía relacionada: Cómo bloquear anuncios en todos tus dispositivos con pfSense, Squid & SquidGuard

Resumen breve del artículo:
pfSense es una robusta solución de firewall/ruteador de código abierto basada en FreeBSD, ofreciendo un nivel de seguridad más alto que los ruteadores comerciales.
Además de sus herramientas predeterminadas, pfSense ofrece paquetes adicionales como pfBlockerNG, que mejora la funcionalidad del firewall permitiendo el ajuste fino de conexiones entrantes y salientes usando listas de bloqueo IP y DNS.

Los dos usos principales de pfBlockerNG incluyen filtrar el tráfico entrante y saliente contra listas IP y aplicar restricciones GeoIP, y bloquear anuncios y sitios maliciosos a través del filtrado DNS.

Al verificar las solicitudes DNS contra listas de bloqueo, pfBlockerNG evita el acceso a contenido perjudicial y sirve como una solución eficiente de bloqueo de anuncios sin la necesidad de un servidor proxy.

Cómo configurar el filtrado IP

¿Qué es pfBlockerNG?

pfBlockerNG tiene dos usos principales:

Filtrado de tráfico entrante y saliente

pfBlockerNG puede filtrar el tráfico entrante y saliente contra listas IP y aplicar restricciones GeoIP permitiendo o negando el tráfico hacia/desde países específicos. Esta última funcionalidad puede ser muy útil si abres puertos en tu WAN.

Bloqueo de anuncios y sitios maliciosos a través de «blackholing» DNS

pfBlockerNG puede bloquear anuncios y el acceso a sitios maliciosos a través de filtrado DNS. Al navegar por la web, tus solicitudes DNS se comprueban contra una lista de bloqueo. Si hay una coincidencia, la solicitud se bloquea. Es una excelente manera de bloquear anuncios sin usar un servidor proxy.

Vamos a echar un vistazo a ambos casos y profundizaremos más a medida que abordemos cada uno.

Esta guía asume que ya has configurado pfSense con interfaces WAN y LAN funcionales.

pfSense con interfaces WAN y LAN funcionales

Vamos a empezar.

Instalando pfBlockerNG-devel

Lo primero que necesitamos hacer es instalar pfBlockerNG.

  1. Desde el menú superior, selecciona Sistema > Gestor de Paquetes. Serás llevado a la pestaña de Paquetes Instalados en el Gestor de Paquetes.
    instalar pfBlockerNG
  2. Selecciona Paquetes Disponibles. Se mostrará la lista de paquetes disponibles.
    Instalar pfBlockerNG Paso 2
  3. Desplázate hacia abajo hasta que veas pfBlockerNG. Hay dos entradas para pfBlockerNG: pfBlockerNG y pfBlockerNG-devel. Vamos a instalar pfBlockerNG-devel. Aunque el sufijo «devel» significa versión en desarrollo (es decir, software beta), es completamente funcional y se desarrolla activamente. Estará en beta perpetuo ya que el desarrollador del paquete considera que es más seguro tratarlo como software beta mientras sigue añadiendo nuevas funcionalidades al paquete.
  4. Desplázate hacia abajo hasta que veas pfBlockerNG. Hay dos entradas para pfBlockerNG: pfBlockerNG y pfBlockerNG-devel. Vamos a instalar pfBlockerNG-devel. Aunque el sufijo «devel» significa versión en desarrollo (es decir, software beta), es completamente funcional y se desarrolla activamente. Estará en beta perpetuo ya que el desarrollador del paquete considera que es más seguro tratarlo como software beta mientras sigue añadiendo nuevas funcionalidades al paquete.
    Instalar pfBlockerNG-devel
  5. Click en Instalar, al lado de pfBlockerNG-devel. Se mostrará la ventana del Instalador de Paquetes.
  6. Click en Confirmar. Comenzará la instalación.
    pfBlockerNG-devel
  7. Una vez completada la instalación, deberías ver Éxito en la parte inferior de la ventana del Instalador de Paquetes. pfBlockerNG-devel ya está instalado.

    pfBlockerNG-devel

Configuración Básica

Ahora que pfBlockerNG-devel está instalado, necesitamos configurar nuestro paquete. Y vamos a comenzar con el filtrado de IP y GeoIP.

Configuraremos la sección pfBlockerNG poco a poco. Cualquier configuración que no se mencione debe dejarse con sus valores predeterminados.

  1. Desde los menús superiores, selecciona Cortafuegos (Firewall) > pfBlockerNG. Se muestra el asistente de configuración de pfBlocker.
    Configuración Básica de pfBlockerNG
  2. Puedes ejecutar el asistente de configuración o configurar pfBlockerNG manualmente. Lo configuraremos manualmente, así que puedes hacer clic en el rojo AQUÍ para cerrar el asistente. Luego, serás llevado a la página General de las configuraciones de pfBlocker.
    Página de Configuración de pfBlockerNG

General / Ajustes Generales

  1. Marca la casilla Activar (Enable) que se muestra a la derecha de pfBlockerNG. Esto activa el servicio.
  2. Click en Guardar (Save) en la parte inferior de la página.
  3. Dejaremos las demás configuraciones de esta página con sus valores predeterminados.

Activar pfBlockerNG

Filtrado IPv4

IP / Configuración de IP

  1. Selecciona la pestaña IP para acceder a la página de configuración de IP. Por ahora, no toques los submenús que aparecen debajo.
  2. Activa De-Duplicación (De-Duplication). Esto eliminará las entradas duplicadas si estás usando varias fuentes de IP.
  3. Activa Agregación CIDR (CIDR Aggregation).
  4. Activa Supresión (Suppression). La supresión asegura que tus subredes locales no sean bloqueadas.

IP / Configuración de IP

IP / Configuración de MaxMind GeoIP

Como mencioné anteriormente, la función GeoIP de pfBlockerNG te permite filtrar el tráfico hacia y desde países o continentes enteros. Para hacer esto, pfBlocker utiliza la base de datos MaxMind GeoIP, la cual requiere una clave de licencia. Un enlace en la descripción del campo Clave de Licencia de MaxMind te lleva a la página de registro de MaxMind. La clave de licencia de MaxMind es gratuita.

Completa el formulario de registro para obtener tu clave de licencia. Una vez que tengas tu clave, insértala en el campo Clave de Licencia de MaxMind.

Configuración de MaxMind GeoIP

Y:

Registro en MaxMind

IP / Configuración de Interfaz/Reglas de IP

Esta sección determina en qué interfaces de entrada y salida se aplican los filtros IPv4, IPv6 y GeoIP de pfBlockerNG.

  1. Selecciona WAN en el campo Reglas de Firewall de Entrada (y cualquier otra interfaz WAN que puedas tener y quieras filtrar).
  2. Selecciona LAN en el campo Reglas de Firewall de Salida (y cualquier otra interfaz tipo LAN que puedas tener y quieras filtrar).
  3. Activa Reglas Flotantes (Floating Rules). Las reglas flotantes son reglas especiales de firewall que se aplican antes de las reglas regulares de firewall. Esto asegura que el filtrado de pfBlockerNG se realice tan pronto como el tráfico llegue al firewall. Otro beneficio es que pfBlockerNG automáticamente creará las reglas flotantes por ti.
  4. Haz clic en Guardar en la parte inferior de la página.

Configuración de Interfaz pfBlockerNG

Añadiendo Listas IPv4

Ahora es el momento de añadir algunas listas de bloqueo a pfBlockerNG. Aunque eres libre de agregar tus propias listas, pfBlockerNG tiene algunas incorporadas que podemos activar (los términos lista y fuente se usan indistintamente en este contexto).

Esto es muy práctico ya que buscar listas de bloqueo en internet lleva tiempo, y muchas no funcionan o ya no se mantienen. Las listas dentro de pfBlocker son listas activas que se actualizan regularmente, así que vamos a usar esas.

  1. Selecciona la pestaña Listas (Feeds).
  2. Haz clic en el signo + azul, al lado de PRI1. Es el primer listado. PRI1 es una colección de listas, por lo que comprende varias, como veremos en un momento. Una vez que hagas clic en el + azul, te llevará a la página IP / IPv4, donde se enumeran tus listas seleccionadas. Y casi todos los campos relevantes se rellenan automáticamente.

Pestaña de Listas pfBlockerNG

IP / IPv4

El nombre de la colección de listas aparece junto con su descripción. Las URLs de las listas incluidas en la colección y sus descripciones asociadas también se muestran. Sin embargo, nuestras listas están configuradas en OFF por defecto. Necesitamos activarlas.

Listas IPv4 de pfBlockerNG

Pero antes de eso, necesitamos eliminar una de las listas de la colección PRI1. Pulsedive, la 7ª lista desde arriba, es una lista premium que requiere una clave API de pago. No vamos a obtener la clave API para este tutorial. Haz clic en el botón Eliminar (Delete).

Eliminar Lista

  1. Una vez que hayas eliminado Pulsedive, configura todas las listas en ON.
    Listas Activadas
  2. Desplázate hacia abajo hasta la sección de Configuraciones (Settings) de la página.
  3. En el menú desplegable Acción, selecciona Denegar Ambos (Deny Both). Esto bloqueará el tráfico hacia y desde las direcciones IP en las listas. Puedes elegir denegar solo conexiones entrantes o salientes si lo prefieres. Pero ten en cuenta que si solo deniegas el tráfico entrante y un host en tu red inicia una conexión saliente a una de esas IPs, la respuesta entrante de esa IP se permitirá. Esto puede estar bien dependiendo de tu entorno, solo ten cuidado. Para este ejemplo, voy a seleccionar Denegar Ambos.
    IP Denegar Ambos
  4. Haz clic en Guardar Configuraciones IPv4 (Save IPv4 Settings) en la parte inferior de la página.

Puedes repetir los mismos pasos para IPv6 si tu proveedor de servicios de internet asigna una dirección IP IPv4 e IPv6 a tu WAN. La mayoría de nosotros todavía estamos en redes solo IPv4.

Filtrado GeoIP

Antes de configurar el filtrado GeoIP, primero necesitamos forzar una actualización de pfBlockerNG. pfBlocker se actualiza automáticamente en intervalos fijos. Pero, para configurar el filtrado GeoIP, primero pfBlocker necesita obtener la base de datos de MaxMind, y una actualización forzada hará precisamente eso.

  1. Elige la pestaña de Actualización en la configuración de pfBlockerNG.
  2. Haz clic en Ejecutar. La actualización comienza.
    Configuraciones de Actualización GeoIP
  3. Una vez completada la actualización, deberías ver PROCESO DE ACTUALIZACIÓN FINALIZADO al final de la ventana Registro debajo de Configuraciones de Actualización.
    Proceso de Actualización GeoIP Finalizado
  4. Revisando la ventana del Registro, podemos observar que tanto mis fuentes IPv4 como la base de datos GeoIP fueron actualizadas.
    Registros IPv4

    Registros IPv4

    Registros GeoIP

    Registros GeoIP

  5. Desde la pestaña IP en la configuración de pfBlockerNG, selecciona el submenú GeoIP. Se muestra el Resumen de GeoIP.
    Menú GeoIP

El Resumen de GeoIP consta de fuentes de direcciones IP organizadas por continente, con dos categorías extra: Principales Spammers y Proxy y Satélite. Principales Spammers es una lista de países conocidos por ser una fuente frecuente de ataques en línea. Y Proxy y Satélite son proveedores conocidos de proxy anónimos y satélites.

Puedes filtrar el tráfico de/a un continente entero, o puedes afinar la fuente seleccionando solo los países que deseas filtrar.

Personalizando las listas de países

  1. Haz clic en el icono del lápiz que está a la derecha del feed que quieres editar.
    Resumen de GeoIP
  2. Selecciona los países que quieres que pfBlockerNG filtre.
  3. Haz clic en Guardar en la parte inferior de la página.
    Página de Resumen de GeoIP

Configurando bloqueos por país

  1. Regresa al menú GeoIP en las configuraciones de pfBlocker.
  2. Como hicimos con las listas de IPv4, desde el menú desplegable Acción a la derecha de cada campo, elige Bloquear Entrante, Bloquear Saliente o Bloquear Ambos.
    Acción de GeoIP

Ahora, hay ciertas cosas a considerar aquí. Si deseas bloquear conexiones salientes a un país o continente, adelante. Sin embargo, si estás pensando en bloquear enlaces entrantes de un gobierno o continente, ten en cuenta que pfSense bloquea todo el tráfico entrante no solicitado en la WAN por defecto.

Eso significa que a menos que tengas puertos abiertos en tu WAN, bloquear países o continentes es inútil y solo consumirá memoria en vano. Si tienes puertos abiertos en tu WAN, asegúrate de no bloquear conexiones de los países a los que deseas permitir conectar a tus puertos abiertos.

Los alias son listas de direcciones IP nativas de pfSense. Usando alias, puedes permitir solo a los países específicos que seleccionaste acceder a tus puertos abiertos. Sin embargo, hay una forma de crear alias personalizados desde la base de datos MaxMind GeoIP dentro de pfBlockerNG que se puede usar directamente como fuente en las reglas de firewall de reenvío de puertos.

Creando un alias GeoIP en pfBlockerNG

Debido a que pfSense bloquea automáticamente cualquier tráfico que no esté explícitamente permitido en las reglas del firewall, queremos crear un alias de los países que permitiremos a través del firewall. pfSense bloqueará el resto por defecto.

  1. Dirígete al submenú de IPv4 y haz clic en Agregar.
    Agregar Alias Personalizado
  2. Dale a tu alias un nombre y una descripción.
  3. Establece el campo Formato a GeoIP.
  4. Configura el campo Estado en ACTIVO.
  5. Establece la Acción en Alias Nativo.

  6. Escribe las primeras letras del país que deseas agregar al alias. Selecciona los países que deseas añadir al alias. La lista de países aparecerá.

    Empezar a Escribir Alias Personalizado

  7. Puedes agregar más países a tu alias haciendo clic en el botón verde de Agregar.
    Agregar Países
  8. Configura la Frecuencia de Actualización en Una vez al día.
  9. Haz clic en Guardar Configuraciones IPv4 en la parte inferior de la página. Una vez que fuerces una actualización de pfBlockerNG, tu alias estará disponible para incluirlo en tus reglas de firewall.
    Configuraciones de Alias Personalizado

Si tienes puertos abiertos pero quieres mantenerlo simple, puedes bloquear conexiones entrantes de Principales Spammers y Proxy y Satélite sin crear un alias personalizado. Recuerda que esto solo es útil si tienes puertos abiertos en tu WAN.

Denegar Spammers y Satélite

Si no tienes ningún puerto abierto en tu WAN, solo bloquea el tráfico saliente o deja desactivado el filtrado GeoIP.

Probando el filtrado IPv4

Para asegurarnos de que nuestro tráfico está siendo filtrado, podemos intentar conectar a una dirección IP conocida en la lista de bloqueo. Si intento acceder a 1.13.9.177 (una IP contenida en mis feeds IPv4 de pfBlockerNG) en mi navegador, la dirección IP no se traduce a un nombre de dominio, y no puedo conectar. Eso es lo que queremos.

Prueba IPv4

Pasemos a configurar el DNSBL de pfBlocker.

DNSBL

Vale. Hemos configurado el filtrado IPv4, el filtrado GeoIP y los alias. Ahora es el momento de usar pfBlockerNG para bloquear anuncios. El bloqueo de anuncios en pfBlockerNG se logra a través del bloqueo de DNS. Esto compara tus solicitudes de DNS con una lista de redes de anuncios y rastreadores conocidos y los bloquea a nivel DNS cuando hay una coincidencia, lo que resulta en un internet sin anuncios. ¡Genial!

Para usar la función DNSBL en pfBlockerNG, debes estar usando el Resolutor de DNS en pfSense para tu resolución DNS. Eso significa que no puedes asignar el DNS de tus dispositivos mediante DHCP o usar el Reenviador de DNS (dnsmasq) si quieres usar la función DNSBL.

Por defecto, pfSense usa el Resolutor de DNS en todas las interfaces. Así que si no hiciste ningún cambio en las configuraciones del Resolutor de DNS, estás bien. Si hiciste cambios, configura el Resolutor para que se vincule a tu LAN (saliente) y tu WAN (entrante). Y selecciona cualquier otra interfaz tipo LAN (interfaces OPT) y tipo WAN (configuración multi-WAN, pasarelas VPN) que quieras que DNSBL filtre.

Resolutor de DNS

Configurando DNSBL

  1. Selecciona la pestaña DNSBL.
  2. Activa DNSBL.
  3. Junto a Modo DNSBL, selecciona Modo Python de Unbound.
    DNSBL
  4. Desplázate hasta la sección Configuración de DNSBL.
  5. Activa Permitir Reglas de Firewall y selecciona tu LAN y cualquier otra interfaz tipo LAN que quieras filtrar con DNSBL. Esto creará automáticamente reglas flotantes de firewall (como hicimos con el filtrado IPv4) para que el filtrado de DNSBL ocurra tan pronto como el tráfico llegue al firewall.
  6. Haz clic en Guardar configuraciones de DNSBL en la parte inferior de la página.
    Guardar configuraciones de DNSBL

Ahora necesitamos agregar algunos feeds de DNSBL.

Agregando feeds de DNSBL

  1. Selecciona la pestaña Feeds.
  2. Desplázate hacia abajo hasta que veas Categoría DNSBL a la izquierda. La primera entrada es EasyList.
  3. Haz clic en el + azul a la izquierda de EasyList. Serás dirigido a la página Grupos de DNSBL, donde se enumeran los feeds que seleccionaste, al igual que con el filtrado IPv4. Casi todos los campos relevantes se rellenan automáticamente.
    Feeds de DNSBL
  4. Elimina todos los feeds excepto el primero y el último: EasyList y EasyList Privacy.
  5. Establece los feeds restantes en ON.
    Listas de DNSBL Activadas
  6. Desplázate hasta la sección Configuración.
  7. Establece la Acción en Unbound.
  8. Haz clic en el + a la derecha de Lista personalizada de DNSBL. Se muestra la ventana Lista personalizada de DNSBL.
  9. Introduce vungle.com en la ventana Lista personalizada de DNSBL. Estamos añadiendo este dominio para asegurarnos de que el filtrado de DNSBL funcione al intentar acceder a un dominio conocido como bloqueado.
  10. Haz clic en Guardar configuraciones de DNSBL en la parte inferior de la página.
    Listas de DNSBL Activadas

Forzando una actualización de pfBlockerNG

Ahora necesitamos forzar una actualización de pfBlockerNG, como hicimos anteriormente.

  1. Selecciona la pestaña de Actualización. Serás llevado a la página de actualización de pfBlockerNG.
  2. Haz clic en Ejecutar. Comienza la actualización.
    Configuraciones de Actualización

Una vez que la actualización está completa, podemos ver que nuestros feeds de DNSBL han sido actualizados.

Registro de Actualización de DNSBL

Probando DNSBL

Para asegurarnos de que el filtrado DNSBL está funcionando, intentaremos conectarnos al dominio que agregué a Lista personalizada de DNSBL: vungle.com. Si intento acceder a vungle.com en mi navegador, se muestra la página de bloqueo de DNSBL con algunos datos útiles.

Nota: El DNSBL de pfBlocker incluye un mini servidor web que puede mostrar esta página de bloqueo. El filtrado IPv4, IPv6 y GeoIP amplía la funcionalidad existente del firewall pfSense y bloquea o permite direcciones IP sin mostrar una página de bloqueo.

Prueba de DNSBL

Conclusión

Y eso es todo. Has instalado y configurado con éxito pfBlockerNG-devel en pfSense. Configuramos el filtrado IPv4, el filtrado GeoIP, así como el filtrado DNSBL. Estos tres contribuyen a que tu red sea más segura y privada sin reducir la velocidad de tu conexión.

A medida que tu red crezca, es posible que necesites abrir ciertos puertos en tu WAN si deseas ejecutar un servidor VPN o si quieres alojar un servidor web que sea accesible desde internet. Cuando hagas eso, pfBlockerNG será una herramienta útil en tu conjunto de herramientas de seguridad para ayudarte a asegurar tu red y controlar el acceso desde el exterior de manera detallada.

Relacionado: Cómo encontrar las mejores VPNs

Leave a Comment