Website-Icon .: blog cscholz.io :.

DNS Domain Blacklisting mit Bind9

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.

Die mobile Version verlassen