Cómo bloquear anuncios en todos tus dispositivos con pfSense, Squid y SquidGuard

Marc Dahan

By Marc Dahan . 5 diciembre 2023

Cybersecurity Journalist

Miklos Zoltan

Fact-Checked this

pfSense es un potente sistema operativo de enrutador/cortafuegos de código abierto basado en FreeBSD. De fábrica, pfSense ya viene con herramientas robustas que te permiten construir una red segura.

Pero pfSense también te ofrece la posibilidad de instalar paquetes desde su repositorio oficial, para añadir aún más funcionalidades a tu sistema.

En este artículo aprenderás sobre:

  • Qué es pfSense y cómo usarlo
  • Qué es Squid y cómo usarlo
  • Cómo funcionan los servidores proxy
  • Cómo instalar y configurar Squid
  • Cómo instalar y configurar SquidGuard
  • Cómo bloquear anuncios con pfSense, Squid y SquidGuard

pfSense es un sistema operativo de enrutador/cortafuegos de código abierto basado en FreeBSD. Desde su instalación inicial, pfSense ya tiene herramientas robustas que te permiten establecer una red segura.
Sin embargo, pfSense también te da la opción de instalar paquetes desde su repositorio oficial, añadiendo aún más funcionalidades a tu sistema.

Uno de esos paquetes es llamado Squid. Squid es un proxy web de caché que también puede realizar filtrado de contenido. Desglosemos un poco esto y proporcionemos algo de contexto sobre los servidores proxy y su utilidad.

Guía relacionada: Cómo configurar el filtrado de IP y el bloqueo de DNS en pfSense usando pfBlockerNG

Resumen: En este artículo expliqué cómo bloquear anuncios en todos los dispositivos usando pfSense, Squid y SquidGuard.
pfSense es un sistema operativo de enrutador/cortafuegos de código abierto con herramientas robustas para asegurar redes, y Squid es un proxy web de caché que ofrece filtrado de contenido.

Discutí el papel de los servidores proxy en el caché de contenido y filtrado, así como cómo configurar Squid y SquidGuard en pfSense para bloquear anuncios.

Al hacer esto, los usuarios pueden mejorar la seguridad y la privacidad, reducir el consumo de ancho de banda y aumentar la velocidad de carga de las páginas web.

Cómo bloquear anuncios

Servidores Proxy

Un servidor proxy es un servidor intermediario que se ubica entre tu dispositivo (portátil, tableta, smartphone) y tu destino final en internet (cualquiersitioweb.com).

Tu tráfico sale de tu dispositivo, se conecta al servidor proxy y luego se dirige a su destino final desde el servidor proxy.

¿Por qué enviar tu tráfico a través del servidor proxy? Hay varias razones. Una de ellas es para almacenar contenido en caché. Esto significa que el servidor proxy guardará cierto contenido localmente, por lo que la próxima vez que un cliente solicite ese contenido, se tomará del caché en lugar de volver a descargarlo desde internet.

Esto acelera tu navegación en internet porque obtener contenido del caché local del proxy es mucho más rápido que volver a iniciar una descarga en internet.

Otro propósito es el filtrado de contenido. El filtrado de contenido significa bloquear conexiones a ciertos dominios o direcciones IP. Las organizaciones que bloquean el acceso a Facebook, por ejemplo, están realizando un filtrado de contenido.

Otro uso para el filtrado de contenido es bloquear anuncios. Los anuncios en línea son molestos. Violan tu privacidad, consumen tu ancho de banda y son una fuente importante de malware. Hay excelentes razones para querer eliminarlos. Y es lo que vamos a usar Squid en este artículo.

Vamos a mostrarte cómo configurar Squid y SquidGuard (SquidGuard es un componente adicional de Squid que permite el filtrado basado en listas) en pfSense para bloquear anuncios en todos tus dispositivos.

Esta guía asume que tienes un sistema pfSense en funcionamiento configurado con interfaces WAN y LAN operativas y que tienes acceso a la interfaz gráfica.

Configuraciones WAN y LAN

Instalando Squid

Lo primero que debemos hacer es instalar el servidor proxy Squid.

1. Desde los menús superiores, selecciona Sistema > Gestor de Paquetes. Te llevará a la pestaña de Paquetes Instalados del Gestor de Paquetes.

Ir al Gestor de Paquetes

2. Selecciona Paquetes Disponibles. Se mostrará la lista de paquetes disponibles.

Squid Selecciona Paquetes Disponibles

3. Desplázate hacia abajo hasta que veas squid y haz clic en Instalar. Se mostrará la ventana del Instalador de Paquetes.

Paquete Squid

4. Haz clic en Confirmar. Comenzará la instalación.

Squid Confirma la Instalación

5. Una vez completada la instalación, deberías ver Éxito en la parte inferior de la ventana del Instalador de Paquetes. Squid ya está instalado.

Squid Instalado

Configurando Squid

Ahora que Squid está instalado, vamos a configurar nuestro nuevo servidor proxy.

Desde los menús superiores, selecciona Servicios > Servidor Proxy Squid. Te llevará a la pestaña General de las Configuraciones de Squid.
Ir al Servidor Proxy Squid

Vamos a revisar la configuración de Squid sección por sección. Nuestro propósito es configurar el bloqueo de anuncios con Squid, así que no vamos a entrar en todos los sub-menús. Sólo en los que necesitamos para alcanzar nuestro objetivo. Cualquier configuración que no se mencione debe dejarse con sus valores predeterminados.

Antes de configurar Squid, primero debemos ir a la pestaña Local Cache y aceptar la configuración predeterminada de caché local haciendo clic en Guardar en la parte inferior de la página.

Si intentas configurar el proxy sin aceptar la configuración de caché local predeterminada, se te pedirá que lo hagas y perderás la configuración que hayas hecho hasta ese momento.

Página de Caché Local

Si quieres ajustar la configuración de tu caché local más tarde, puedes hacerlo desde la pestaña Caché Local de Configuraciones de Squid.

Configuraciones Generales de Squid

  1. Deja la casilla Marcar para habilitar el proxy Squid sin marcar por ahora. Primero configuraremos nuestro servidor proxy antes de habilitarlo.
  2. Si tu caja pfSense está utilizando tanto IPv4 como IPv6, selecciona IPv4+IPv6 del menú desplegable Versión de IP de Escucha. Si no, déjalo en IPv4.
  3. Asegúrate de que LAN esté seleccionado en Interfaz(es) Proxy. Si añades interfaces adicionales a tu caja pfSense y quieres que el tráfico de esas interfaces pase por Squid, tendrás que seleccionarlas aquí.
  4. Establece la Interfaz de Red Saliente en Default (auto).

Configuraciones Generales de Squid

Configuración del Proxy Transparente

Los servidores proxy pueden funcionar de dos maneras: transparente o explícito. En modo transparente, no se requiere configuración en tus clientes (ordenador, tableta, smartphone, etc.) – su tráfico será proxy de forma transparente.

Sin embargo, este modo solo hará proxy del tráfico HTTP por el puerto 80, no del tráfico HTTPS (a menos que configures el filtrado SSL de Man In the Middle – más sobre eso a continuación). Dado que la mayoría del tráfico de internet utiliza HTTPS, el modo transparente tiene un alcance limitado para el bloqueo de anuncios, pero aún puede ser útil para el caché.

El modo explícito te exige configurar cada cliente para «solicitar» acceso al proxy. Y en este modo, todo el tráfico de internet TCP es proxy (HTTP y HTTPS). Esto es lo que queremos en esta guía. Así que no vamos a activar el modo Transparente en esta guía, pero puedes usar ambos modos sin problemas.

Configuración del Proxy Transparente

Filtrado SSL Man In the Middle

Como mencioné anteriormente, es posible hacer proxy de las conexiones HTTPS de forma transparente. Pero para hacer esto, esencialmente necesitas romper el HTTPS.

Squid puede reemplazar el certificado SSL adecuado del sitio web al que intentas acceder con el suyo propio, descifrar la conexión y volver a cifrarla con su certificado. Esto te permite filtrar conexiones SSL pero también rompe la validación HTTPS que se supone debe ocurrir en tu navegador.

No recomiendo el filtrado SSL de Man In the Middle excepto para propósitos específicos por personas que entiendan lo que están haciendo. También vamos a dejar esta función desactivada.

Filtrado SSL Man In the Middle

Configuración de Registros

  1. Marca la casilla Habilitar Registro de Accesos. Esto registrará tu tráfico de Squid para que puedas ver cómo se comporta Squid si necesitas solucionar algo.
  2. Marca la casilla Registrar Páginas Denegadas por SquidGuard. Esto permite que los registros de SquidGuard se vean desde la pestaña Tiempo Real junto con los registros de Proxy Squid. Esto será útil una vez que hayamos instalado SquidGuard.

Configuración de Registros

Manejo de Encabezados, Idioma y Otras Personalizaciones

Las configuraciones aquí son opcionales pero limitarán la cantidad de información mostrada en los encabezados de Squid.

  • Establece el Modo de Encabezado X-Forwarded en desactivado.
  • Marca la casilla Desactivar Encabezado VIA.
  • Marca la casilla Suprimir Versión de Squid.
  • Haz clic en Guardar.

Encabezados e Idioma

Pestaña de ACLs

Para ver qué podemos bloquear explícitamente con Squid, necesitamos ir a la pestaña de ACLs.

Podemos ver que tenemos varias casillas para definir diferentes elementos que Squid filtrará. Echemos un vistazo a cada uno.

Pestaña de ACLs

Subredes Permitidas

Puedes agregar subredes adicionales para pasar por el proxy de Squid aquí. Esto es útil para subredes que no están vinculadas a una interfaz en el sistema, como IPSec. No es necesario añadir nada aquí en nuestro ejemplo.

IPs sin Restricciones

Las direcciones IP que se enumeran aquí no tendrán su tráfico filtrado por el servidor proxy.

Direcciones de Host Prohibidas

Las direcciones IP que se enumeran aquí no podrán usar el servidor proxy, incluso si su subred está permitida.

Lista Blanca

Los dominios listados en el cuadro de Lista Blanca estarán disponibles para todos los hosts autorizados para usar el proxy. Las entradas de la lista blanca anulan cualquier entrada en la lista negra.

Lista Negra

Los dominios que aparecen en el cuadro de Lista Negra no estarán accesibles para todos los hosts que tienen permiso para usar el servidor proxy.

Bloquear Agentes de Usuario

Este cuadro es muy útil para bloquear aplicaciones específicas de acceso a internet. Cuando una aplicación solicita acceso a internet, sus encabezados incluyen un campo llamado agente de usuario. El agente de usuario identifica la aplicación que se está utilizando. Por ejemplo, el agente de usuario de Google Chrome es Chrome.

Los agentes de usuario se usaron inicialmente para identificar el navegador web que hace una solicitud web a un servidor, para que el servidor supiera cómo presentar los datos solicitados en ese navegador específico. Pero su uso ahora se ha generalizado para cualquier aplicación que haga solicitudes por internet.

Para bloquear un agente de usuario en Squid, debes ponerle el prefijo «^» (sin comillas).

Por lo tanto, listar ^Chrome en el cuadro Bloquear Agente de Usuario de Squid bloqueará a Google Chrome de acceder a internet.

Listar ^Mozilla bloquearía a Firefox de acceder a internet. Listar ^WhatsApp bloquearía a WhatsApp de acceder a internet.

Los agentes de usuario son bastante específicos y no siempre son tan simples como los ejemplos anteriores. Necesitas conocer el agente de usuario exacto que usa una app para poder bloquearla aquí.

Bloquear Tipos MIME (Solo Respuesta)

MIME en Tipos MIME significa Extensiones de Correo de Internet Multipropósito, que se utilizan para definir tipos de archivos dentro de las URLs. Los tipos MIME se estructuran de la siguiente manera:

tipo/subtipo

Entonces, añadir audio/mpeg al cuadro Bloquear Tipos MIME bloquearía la descarga de archivos mp3. Añadir image/png al cuadro Bloquear Tipos MIME bloquearía la descarga de imágenes png.

Como sucedía con los agentes de usuario, los tipos MIME son muy específicos. Necesitas introducir el tipo y subtipo exactos para que el filtrado funcione en Squid.

Probando Squid

Añadiendo una entrada a la lista negra de Squid

Vamos a probar nuestra instalación de Squid para asegurarnos de que todo funciona correctamente antes de pasar a los siguientes pasos. Introduciremos un dominio en el cuadro de Lista Negra para ver si Squid lo bloquea como esperamos.

1. Desde la pestaña de ACLs en Configuración del Proxy Squid, introduce facebook.com en el cuadro de Lista Negra.

Lista Negra de Facebook

2. Haz clic en Guardar en la parte inferior de la página.

3. Ve a la pestaña General de la Configuración del Proxy Squid.

4. Marca el cuadro Habilitar Proxy Squid.

Habilitar Proxy Squid

5. Haz clic en Guardar en la parte inferior de la página.

Nuestro servidor proxy ahora está habilitado y configurado para bloquear facebook.com.

Vamos a configurar rápidamente nuestro navegador web para que utilice el servidor proxy y comprobar si funciona correctamente. Si todo está configurado correctamente, no debería poder acceder a facebook.com.

Configurando Firefox para usar el servidor proxy

1. Haz clic en el icono de Configuración en la parte superior derecha del navegador y selecciona Preferencias (en Windows se llama Opciones). Te llevará a la página de Configuración General.

Preferencias de FireFox

2. Desplázate por la página de Configuración General hasta la sección de Configuración de Red y haz clic en el botón Configuración.

Configuración de Red de FireFox

3. Selecciona Configuración de Proxy Manual.
4. En el cuadro de Proxy HTTP, introduce la dirección IP de tu caja pfSense. En mi caso, es 192.168.1.1.
5. Establece el campo del Puerto a 3128.
6. Marca la casilla Usar también este proxy para FTP y HTTPS.
7. Haz clic en Aceptar en la parte inferior de la ventana y cierra la página de Configuración.

Configuración de Proxy de FireFox

Ahora, si intento acceder a facebook.com (por HTTP o HTTPS), mi navegador muestra la siguiente página:

Facebook Bloqueado

Eso es exactamente lo que queremos.

SquidGuard

Así que ya tenemos un servidor proxy funcionando y configurado para bloquear facebook.com. Genial. Sin embargo, si queremos bloquear anuncios, tendríamos que añadir miles y miles de dominios a la caja de Lista Negra de Squid. No es precisamente lo ideal…

Aquí es donde entra SquidGuard. SquidGuard es un módulo complementario para Squid que puede gestionar el filtrado basado en listas.

Con el filtrado basado en listas, introduces la URL de una lista de dominios bloqueados, y se bloquean aquellos dominios que coincidan con los dominios de la lista negra.

Ahora que nuestro servidor proxy básico Squid está funcionando, vamos a instalar y configurar SquidGuard.

Instalando SquidGuard

1. Desde los menús superiores, selecciona Sistema > Gestor de Paquetes. Serás llevado a la pestaña de Paquetes Instalados del Gestor de Paquetes.

Ir al Gestor de Paquetes

2. Selecciona Paquetes Disponibles. Se muestra la lista de paquetes disponibles.

Paquetes Disponibles de SquidGuard

3. Desplázate hacia abajo hasta que veas SquidGuard y haz clic en Instalar. Se muestra la ventana del Instalador de Paquetes.

Encontrar Instalación de SquidGuard

4. Haz clic en Confirmar. Comienza la instalación.

Confirmar Instalación de SquidGuard

5. Una vez que la instalación esté completa, deberías ver Éxito en la parte inferior de la ventana del Instalador de Paquetes. SquidGuard ya está instalado.

SquidGuard Instalado

Configuración de SquidGuard

Ya está instalado SquidGuard. Vamos a proceder a configurar el filtrado basado en listas.

Desde los menús superiores, selecciona Servicios > Filtro Proxy SquidGuard. Serás dirigido a la pestaña General de las Configuraciones del Filtro Proxy SquidGuard.
Ir a las páginas de SquidGuard

Como fue el caso al configurar el mismo Squid, revisaremos la configuración de Squid Guard sección por sección. Y de nuevo, no vamos a entrar en cada submenú, solo en aquellos que necesitamos configurar para lograr nuestro objetivo. Cualquier configuración que no se mencione debe dejarse en sus valores predeterminados.

Opciones Generales

Deja la casilla Activar sin marcar por ahora.
Opciones Generales de SquidGuard

Opciones de Registro

  • Marca la casilla Activar registro en GUI.
  • Marca la casilla Activar registro.
  • Marca la casilla Activar rotación de registros.

Opciones de Registro de SquidGuard

Opciones Varias

Marca la casilla Eliminar Publicidad.
Opciones Varias de SquidGuard

Opciones de Lista Negra

1. Marca la casilla Lista Negra.

2. Ingresa la siguiente URL en el campo URL de Lista Negra: https://shallalist.de/Downloads/shallalist.tar.gz. Esta es nuestra URL de lista negra. SquidGuard descargará esta lista y nos proporcionará diferentes categorías de dominios que podemos elegir permitir o bloquear. Es gratuito y es proporcionado por Shalla Secure Services. Hay otras listas que puedes usar, pero muchas son de pago. He estado usando Shallalist durante muchos años y funciona muy bien y se actualiza con frecuencia, así que lo recomiendo.

3. Haz clic en Guardar en la parte inferior de la página.

Opciones de Lista Negra de Configuración de SquidGuard

Descargando la Lista Negra

1. Ve a la pestaña Lista Negra de las Configuraciones del Filtro Proxy SquidGuard. Se muestra la URL de la lista negra.

2. Haz clic en el botón Descargar. Comienza la descarga y el análisis de la lista negra.

Página de Lista Negra de SquidGuard

3. Una vez completado, deberías ver Actualización de la lista negra completada en la parte inferior de la ventana Registro de actualización de la Lista Negra.

Actualización de Lista Negra Completada

Configurando el Filtrado de la Lista Negra en SquidGuard

1. Dirígete a la pestaña Common ACL de las Configuraciones del Filtro Proxy SquidGuard.

2. Haz clic en el símbolo + junto a Target Rules List. Se mostrará la Target Rules List.

Configurando el filtrado de lista negra en SquidGuard

3. La primera entrada de la lista es adv, que significa anuncios. Desde el menú desplegable a su derecha, selecciona Denegar.

Denegar Anuncios

4. Continúa bloqueando cualquier otra categoría de contenido que quieras bloquear.

5. Una vez que hayas denegado todas las categorías que quieras bloquear, ve al final de la lista y selecciona Permitir desde el menú desplegable junto a Acceso Predeterminado.

6. Haz clic en Guardar en la parte inferior de la página.

ACL de SquidGuard

7. Regresa a la pestaña General de las Configuraciones del Filtro Proxy SquidGuard, marca la casilla Activar y haz clic en Guardar en la parte inferior de la página.

8. Una vez guardado, haz clic en el botón Aplicar.

Activar SquidGuard

Probando la Configuración

Ya hemos configurado Squid con el filtrado de lista negra. Si uso mi navegador que ya está configurado para usar el proxy para acceder a una página web conocida por mostrar anuncios, estos deberían desaparecer.

Con Squid activado:

Prueba de SquidGuard

Con Squid desactivado:

Prueba de SquidGuard

Funciona. Eso es genial. Pero con la configuración que tengo ahora, Squid solo interceptará el tráfico de mi navegador; por lo tanto, solo me beneficiaré del bloqueo de anuncios de Squid en mi navegador.

Te mostraré cómo configurar todo tu dispositivo para enviar todo su tráfico a través del servidor proxy. Esto te permite beneficiarte del bloqueo de anuncios en tus aplicaciones y no solo en tu navegador. Te mostraré cómo hacer esto en macOS, Windows, Linux, iOS y Android.

Configurando el Filtrado de Contenido en Todos los Dispositivos Clientes

Restablece la configuración del navegador

Vamos a deshacer la configuración manual del proxy que hicimos en Firefox para probar nuestra conexión antes de configurar nuestro dispositivo cliente para una configuración de proxy en todo el sistema.

1. Regresa a las Configuraciones de Red en Firefox y selecciona Usar configuraciones de proxy del sistema. Esto le indica al navegador que utilice las configuraciones del sistema como sus configuraciones de proxy. Es la configuración predeterminada.

2. Haz clic en Aceptar y cierra la página de Configuraciones.

Proxy del Sistema en FireFox

macOS

1. Desde la aplicación Preferencias del Sistema, selecciona Red.

2. Asegúrate de que tu conexión actual esté seleccionada y haz clic en Avanzado en la parte inferior derecha.

3. Selecciona la pestaña de Proxies.

4. Marca tanto la casilla Proxy Web (HTTP) como la casilla Proxy Web Seguro (HTTPS).

5. Ingresa la dirección IP de tu caja pfSense y el puerto del proxy —en mi caso, 192.168.1.1 y 3128.

6. Haz clic en Aceptar y luego en Aplicar.

Configuraciones de Proxy en macOS

Windows

1. Abre la aplicación de Configuración (atajo de teclado Win+I).

2. Dirígete a Red e Internet.

3. Selecciona la pestaña de Proxy.

4. Desplázate hasta la sección de Configuración manual de proxy.

5. Activa el interruptor Usar un servidor proxy.

6. Introduce la dirección IP de tu caja pfSense y el puerto del proxy – en mi caso, 192.168.1.1 y 3128.

7. Haz clic en Guardar.

Configuraciones de Proxy en Windows 10

Linux

1. Desde la ventana de Configuraciones de Red, selecciona Proxy de red.

2. Escoge Manual del menú desplegable de Método.

3. Introduce la dirección IP de tu caja pfSense y el puerto del proxy – en mi caso, 192.168.1.1 y 3128 – junto a Proxy HTTP y Proxy HTTPS.

4. Cierra la ventana de Configuraciones de Red.

Configuración de Proxy en Linux

iOS

1. Desde Configuración > WiFi, pulsa la «i» que está a la derecha de tu conexión WiFi.

2. Desplázate hacia abajo y selecciona Configurar Proxy.

3. Elige Manual.

4. Introduce la dirección IP de tu caja pfSense y el puerto del proxy – en mi caso, 192.168.1.1 y 3128 – en los campos Servidor y Puerto.

5. Cierra la aplicación de Configuración.

Configuraciones de Proxy en iPhone

Android

1. Desde la aplicación de Configuración, selecciona WiFi.
2. Mantén pulsada la red WiFi a la que estás conectado.
3. Selecciona Modificar red.
4. Despliega las Opciones avanzadas.
5. Elige Manual del menú desplegable de Proxy.
6. Introduce la dirección IP de tu caja pfSense y el puerto del proxy – en mi caso, 192.168.1.1 y 3128 – en Nombre de host del proxy y Puerto del proxy.
7. Haz clic en Guardar.

Proxy en Android

Ten en cuenta que para que el proxy funcione con datos móviles en iOS o Android, necesitarás instalar un perfil de gestión de dispositivos móviles (MDM, por sus siglas en inglés), lo cual va más allá de lo que cubre esta guía. Quizás lo tratemos en el futuro.

Concluyendo

Así que ya tienes un servidor proxy funcional con filtrado por lista negra que puedes usar para bloquear anuncios en todos tus dispositivos. Has mejorado tu seguridad y privacidad al eliminar esos molestos anuncios que roban tus datos.

También consumirás menos ancho de banda. Y tus páginas web se cargarán más rápido, ya que no será necesario descargar y mostrar los anuncios. Pero también porque Squid está almacenando contenido para ti. Así que el contenido que solicitas con frecuencia se cargará más rápidamente.

Buen trabajo. Mantente seguro.