Instala Pi-hole en tu Raspberry Pi y dile adiós a la publicidad intrusiva en tu navegación

Después de haber leído el espectacular libro “Data and Goliath: The Hidden Battles to Collect Your Data and Control Your World” de Bruce Schneier, es realmente difícil no empezar a preocuparse por tu propia privacidad. Y no porque tengas algo que esconder, sino simplemente porque es tu derecho y es tu responsabilidad velar por su cumplimiento:

Artículo 12 de la Declaración Universal de Derechos Humanos

Muchos esfuerzos se han realizado ya desde el punto de vista legal y de cumpliento (la ISO 29100:2011, el Reglamento General de Protección de Datos (GDPR), el acuerdo Privacy Shield entre la EU y US, la ley de cookies europea, etc.) pero lamentablemente no es suficiente. Y gran parte de esto es debido a que como usuarios ingenuos de plataformas como Facebook, Yahoo, Google, etc. el coste que pagamos es precisamente permitir y aceptar una intrusión “enmascarada” de dichas empresas en nuestra privacidad para poder hacer uso de sus servicios. Estas empresas analizan los datos que generamos, identifican patrones y con ello nos bombardean de publicidad particularizada y focalizada como parte de sus estrategias de marketing agresivo (que es de donde obtienen la mayor parte de sus ganancias):

Infografía: ¿De dónde obtiene Google sus ganancias? (Fuente: BBC)

No obstante, como usuarios podemos protegernos y controlar la información que se filtra de nuestros hábitos de navegación de diferentes formas:

entre otros.

En este artículo se describirá el proceso de instalación y configuración de una solución que permite el bloqueo de publicidad intrusiva mediante la configuración de listas negras y blancas a nivel de peticiones de resolución de nombres (DNS) denominada Pi-hole en una Raspberry Pi (Open Source Ad Blocker Designed For Raspberry Pi).

¿Qué es Pi-hole?

Pi-hole es una solución compuesta por diferentes herramientas Open Source que permiten la gestión de peticiones de resolución de nombres (DNS) identificando y bloqueando mediante listas negras aquellos dominios con mala reputación y reportados como distribuidores de publicidad intrusiva.

Los componentes principales de Pi-Hole son:

  • dnsmasq: Un servidor ligero de DNS y DHCP.
  • curl: Una herramienta de linea de comando para la gestión de peticiones HTTP.
  • lighttpd: Un servidor web focalizado en el desempeño y la seguridad.
  • php: Lenguaje de scripting de uso general para la web.
  • AdminLTE Dashboard: Panel de control basado en Bootstrap 3.x

Instalación de Pi-hole

Para este caso en particular, se describirá el proceso de instalación y configuración de Pi-hole en una Raspberry Pi con Raspbian 9, aunque el paquete de software soporta instalación en múltiples plataformas con sistemas operativos GNU/Linux.

La instalación de Pi-hole es relativamente sencilla. De hecho, en la página web del proyecto se indica directamente el comando a ejecutar para proceder con la instalación:

No obstante, dicho proceso puede tener serias consideraciones de seguridad, por lo que en este manual optaremos por una instalación un poco más manual pero más controlada.

En este caso, lo primero es autenticarse en la Raspberry Pi con credenciales administrativas y crear un directorio temporal para descargar los componentes:

Posteriormente, con wget descargamos el paquete (tar.gz) desde la página principal del proyecto en GitHub (https://github.com/pi-hole/pi-hole). En este caso, descargo la versión Pi-Hole Core 3.2.1 publicada en diciembre de 2017:

Luego, simplemente descomprimimos el paquete con tar y ejecutamos el script del instalador localizado en la carpeta “automated install”:

Luego, el script de instalación verificará los pre-requisitos y dependencias y descargará los componentes que hagan falta.

De aquí en adelante, simplemente seguir las indicaciones del asistente:

Al finalizar, simplemente dirigirse a la consola de administración (ubicada en http://[DIRECCIÓN_IP]/admin) y autenticarse con la contraseña que se generó durante el proceso de instalación:

En mi caso, he configurado el servicio de Pi-Hole para que actúe como DHCP y DNS principal en mi red, de tal forma que todos los equipos que se conecten obtengan esos valores por defecto. Esto se puede configurar en el menú “Settings” -> “DHCP”.  Es importante tener en cuenta que si el servicio de Pi-hole actuará como servidor de DHCP, se debe deshabilitar previamente cualquier otro servicio de DHCP en la red (por lo general viene activo en el router inalámbrico).

En el caso que no se pueda configurar el servicio vía DHCP, simplemente se debe configurar de forma manual el servidor de DNS de cada equipo para que apunte a la dirección IP del equipo con Pi-hole.

Actualización de Pi-hole

Una vez instalado, de forma periódica es importante revisar si existen nuevas actualizaciones de los componentes de Pi-hole.

Para ello, se debe ejecutar el siguiente comando:

Si queremos simplemente comprobar si hay actualizaciones disponibles pero no ejecutar la instalación, se debe añadir el flag “–check-only”.

En mi caso, prefiero automatizar el proceso. Para ello, he añadido la siguiente entrada al crontab de root:

Con esto, a las 5 am. de todos los lunes de cada semana se instalan los paquetes disponibles de actualización de Pi-hole.

Pruebas para la validación de Pi-hole

Posterior a la instalación de Pi-hole y a la configuración de los clientes, se debe proceder a hacer pruebas del servicio. Para ello, se puede navegar aquí.

Si todo sale bien, en los logs de Pi-hole se podrán ver los resultados:

Usar listas negras adicionales (malware, spam, phishing, etc.)

Si las listas negras (blacklists) por defecto de Pi-hole no son suficientes, siempre se pueden añadir listas adicionales para optimizar el filtrado. En mi caso, uso las listas de “The Blocklist Project“, que incluye múltiples catálogos de filtrado con base en temas como ads, malware, phishing, ransomware, spam, tracking, etc. Para usarlo, simplemente se escoge la categoría a filtrar y el sitio web provee de la URL para añadir a la lista negra:

Finalmente, estas URLs se agregan a las listas negras de Pi-hole desde “Settings” -> “Blocklists”:

Otras páginas web con listas negras son:

Usar filtrados adicionales desde el DNS

Servicios de DNS como Cloudflare (quienes gestionan el servicio de DNS 1.1.1.1) incluyen mejoras en sus DNS que permiten el filtrado tanto de malware como de contenido para adultos en su servicio mejorado “1.1.1.1 for Families“.

En este caso, simplemente se cambia el DNS superior (upstream DNS) de Pi-hole desde “Settings” -> “DNS” y se configuran los siguientes valores, dependiendo de los filtrados que se quieran incorporar:

Malware:

  • 1.1.1.2
  • 1.0.0.2
  • 2606:4700:4700::1112
  • 2606:4700:4700::1002

Malware y contenido para adultos:

  • 1.1.1.3
  • 1.0.0.3
  • 2606:4700:4700::1113
  • 2606:4700:4700::1003

Para probarlos, simplemente visitar los siguientes dominios:

  • malware.testcategory.com
  • phishing.testcategory.com

Configurar DNS-over-HTTPS

En vez de usar peticiones de resolución de nombres (DNS) en texto claro (que es como funcionan normalmente los servicios de DNS con base en las RFC 1034 y RFC 1035) se pueden emplear peticiones empleando el mismo protocolo que se usa para navegar de forma segura: HTTPS. Con este método, las peticiones de resolución no podrán ser interceptadas ni manipuladas por ningún tercero.

Para ello, se requiere la instalación de otra herramienta de los espectaculares Cloudflare: cloudflared. Este software interceptará todas las peticiones de resolución realizadas por Pi-hole y las encapsulará a los servidores especificados empleando HTTPS.

Los pasos son muy sencillos:

Descargar el software desde la página de Cloudflare Argo Tunnel e instalarlo:

Posteriormente, crear un archivo de configuración (config.yml) en /etc/cloudflared con el siguiente contenido (en “proxy-dns-upstream” también se pueden añadir los DNS de “1.1.1.1 for Families”, discutidos anteriormente):

Luego, instalar el servicio y verificar que funciona correctamente:

Hecho esto, configuramos el servidor DNS en Pi-hole a 127.0.0.1#5053 y todo el tráfico estará encriptado empleando un túnel desde el dispositivo Raspberry Pi hasta el proveedor de DNS:

Conclusiones

La protección de tu privacidad debe ser la premisa a proteger desde el momento que haces uso de las tecnologías de la información. Para ello, es importante ser consciente del intrusismo descarado de múltiples empresas para obtener información de tus hábitos de navegación.

En este artículo se describió una de las múltiples herramientas para la protección de la nacegación. Adicionalmente, en mi caso empleo un túnel de VPN o de SSH desde cualquier otro dispositivo fuera de mi red (teléfonos móviles, por ejemplo) para obligar a que toda la navegación (incluyendo tráfico GSM) esté protegida. También siempre uso browsers configurados en modo privado, complementos adicionales en el browser como HTTPS Everywhere y bloqueadores de cookies. Aunque aún así, se minimiza el riesgo pero no se elimina completamente…

Comments

  • ¿podrías ayudarme a solucionar esto?
    [email protected]:~ $ chmod +x /usr/local/bin/cloudflared
    chmod: cannot access ‘/usr/local/bin/cloudflared’: No such file or directory
    [email protected]:~ $

    lukas255Lucas June 20, 2020
  • Perdo, queria decir esto:
    [email protected]:~ $ cp cloudflared /usr/local/bin
    cp: cannot create regular file ‘/usr/local/bin/cloudflared’: Permission denied

    lukas255 June 20, 2020
    • Hola:
      Tal parece que el problema es con los privilegios del usuario que estás usando. Intenta ejecutar el mismo comando empleando el usuario “root” o a través de “sudo cp cloudflared /usr/local/bin”
      Espero que te sirva.

      david July 23, 2020

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.