Leaked-Api Keys mit Abusix und Proxmox verhindern

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

  1. Öffne die DNSBL-Einstellungen in deinem Proxmox Mail Gateway.
  2. Trage als DNSBL-Domain nur noch abusix ein, ohne API-Key:Code kopieren
    abusix

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?

  1. API-Key-Schutz: Dein API-Key bleibt geheim, selbst wenn Spammer versuchen, ihn durch DNS-Abfragen zu ermitteln.
  2. Proxmox bleibt funktional: Das Mail Gateway erhält weiterhin die korrekten DNSBL-Antworten.
  3. 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.