Filtern von Werbung und Malware mit Bind9

Hier ein kleines Script um Netzwerkweit Domains, die Onlinewerbung und Malware verteilen auf DNS Ebene zu filtern.
In Windows Umgebungen lässt sich sehr einfach ein Bind DNS Server als Weiterleitungsserver hinter dem Windows DNS Server betreiben. Beispielsweise auf einem RaspberryPi.
Kudos to Pauls Security Weekly.

HOME=/etc/bind

ADLISTURL="https://pgl.yoyo.org/adservers/serverlist.php?hostformat=bindconfig;showintro=0;zonefilename=/etc/bind/null.zone.file;mimetype=plaintext"
MWLISTURL="http://mirror1.malwaredomains.com/files/spywaredomains.zones"

ADLISTFILE="ad-blacklist"
MWLISTFILE="mw-blacklist"
MWLISTFILECLEAN="mw-blacklist-clean"

ZONEFILE=/etc/bind/nullzone

wget -O $ADLISTFILE $ADLISTURL
wget -O $MWLISTFILE $MWLISTURL

sed 's/^M$//' < $MWLISTFILE> $MWLISTFILECLEAN

awk '{ print $1 " " $2 " {type master; file \"/etc/bind/nullzone\"; };" }' $ADLISTFILE $MWLISTFILECLEAN | sort | uniq > /etc/bind/blacklists

Nun noch ein Zonefile „nullzone“ unter /etc/bind/ mit folgendem Inhalt anlegen:

$TTL    86400   ; one day  
@       IN      SOA     ads.int.yourdomain.tld hostmaster.int.yourdomain.tld. (
               2014090101
                    28800
                     7200
                   864000
                    86400 )          
                NS      yourdns.int.yourdomain.tld.
                A       127.0.0.1 
@       IN      A       127.0.0.1 
*       IN      A       127.0.0.1

Folgende Zeile zur Datei /etc/bind/named.conf.local hinzufügen:

include "/etc/bind/blacklists";

Hier ein kleiner Ausschnitt aus der Datei /etc/bind/blacklists die durch den Aufruf des Scripts erzeugt wird,

zone "5689.nl" {type master; file "/etc/bind/nullzone"; };
zone "56clicks.com" {type master; file "/etc/bind/nullzone"; };
zone "56hj.cn" {type master; file "/etc/bind/nullzone"; };
zone "56.js.cn" {type master; file "/etc/bind/nullzone"; };

Dieses Script sollte vielleicht Wöchentlich durch einen cronjob ausgeführt werden um die Blacklist aktuell zu halten.