Zum Schutz der Clients in einem Netzwerk kann ein Proxy für die Webfilterung oder aber auch ein DNS-Server eingesetzt werden. Dsa Prinzip beim DNS Blacklisting ist, dass für alle die Domains, welcher geblockt sollen, auf dem eigenen DNS-Server jeweils eine Zone eingerichtet wird. Nachfolgend ist die Einrichtung sowie das spätere hinzufügen und entfernen von DNS Domains zur Blacklist anhand von Bind9 beschrieben.
Grundeinrichtung
Für die Grundeinrichtung sind drei Schritte notwendig. Einmal die Erstellung der DNS-Zone, das Anlegen der Blacklisten Datei sowie das Einbinden dieser in Bind9.
Um Domains zu Blacklisten wird eine DNS-Zone blacklisted.zones für alle später zu blacklistenden Domains erstellt, welche jedoch außer einem Eintrag für den Nameserver und einem TXT Eintrag zur manuellen Überprüfung nichts weiter enthält. Durch den Verzicht auf einen A- bzw. AAAA-Record wird sichergestellt, dass nicht unnötige Web Anfragen an die dort angegebenen Adresse geschickt werden.
Die Blacklist-Datei muss im Arbeitsverzeichnis von Bind9 angelegt werden. Dieses ist bei Debian /var/cache/bind und kann über die Option directory definiert werden. Die Datei kann auch an anderer Stelle abgelegt werden, dann muss nur später der gesamte Pfad zur Datei angegeben werden.
$TTL 3600 @ IN SOA ns.domain.tld. postmaster.domain.tld. ( 2143 ; serial 7200 ; refresh (2 hour) 900 ; retry (15 minutes) 1209600 ; expire (2 weeks) 3600 ; minimum (1 hours) ); NS ns.domain.tld. TXT Domain is blocked!!
Anschließend wird die blacklisten Datei /etc/bind/blacklisted.domains angelegt. Für den Anfang kann auch direkt die erste Domain geblockt werden.
zone "sex.de" {type master; file "blacklisted.zones";};
Nun noch bind9 über die Datei /etc/bind/named.conf mitteilen, dass die Datei blacklist.domains verwendet werden soll und Bind9 neustarten
include "/etc/bind/blacklisted.domains";
service bind9 restart && tail -f /var/log/syslog
Domains hinzufügen / entfernen
Um das hinzufügen und entfernen von geblacklistenden Domains zu vereinfachen können in der Datei ~/.bashrc zwei Funktionen hinzugefügt werden. Einmal der Befehl adddomainblock, welcher mit dem Parameter der Domain diese zur Blacklist hinzufügt. Vorher jedoch sicherstellt, dass es diesen Eintrag nicht schon gibt. Denn sonst würde Bind9 den Neustart verweigern.
adddomainblock() { if [ ! -z "$1" ] ; then echo Blocking domain $1 with bind sed "/"$1/d" -i /etc/bind/blacklisted.domains echo zone "$1" {type master; file "blacklisted.zones";}; >> /etc/bind/blacklisted.domains else echo "!! Need domain to handle" fi }
Sowie ein Befehl zum entfernen einer Domain aus der Blacklist.
rmdomainblock() { if [ ! -z "$1" ] ; then echo Unblock domain $1 from bind sed "/"$1/d" -i /etc/bind/blacklisted.domains else echo "!! Need domain to handle" fi }
Beide Befehle beinhalten absichtlich keinen Neustart von Bind9, da andernfalls beim hinzufügen oder entfernen von mehreren Domains die Anzahl der Neustartes Bind9 aus dem Tritt bringen können.
Liste von Malware Domains
Unter malwaredomains.com gibt es eine Liste von Domainnamen, über welche Malware verteilt wird. Diese kann zum Beispiel direkt in die Blackliste von DNS importiert werden. Im Nachfolgenden Befehlen werden alle www. Suffix sowie IP Adressen herausgefiltert, da es mehr Sinn macht für die gesamte Domain eine DNS Zone zu erstellen und IP Adressen keine Domainnamen sind.
cd /tmp/ wget http://mirror2.malwaredomains.com/files/immortal_domains.txt for i in $(cat immortal_domains.txt | sed s'/^www.//g'| grep -v -E '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'); do adddomainblock $i; done rm immortal_domains.txt service bind9 restart && tail -f /var/log/syslog
So wie diese Liste importiert wurde, können auch weitere Listen wie die Squid Blacklisten imporitert importiert werden.
Nachtrag vom 06.08.2015
Man kann über diesen Weg auch sehr gut die Daten-Sammelwut von Windows 10 blockieren, indem man die hier verfügbaren Domains aus der Hosts Datei blockiert.