Eigene DNS Blacklist (DNBL) betreiben

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. 🙂

Abonnieren
Benachrichtige mich bei
0 Comments
neueste
älteste
Inline Feedbacks
View all comments