Wenn du einen DNSBL-Dienst wie Abusix in deinem Proxmox Mail Gateway nutzt, kann es passieren, dass Spammer den API-Key durch direkte DNS-Anfragen auslesen. Um dies zu verhindern, kannst du PowerDNS verwenden, um die DNSBL-Abfragen zu anonymisieren und gleichzeitig sicherzustellen, dass dein Mail Gateway weiterhin korrekte Antworten erhält.
Problemstellung
Proxmox Mail Gateway fragt DNSBL-Dienste wie Abusix direkt ab. Dabei enthält die Anfrage oft einen API-Key (z. B. 1234abcd.abusix.zone
). Falls ein Spammer versucht, diese Anfrage direkt nachzuvollziehen, wird der API-Key möglicherweise geleaked.
Lösung
Durch PowerDNS und ein Lua-Skript kannst du Anfragen an DNSBL-Dienste wie *.abusix.
anonymisieren. Das Skript leitet alle Anfragen mit der Domain-Endung .abusix.
automatisch auf die API-Key-Domain (z. B. <API-KEY>.combined.mail.abusix.zone.
) um. Der Spammer sieht nur, dass er auf einer Blacklist steht, ohne jemals den API-Key zu sehen.
Voraussetzungen
- PowerDNS Recursor ist installiert.
- Lua-Skripting ist aktiviert.
Schritt 1: Lua-Skript erstellen
Speichere folgendes Skript in /etc/powerdns/resolve.lua
:
function preresolve(dq)
-- Alte und neue Domain-Endungen
local old_suffix = ".abusix."
local new_suffix = ".<API-KEY>.combined.mail.abusix.zone."
-- Den angefragten Domainnamen holen und prüfen
local qname = dq.qname:toString()
-- Prüfe, ob die Domain mit der alten Endung endet
if qname:sub(-#old_suffix) == old_suffix then
-- Alte Endung durch die neue ersetzen
local new_domain = string.sub(qname, 1, -string.len(old_suffix) - 1) .. new_suffix
-- Debug-Log (optional)
pdnslog("Rewriting domain: " .. qname .. " -> " .. new_domain, pdns.loglevels.Info)
-- CNAME hinzufügen und Weiterverfolgung aktivieren
dq:addAnswer(pdns.CNAME, new_domain)
dq.rcode = 0
dq.followupFunction = "followCNAMERecords"
return true -- Anfrage wurde verarbeitet
end
return false -- Anfrage wird normal weitergeleitet
end
Dieses Skript ersetzt alle Anfragen an .abusix. durch die API-Key-Domain <API-KEY>.combined.mail.abusix.zone. und stellt sicher, dass nur dein Mail Gateway korrekte DNSBL-Antworten erhält.
Schritt 2: PowerDNS konfigurieren
Bearbeite die Datei recursor.conf
und füge Folgendes hinzu:
lua-dns-script=/etc/powerdns/resolve.lua
Speichere die Datei und starte den Recursor neu:
bashCode kopierensudo systemctl restart pdns-recursor
Schritt 3: Konfiguration im Proxmox Mail Gateway
- Öffne die DNSBL-Einstellungen in deinem Proxmox Mail Gateway.
- Trage als DNSBL-Domain nur noch
abusix
ein, ohne API-Key:Code kopierenabusix
Durch das Lua-Skript werden alle Anfragen an .abusix.
automatisch umgeleitet. Der API-Key bleibt sicher verborgen.
Schritt 4: Funktion prüfen
Teste mit dig
, ob die Umleitung funktioniert:
dig @127.0.0.1 1.2.3.4.abusix.
Wenn alles korrekt eingerichtet ist, sollte PowerDNS die Anfrage umleiten. In den Logs kannst du sehen, wie die Domain umgeschrieben wird:
sudo journalctl -u pdns-recursor
Beispielausgabe:
Rewriting domain: 1.2.3.4.abusix. -> 1.2.3.4.<API-KEY>.combined.mail.abusix.zone.
Warum diese Lösung?
- API-Key-Schutz: Dein API-Key bleibt geheim, selbst wenn Spammer versuchen, ihn durch DNS-Abfragen zu ermitteln.
- Proxmox bleibt funktional: Das Mail Gateway erhält weiterhin die korrekten DNSBL-Antworten.
- Flexible Erweiterung: Du kannst das Skript anpassen, um weitere Dienste oder Endungen zu anonymisieren.
Zusammenfassung
Mit PowerDNS und Lua kannst du sensible API-Keys vor unbefugten Zugriffen schützen. Dieses Skript sorgt dafür, dass DNSBL-Anfragen dynamisch umgeleitet werden, ohne dass dein Mail Gateway beeinträchtigt wird. Eine elegante Lösung für ein häufiges Sicherheitsproblem.