Inhaltsverzeichnis
Letzte Aktualisierung am 01.02.2025, 13:02:17 Uhr
Leider ist es heute nach wie vor notwendig, einzelne IP-Adresse, IP Subnetze oder gar ganze ASN zu sperren. Nach wie vor steht Spam per E-Mail ganz hoch im Kurs. Zudem gibt es oftmals eben Anforderung einen Absender von der eigenen E-Mail Plattform fern zu halten.
Ich greife hier für auf Ubuntu Server 24.04 LTS sowie das Tool rbldnsd zurück. Das Tool wird aktuell durch das Spamhouse Project gepflegt. Das Paket ist auch für Debian 12 verfügbar.
Dieser Beitrag dient primär als Gedankenstütze für die Installation und der Basis Konfiguration. Denn ich habe im Netz keinen halbwegs aktuellen Link gefunden.
Vorbereitungen
Firewall Regeln für SSH und DNS anlegen.
ufw allow ssh ufw allow 53/tcp ufw allow 53/udp
Firewall aktivieren.
echo y | ufw enable
Status der Firewall prüfen.
ufw status Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 53/tcp ALLOW Anywhere 53/udp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 53/tcp (v6) ALLOW Anywhere (v6) 53/udp (v6) ALLOW Anywhere (v6)
Deaktivieren des Systemd Resolver.
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved
Konfigurationsdatei löschen.
rm /etc/resolv.conf
Definieren von öffentlichen DNS-Server. In diesem Fall von Quad9.
echo 'nameserver 9.9.9.9' >> /etc/resolv.conf echo 'nameserver 149.112.112.112' >> /etc/resolv.conf echo 'nameserver 2620:fe::fe' >> /etc/resolv.conf echo 'nameserver 2620:fe::9' >> /etc/resolv.conf
DNS Auflösung testen.
ping google.de -4 ping google.de -6
Installation
Repository des Betriebssystem aktualisieren.
apt update
Das Tool rbldnsd über die Paketverwaltung installieren.
apt install rbldnsd
Service stoppen.
systemctl stop rbldnsd.socket
Anpassung an dem Systemd, damit der Service später das Logfile auch schreiben kann.
cp /usr/lib/systemd/system/rbldnsd.service /usr/lib/systemd/system/rbldnsd.service.original sed -i 's/^ProtectSystem=strict$/#ProtectSystem=strict/g' /usr/lib/systemd/system/rbldnsd.service systemctl daemon-reload
Das Verzeichnis für das Logfile erstellen.
mkdir -p /var/log/rbldns/
Berechtigungen für das Verzeichnis anpassen:
chown -R rbldns:rbldns /var/log/rbldns/
Eine Testzone anlegen.
# Testzone anlegen cat << EOF > /var/lib/rbldns/dnsbl.test.wydler.eu 80.12.242.128/28:127.0.0.5::Der Absender ist als Spammer aufgefallen EOF
Parameter für den Wrapper für rbldnsd hinzufügen.
cat << \EOF >> /etc/default/rbldnsd RBLDNSD="- -w /var/lib/rbldns -q \ -b 0.0.0.0/53 -b ::0/53 \ -l +/var/log/rbldns/rbl.log \ -s +/var/log/rbldns/rbl.stats \ dnsbl.test.wydler.eu:ip4set:dnsbl.test.wydler.eu" EOF
Dienst starten und prüfen.
systemctl start rbldnsd.service systemctl status rbldnsd.service
Prüfen, ob ein Logfile erstellt wurde.
ll /var/log/rbldns/
Prüfen, ob der Service auf Port 53 verfügbar ist.
ss -tulpen | grep ":53"
Logrotate für die Logfiles konfigurieren.
cat << 'EOF' > /etc/logrotate.d/rbldnsd /var/log/rbldns/*.log { rotate 30 daily compress missingok postrotate /bin/systemctl reload rbldnsd.service #/bin/echo "`date` Logrotate Completed" >> /log/var/venaqua endscript } EOF
Testing
Zwei Testabfragen über dig – 1x IPv4, 1xIPv6.
dig 141.242.12.80.dnsbl.test.wydler.eu @127.0.0.1 dig 141.242.12.80.dnsbl.test.wydler.eu @::1 dig 141.242.12.80.dnsbl.test.wydler.eu TXT @127.0.0.1 dig 141.242.12.80.dnsbl.test.wydler.eu TXT @::1
Logfile prüfen, ob die Abfragen in das Logfile geschrieben worden sind.
cat /var/log/rbldns/rbl.log 1737899316 127.0.0.1 141.242.12.80.dnsbl.test.wydler.eu A IN: NOERROR/1/68 1737899319 ::1 141.242.12.80.dnsbl.test.wydler.eu A IN: NOERROR/1/68
Viel Spaß beim Ausprobieren. 🙂