Meine eigne DNS-Blacklist
Schon seit langer Zeit nutze ich auf allen Servern DNS-based Blackhole List (DNSBL) wie cbl.abuseat.org, ix.dnsbl.manitu.net und bl.spamcop.net. Mit diesen Diensten lässt sich der größte Teil der Spammails vermeiden. Leider müssen diese Anbieter recht zurückhaltend agieren und blocken die Spammer teilweise auch nur für relativ kurze Zeit. Dazu gibt es auch Mailabsender, die einfach nur nerven, wo man nicht ganz klar als Spam klassifizieren kann.
Auf alle Fälle tauchte bei mir der Wunsch auf eine eigene RBL-Liste pflegen zu können.
RBLDNSD
Nach einigen Experimenten, u.a. mit PowerDNS bin ich dann dazu übergegangen eine spezielle Software für DNSBL zu nehmen und zwar RBLDNSD von der Seite http://www.corpit.ru/mjt/rbldnsd.html . Dort habe ich mir die Datei http://www.corpit.ru/mjt/rbldnsd/rbldnsd-0.997a.tar.gz heruntergeladen, die ist zwar vom 27.07.2013 aber das scheint kein größeres Problem zu sein. Diese Datei habe ich dann heruntergeladen, entpackt und compiliert und an die richtige Stelle kopiert:
cd /tmp/ wget http://www.corpit.ru/mjt/rbldnsd/rbldnsd-0.997a.tar.gz tar xvfz rbldnsd-0.997a.tar.gz cd rbldnsd-0.997a ./configure make cp rbldnsd /usr/sbin/
Dann noch den Benutzer anlegen und sein Home-Verzeichnis einrichten
groupadd rbldns useradd -g rbldns -d /var/lib/rbldns -r rbldns mkdir /var/lib/rbldns touch /var/lib/rbldns/rbl.log touch /var/lib/rbldns/rbl.stats chown rbldns.rbldns /var/lib/rbldns
In diesem Paket sind aber keine weiteren Dateien zur Konfiguration vorhanden, insofern habe ich mir auch noch ein (älteres und nicht direkt nutzbares) RPM-Pkate geladen und daraus einige Dateien extrahiert:
cd /tmp/ wget http://www.corpit.ru/mjt/rbldnsd/rbldnsd-0.996a-1.i386.rpm rpm2cpio /tmp/rbldnsd-0.996a-1.i386.rpm | cpio -idmv
Hierbei entstehen im Verzeichnis /tmp die Unterverzeichnisse etc und usr
cp etc/sysconfig/rbldnsd /etc/sysconfig/ cp etc/init.d/rbldnsd /etc/init.d/ cp usr/share/man/man8/rbldnsd.8.gz /usr/share/man/man8/ cp -a usr/share/doc/rbldnsd-0.996a /usr/share/doc/packages/
Nachtrag
Inzwischen habe ich unter http://download.opensuse.org/repositories/home:/rusjako/openSUSE_13.2/x86_64/rbldnsd-0.996c-5.1.x86_64.rpm auch eine passende Datei für OpenSuSE gefunden. Muss ich bei Gelegenheit ausprobieren.
Nachtrag 2017
Bei Ubuntu ist die Software im Paket rbldnsd vorhanden und muss nur installiert werden.
Die Konfigurationsdatei
Die Konfiguration ist bei diesem System in /etc/sysconfig/rblnsd abgelegt. Diese Datei besteht nur aus Kommentaren mit Beispielen. Ich habe einfach meine Konfiguration angehängt.
RBLDNSD="dsbl -r /var/lib/rbldns -q -4 -b 85.214.xxx.yyy -l rbl.log -s rbl.stats -u rbldns dnsbl.zzz-server.de:ip4set:dnsbl.zzz-server.de"
Die Parameter haben hier folgende Bedeutung:
-r Rootdir -q Quick and Quiet Start -4 nur IPv4 kein IPv6 -b bindet an IP-Adresse und ggf. IP-Adresse/Port (mit / und nicht :) -l Logfile -s Statsfile -u User zone:Typ:dateiname
Bei der Logdatei gibt es noch eine kleine Besonderheit. Die Ausgabe ist gepuffert, es kann also dauern, bis eine Anfrage hier auftaucht. Man kann also entweder den Daemon mit einem Reload veranlassen die Datei zu schreiben, oder generell vor dem Dateinamen ein + setzen, also z.B. -l +brl.log dann ist die Pufferung deaktiviert.
Weitere Hinweise sind zu finden mittels
man rbldnsd
Die Zonendatei
Die eigentlichen Einträge finden sich in der Zonendatei /var/lib/rbldns/dnsbl.zzz-server.de
$SOA 300 85.214.xxx.yyy debacher@<domain>.de 0 600 300 8640 300 :127.0.0.2:Der Absender ist als Spammer aufgefallen und wird hier geblockt 192.168/16 10/8
Die erste Zeile beinhaltet den SOA-Record, mit einigen Einstellungen über die Lebensdauer der Einträge. Danach folgen Zeilen der Form:
IP-Adresse (oder Bereich):Rückmelde-IP:Text
Hier kann viel entfallen. In der ersten Zeile fehlt z.B. die IP-Adresse, es taucht nur die Rückmeldeadresse und der Text auf. Dafür steht in den folgenden Zeilen immer nur ein IP-Block oder eine IP-Adresse. Den Rest ergänzt der rbldnsd dann entsprechend.
Start des Dienstes
Der rbldnsd lässt sich nach dieser Konfiguration starten mit:
/etc/init.d/rbldnsd start
und Stoppen mit
/etc/init.d/rbldnsd stop
Lokal lässt sich das Funktionieren des Dienstes testen mittels
dig @85.214.xxx.yyy 3.1.168.192.dnsbl.zzz-server.de ANY
Es sollte sich eine Antwort ergeben, wie:
; <<>> DiG 9.9.6-P1 <<>> @85.214.xxx.yyy 3.1.168.192.dnsbl.zzz-server.de ANY ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25921 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;3.1.168.192.dnsbl.zzz-server.de. IN ANY ;; ANSWER SECTION: 3.1.168.192.dnsbl.zzz-server.de. 2100 IN A 127.0.0.2 3.1.168.192.dnsbl.zzz-server.de. 2100 IN TXT "Der Absender ist als Spammer aufgefallen und wird hier geblockt" ;; Query time: 0 msec ;; SERVER: 85.214.xxx.yyy#53(85.214.xxx.yyy) ;; WHEN: Tue Aug 25 19:57:20 CEST 2015 ;; MSG SIZE rcvd: 142
Von einem beliebigen Rechner aus kann man gut gegen den Google-Dienst testen:
dig @8.8.8.8 3.1.168.192.dnsbl.zzz-server.de ANY
Einstellungen beim Provider
Für die DNSBL haben wir nur die 3d-Level dnsbl.zzz-server.de benutzt, nicht die die komplette Domain. Damit wird es relativ einfach den eigenen Nameserver (das ist rbdnsl natürlich) für den Bereich zuständig zu machen. Beim Domain-Provider, ich benutze dafür am liebsten Domainfactory, muss man zwei Einträge vornehmen:
dns.zzz-server.de A 85.214.xxx.yyy Editieren Löschen dnsbl.zzz-server.de NS dns.zzz-server.de Editieren Löschen
Der Nameserver-Eintrag (NS) muss ein Cname sein, keine IP-Adresse. Also muss man zuerst einen passenden A-Record anlegen, hier dns.zzz-server.de, der dann im NS-Record eingetragen werden kann. Nach einer gewissen Wartezeit werden dann alle Anfragen für dnsbl.zzz-server an den eigenen Nameserver weitergeleitet.
Für eine komplette Domain wäre das viel aufwändiger, man benötigt dann zwei Nameserver, die synchron gehalten werden müssen und vom Denic.de akzeptiert werden müssen. Daher bietet es sich an, wie hier beschrieben, mit einer Subdomain zu arbeiten.
RBLDNSD unter Ubuntu
Bei Ubuntu 16.04 ist das notwendige Paket vorhanden und kann über den Paketmanager nachinstalliert werden. Es sin nur folgende Schritte notwendig:
In der Datei /etc/default/rbldns wird die Konfiguration nach dem Muster oben erstellt.
Die Zonendatei kommt dann in das Verzeichnis /var/lib/rbldns/, so wie oben beschrieben.
Dann muss dieses Verzeichnis noch dem Benutzer übereignet werden, den Ubuntu erstellt hat:
chown -R rbldns.rbldns rbldns/
Danach wird der Dienst neu gestartet:
service rbldnsd restart
Dann muss natürlich noch die Firewall geöffnet werden.
ufw allow 53/udp
Testen kann man dann wieder von einem anderen Rechner aus mit
dig @8.8.8.8 3.1.168.192.dnsbl.zzz-server.de ANY
RBLDNSD unter Ubuntu 20.04
Die bei Ubuntu 20.04 mitgelieferte Version von RBLDNSD habe ich nicht zum Laufen bekommen. Es gab immer eine Fehlermeldung im Zusammenhang mit Sockets. Auch der Text unter /usr/share/doc/rbldnsd/README.Debian hat mich nicht wirklich weiter gebracht.
Im Changelog der 20.04 Version steht ein verdächtiger Eintrag
2019-08-29 - Marco d'Itri <md@linux.it> rbldnsd (0.999~20180516-1) unstable; urgency=medium * New upstream snapshot. * Added support for systemd and socket activation.
Ich habe dann das Paket deinstalliert und das Paket der Version 18.04 installiert.
https://packages.ubuntu.com/bionic/amd64/rbldnsd/download
Das Pakte habe ich dann auf dem Server gespeichert und mittels:
dpkg -i rbldnsd_0.998b~pre1-1_amd64.deb
installiert.
Bei erneuten Startversuch gab es dann die Fehlermeldung, dass der Dienst maskiert sei. Zum Glück hatte ich so etwas schon mal gesehen, und dann also:
rm /etc/systemd/system/rbldnsd.service rm /etc/systemd/system/rbldnsd.socket systemctl daemon-reload
sauberer wäre wohl
systemctl unmask rbldnsd.service systemctl unmask rbldnsd.socket
Danach ließ sich der Dienst ganz normal starten.
Links
- http://www.corpit.ru/mjt/rbldnsd.html
- http://www.blue-quartz.com/rbl/
- http://trull.org/~alex/media/docs/altdnsbook.pdf
- http://fedoranews.org/contributors/david_hart/rbldnsd/
- http://www.oreilly.de/german/freebooks/spamvirger/pdf/115-136.pdf
- http://www.heise.de/netze/tools/netzwerkrechner/ Heise Netzwerkrechner
- http://okean.com/thegoods.html Liste mit IP-Blöcken
- http://www.uceprotect.net/de/index.php
Honigtopf
Zum Abschluss noch ein kleiner Honigtopf für Spammer: honigtopf@debacher.de