Usando la Raspberry Pi para bloquear publicidad

Hola a tod@s,

Voy a explicar como bloquear los molestos anuncios que nos acosan en nuestra navegacion por Internet, utilizando una Raspberry con Debian y Bind, aunque probablemente estos mismos pasos sirvan para cualquier otra distro Linux.

Hasta relativamente hace poco, para bloquear los anuncios usaba componentes instalados en cada dispositivo de la red, lo que es complejo de gestionar. Debido a esto, me propuse implementar un método centralizado de bloquear los anuncios.

Ya que tengo una Raspberry en mi red que ya utilizaba como dns caché, decidí aprovecharla para tratar de bloquear las consultas de dominios que sirven anuncios.

Para evitar que este post se haga muy largo, doy por hecho que ya tenéis instalado Debian/Raspbian en vuestra Raspberry. Una vez tenemos el sistema funcionando, lo primero seria instalar bind.

apt-get install bind9

Aunque este post no va sobre caché dns, ya que vamos a usar bind, vamos a sacarle el máximo provecho. Para que bind funcione como cache dns, y asi poder acelerar nuestras consultas dns, tenemos que modificar el archivo /etc/bind/named.conf.options:

    forwarders {
         208.67.222.222;
         208.67.220.220;
    };

Yo uso los dns de opendns, pero podéis establecer los que mas os gusten.

En este momento ya tendríamos un dns funcional que podríamos usar en cualquier máquina de la red local.

Ahora vamos a ver cómo podemos bloquear los anuncios. Lo primero es buscar un listado de dominios conocidos por servir anuncios. Un listado completo y que se actualiza con frecuencia, lo podéis descargar de https://pgl.yoyo.org/adservers/. Esta web permite descargar el listado en distintos formatos compatibles con dnsmasq, bind, unbound,... Yo voy a descargarlo en el formato que usa bind, y lo guardo en un directorio temporal:

curl -f 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext'  -o /tmp/ad-blacklist

Esto lo hago porque el archivo necesita unos pequeños retoques, que comentaré más adelante

Lo siguiente será crear una zona local en bind que envié las consultas sobre dominios de anuncios a la ip 127.0.0.1. Para ésto creamos el archivo /etc/bind/backhole con el siguiente contenido:

$TTL    86400   ; one day
@       IN      SOA     ads.blackhole.org. hostmaster.blackhole.org. (
               2014090101
                    28800
                     7200
                   864000
                    86400 )        
                NS      ns.blackhole.org
                A       127.0.0.1
@       IN      A       127.0.0.1
*       IN      A       127.0.0.1

Ahora vamos a retocar el archivo con los dominios a bloquear para adaptarlo a nuestra configuración. Para adaptarlo ejecutamos lo siguiente:

sed -i 's/null.zone.file/\/etc\/bind\/blackhole/' /tmp/ad-blacklist

El comando anterior sustituye el nombre del archivo de zona por la ruta completa al archivo de zona que creamos anteriormente.

Copiamos el archivo con el listado ya modificado a /etc/bind. Para hacer esto ejecutamos lo siguiente:

mv -f /tmp/ad-blacklist /etc/bind/ad-blacklist

Ahora tenemos que indicar a bind que use nuestra zona blackhole. Editamos el archivo /etc/bind/named.conf.local e incluimos la siguiente línea:

include "/etc/bind/blackhole";

Por último ya solo faltaría recargar las zonas(rndc reload) y comprobar que esta funcionando correctamente. Para comprobar esto podemos intentar resolver cualquiera de los dominios del listado, por ejemplo de la siguiente forma:

root@host:~/probas# dig +short zv1.november-lax.com @localhost
127.0.0.1

Si la ip que nos devuelve es la 127.0.0.1 quiere decir que todo esta correcto.

Ahora para que los clientes de la red usen nuestro dns tuneado, tendríamos que usar dhcp o configurarlo manualmente en cada dispositivo. Eso ya queda en vuestras manos.

Por ultimo, para mantener actualizado el listado de dominios a bloquear, podemos meter los comando anteriores en una tarea cron que lo automatice. Para esto creamos el archivo /etc/cron.d/bind-blackhole-ads con el siguiente contenido:

13 6 * * * root curl -f 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext' -o /tmp/ad-blacklist; sed -i 's/null.zone.file/\/etc\/bind\/blackhole/' /tmp/ad-blacklist; mv -f /tmp/ad-blacklist /etc/bind/ad-blacklist; /usr/sbin/rndc reload

El comando anterior se ejecuta todos los dias a las 06:13, y se encarga de actualizar el listado de dominios y recargar la configuración en bind.

Un saludo.

Artículo cortesía de Romám

Via: www.hackplayers.com
Usando la Raspberry Pi para bloquear publicidad Usando la Raspberry Pi para bloquear publicidad Reviewed by Zion3R on 21:22 Rating: 5