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.
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
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.
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.
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.
2. Selecciona Paquetes Disponibles. Se mostrará la lista de paquetes disponibles.
3. Desplázate hacia abajo hasta que veas squid y haz clic en Instalar. Se mostrará la ventana del Instalador de Paquetes.
4. Haz clic en Confirmar. Comenzará 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.
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.
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.
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.
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.
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.
Las configuraciones aquí son opcionales pero limitarán la cantidad de información mostrada en los encabezados de Squid.
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.
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.
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.
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.
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.
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.
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.
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.
Ahora, si intento acceder a facebook.com (por HTTP o HTTPS), mi navegador muestra la siguiente página:
Eso es exactamente lo que queremos.
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.
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.
2. Selecciona Paquetes Disponibles. Se muestra la lista de paquetes disponibles.
3. Desplázate hacia abajo hasta que veas SquidGuard y haz clic en Instalar. Se muestra la ventana del Instalador de Paquetes.
4. Haz clic en Confirmar. Comienza la instalación.
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.
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.
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.
Deja la casilla Activar sin marcar por ahora.
Marca la casilla Eliminar Publicidad.
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.
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.
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.
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.
3. La primera entrada de la lista es adv, que significa anuncios. Desde el menú desplegable a su derecha, selecciona Denegar.
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.
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.
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:
Con Squid desactivado:
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.
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.
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.
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.
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.
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.
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.
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.
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.