Firewalls richtig konfigurieren: Port 53 TCP und EDNS

LordGurke
Moin,

weil ich gerade diesen bescheuerten Fehler aus der Ferne debuggen durfte:

Liebe Menschen, die ihr Firewalls bei Kunden konfiguriert: DNS benutzt Port 53 auf UDP und TCP.
TCP ist nicht optional sondern wird in freier Wildbahn wirklich genutzt! Und ist auch standardisiert: RFC 1035, 4.2.2

Aber da dieser Fehler alleine noch genug Raum für funktionierendes DNS ließe:
Wenn eure Firewall noch der lange überholten Meinung ist, dass DNS-Antworten per UDP niemals einen Payload > 512 Bytes haben dürfen, sollte euer Resolver oder Forwarder, der hinter dieser Firewall steht, das auch wissen, damit dieser nicht per EDNS arglos größeren Payload anbietet.
Das starre 512 Bytes-Limit ist spätestens mit verbreiteter Einführung von EDNS überholt, denn jetzt können beide Seiten diese Payload-Größe aushandeln.


Also, kurz zusammengefasst:
    • DNS-Anfragen mit UDP und TCP erlauben
    • Wenn die UDP-Payloadgröße durch die Firewall begrenzt wird, muss der DNS-Resolver oder Forwarder diesen Wert kennen, damit er nichts falsches via EDNS advertised. Allerdings tut man sich schon aus Performance-Gründen einen Gefallen, wenn man UDP-Payload bis wenigstens 786 Bytes durchlässt - das reicht im Falle von DKIM und DNSSEC in vielen Fällen schon aus und verhindert die latenzbehafteteren Nachfragen per TCP.


Wer jetzt sagt: "Ach, was betrifft mich das, so riesengroße DNS-Antworten sind hochgradig exotisch und sowas haben wir hier nicht!":
Ausgang meiner Recherche war, dass der (aus meiner Sicht auch, aber anderweitig kaputte) Spamfilter beim Empfänger versuchte, die DKIM-Signaturen eingehender Mails gegen die DKIM-Einträge im DNS zu validieren, bei manchen Mails dann dabei wegen oben beschriebener Fehler aber keine Antworten bzw. "SERVFAIL" bekam und deshalb dann die E-Mail nicht haben wollte.
Ursache dafür war, dass der DNS-Server beim Empfänger per EDNS advertisete, dass er 1680 Bytes UDP-Payload empfangen kann. Und meine DNS-Server ihm daher wie geheißen die 517 Bytes großen Antworten per UDP schickten.
Die Firewall fraß diese Pakete auf, weil sie mehr als 512 Bytes Payload trugen. Eine Nachfrage des Empfänger-DNS-Servers via TCP scheiterte, weil die Firewall keine DNS-Anfragen per TCP heraus ließ. Also: Timeout auf allen Kanälen und damit keine Antwort.

Das Debugging wurde dadurch erschwert, dass dies nur bei einer Absenderdomain passierte. Mails anderer Domains auf dem selben Server mit dem exakt selben DKIM-Schlüssel im DNS liefen problemlos durch. Die problematische Domain war einfach insgesamt relativ lang (29 Zeichen mit Subdomain), die anderen, deutlich kürzeren Domains haben den Payload in der Antwort nicht über 512 Bytes aufgebläht.





Nachtrag:
Ich wollte doch noch ein paar nicht-repräsentative Grafiken über die Anfrage- und Antwortstatistiken meiner Nameserver mitgeben!

Das hier ist die Response-Size:

dns-rsizes

Ja, das Problem mit der Response-Size betrifft für reguläre positive Antworten (Rcode 0) zwar nur 1-2% der Queries (zumindest bei den Domains auf meinen Nameservern), aber das reicht ja wie man sieht schon aus, um ernsthafte Probleme zu verursachen.

Die Antworten mit Rcode 3 sind Antworten auf Fragen nach nichtexistenten Namen (NXDOMAIN), wo man mit DNSSEC relativ große Antworten mitliefert, weil man durch NSEC3-Hashes ja beweisen muss, dass da nichts ist. Die würden auf jeden Fall kleben bleiben, da merkt man es aber kaum, weil der Name ja eh nicht auflösbar wäre.


Ein Blick auf die gewählten Transporte: Etwa 10% aller Anfragen kommen mit TCP, also nicht ganz unsignifikant.
dns-transp


Das korreliert von der Menge her interessanterweise mit dem Anteil EDNS-Fähiger Resolver, die eine Buffersize von <= 1023 Bytes advertisen und deshalb für manche Antworten zwingend auf TCP umschalten müssen. Nicht-EDNS-Fähige Resolver scheinen kaum noch unterwegs zu sein.

dns-ednsbuffersizes

Content-Key: 638928

Url: https://administrator.de/contentid/638928

Ausgedruckt am: 28.01.2022 um 01:01 Uhr

Mitglied: lcer00
lcer00 08.01.2021 um 20:06:26 Uhr
Goto Top
Hallo,

der Fehler kommt schnell mal von hinten durch die Brust daher und zwar wie folgt:

Zonentransfers erfolgen über TCP. Deshalb definiert man eine tcp-Regel für Zonentransfers, bei der nur die Zielserver freigegeben sind. Oder man sperrt Zonentransfers komplett mittels einer TCP-deny Regel. Danach gibt man dann halt UDP für alle anderen frei. Und schwupps hat man TCP-Nachfragen für lange Antworten vergessen.

So schnell geht das und man glaubt noch alles wunderbar korrekt gemacht zu haben.

Grüße

lcer
Mitglied: Mystery-at-min
Mystery-at-min 09.01.2021 um 12:12:02 Uhr
Goto Top
Hallo,

gut, was aber, wenn die Firewall DNS-Proxy ist?

Deine Empfehlung ist ein Hurra an jeden Malwareschreiber, denn DNS ist leider viel zu oft komplett liberalisiert - vermutlich aufgrund der "Einfachheit", der "Grundsätzlichkeit", sowie vermutlich der Unkenntnis des Admins.

https://www.computerwoche.de/a/datenklau-durch-unbemerkte-dns-tunnel,333 ...

(Kurzes 5sek Google Ergebnis, gibt sicherlich elitärere Quellen).

Das hier propagierte Konzept lädt quasi ein wirklich jedweden anomalen/maliziösen Verkehr über DNS zu schieben.

Ich sage, Klasse statt Masse.
Mitglied: LordGurke
LordGurke 09.01.2021 aktualisiert um 17:12:21 Uhr
Goto Top
Die Firewallregeln gelten natürlich auch, wenn die Firewall selbst der Forwarder ist.
Mit händisch angelegten fehlerhaften Regeln kannst du auch den DNS-Dienst auf diesen Geräten verstümmeln und unbrauchbar machen.

Und es soll ja Szenarien geben, wo du vertrauenswürdigen Geräten (z.B. nachgelagerte Firewalls) erlauben willst, selbst per DNS im Internet nachzufragen.
Oder weil du einen bei dir stehenden autoritativen Server aus dem Internet erreichbar machen willst — in diese Richtung machen fehlerhafte Regeln die gleichen Probleme.


Und: Ich behaupte, als Malware-Schreiber kann ich auch deinen DNS-Proxy auf der Firewall missbrauchen um Daten zu exfiltrieren oder Malware nachzuladen ;-) face-wink
Mitglied: Mystery-at-min
Mystery-at-min 22.01.2021 um 13:57:37 Uhr
Goto Top
Mit händisch angelegten fehlerhaften Regeln kannst du auch den DNS-Dienst auf diesen Geräten verstümmeln und unbrauchbar machen.

Ein geübter DAU-Admin macht das nebenher.

Und es soll ja Szenarien geben, wo du vertrauenswürdigen Geräten (z.B. nachgelagerte Firewalls) erlauben willst, selbst per DNS im Internet nachzufragen.

Nenne Sie mir, aber damit machst du das Konzept etwas...

Oder weil du einen bei dir stehenden autoritativen Server aus dem Internet erreichbar machen willst — in diese Richtung machen fehlerhafte Regeln die gleichen Probleme.

Denke vom fehlerhaften gehen wir nicht aus, sonst - "man nehme Fritzbox oder DAU und sei wesentlich günstiger am Ziel."

Und: Ich behaupte, als Malware-Schreiber kann ich auch deinen DNS-Proxy auf der Firewall missbrauchen um Daten zu exfiltrieren oder Malware nachzuladen ;-) face-wink face-wink

Darfst du behaupten, aber kannst du auch beweisen? Welche Firewall wollen wir uns als erstes für den Gegenbeweis vornehmen?
Mitglied: LordGurke
LordGurke 22.01.2021 aktualisiert um 14:22:19 Uhr
Goto Top
Zitat von @Mystery-at-min:
Und es soll ja Szenarien geben, wo du vertrauenswürdigen Geräten (z.B. nachgelagerte Firewalls) erlauben willst, selbst per DNS im Internet nachzufragen.

Nenne Sie mir, aber damit machst du das Konzept etwas...

Wir betreiben absichtlich zwei Resolver mit verschiedener Software (PowerDNS und Bind). Das macht die DNS-Auflösung zuverlässiger, da ein Bug in er deinen Software, welcher die DNS-Auflösung stört, in der anderen nicht vorhanden ist.
Diese Art Bug ist inzwischen sehr selten geworden, aber das ist z.B. einer der legitimen Gründe, weshalb man zusätzliche Resolver haben möchte, die selbst rekursiv arbeiten und deshalb ungefiltert im Internet per DNS herumfragen können müssen.
Die Provider-DNS fallen spätestens dann weg, wenn du sehr viele Anfragen an DNSBLs durchführst und die DNSBLs Abfragelimits pro IP haben.


Oder weil du einen bei dir stehenden autoritativen Server aus dem Internet erreichbar machen willst — in diese Richtung machen fehlerhafte Regeln die gleichen Probleme.

Denke vom fehlerhaften gehen wir nicht aus, sonst - "man nehme Fritzbox oder DAU und sei wesentlich günstiger am Ziel."

Und dennoch ist die so entstandene Regel dann aufgrund Unvermögen fehlerhaft ;-) face-wink


Und: Ich behaupte, als Malware-Schreiber kann ich auch deinen DNS-Proxy auf der Firewall missbrauchen um Daten zu exfiltrieren oder Malware nachzuladen ;-) face-wink face-wink

Darfst du behaupten, aber kannst du auch beweisen? Welche Firewall wollen wir uns als erstes für den Gegenbeweis vornehmen?

Rein konzeptionell:
Wenn ich eine möglichst kurze Domain registriere, kann ich durch entsprechend lange Subdomains pro Anfrage - sagen wir mal - 50-60 Bytes exfiltrieren ohne dass die Anfragen doof aussehen. Wenn ich komprimiere sogar mehr.

Ich frage also nach "V2VyIGRhcyBsaWVzdCBpc3QgZG9vZgeqeq.prod.apps.meinegenerischedomain.tld" und habe damit schonmal den Text "Wer das liest ist doof" aus deinem Netz rausgetragen.
Auf meinem DNS-Server kann ich die Anfragen schön mitloggen und damit auch größere Datenfragmente über den Tag verteilt übertragen.

Per DNS kann ich dann auch relativ leicht Payload für Malware nachladen - muss ich ja nur als TXT-Record abfragen und halbwegs gut tarnen.
z.B. als "_443._tcp.prod.apps.meinegenerischedomain.tld", Typ TLSA. Oder ich frage syntaktisch nach DKIM-Schlüsseln.

Solange meine Domain nicht auf irgendwelchen Blacklists steht, wird die Firewall meine Anfragen mit hoher Wahrscheinlichkeit nicht filtern ;-) face-wink
Und ich kann ja, Domains sind billig, viele registrieren.
Heiß diskutierte Beiträge
general
Generator für endlose, kostenlose Energie? Ein gut gemachter Schwindel? gelöst beidermachtvongreyscullVor 1 TagAllgemeinOff Topic35 Kommentare

Mahlzeit Kollegen! Wenn ich mich strikt an physikalische Grundsätze halte, müsste ich sagen: Nein. Es ist nicht möglich. Ich stieß aber im Internet auf ein ...

general
FYI: In zwei Tagen zieht LetsEncrypt zahlreiche Zertifikate zurückipzipzapVor 1 TagAllgemeinVerschlüsselung & Zertifikate1 Kommentar

Hallo, zur Info, falls bei Euch übermorgen was knallt: Ruhiges Wochenende! ipzipzap ...

question
"minimale" Cloud-Telefonanlage gesuchtDatenreiseVor 1 TagFrageVoice over IP13 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Cloud-Telefonanlage, die sich für einen einzelnen Arbeitsplatz eignet und wollte hier fragen, ob jemand dazu einen ...

question
Abschätzung Nutzungsdauer von neuer Serverhardware gelöst lcer00Vor 21 StundenFrageHardware9 Kommentare

Hallo zusammen, bei uns stehen 2022 Neuanschaffungen an. Dabei geht es um einen Backupserver (das Cloud-Konzept überzeugt mich immer noch nicht vollständig ) und demnächst ...

tutorial
IKEv2 VPN Server für Windows und Apple Clients mit Raspberry PiaquiVor 1 TagAnleitungLAN, WAN, Wireless1 Kommentar

Einleitung Das folgende Tutorial erhebt keinen Anspruch auf Vollständigkeit und ist ein einfaches Framework was die Funktion eines IPsec VPN Servers im groben Rahmen aufzeigt. ...

question
Vorkehrungen für einen StromausfallahussainVor 22 StundenFrageNetzwerke10 Kommentare

Hallo, wir betreiben ein Netzwerk mit 8 Clients, Router, Switches, IP-Telefonen, NAS und einem kleinen Anwendungsserver. Unsere einzige Vorkehrung gegen einen Stromausfall/Blackout ist aktuell eine ...

question
PfSense: nach 27-stündigem Ausfall der Deutschen Telekom streiken IPSec + OpenVPN gelöst vafk18Vor 1 TagFrageNetzwerke9 Kommentare

Einen Gruß aus der Eifel, nachdem wir wieder mal von einer großflächigen Störung der Telekom-Anschlüsse (Ausfall eines DSLAM mit mehreren Tausend Teilnehmern) heimgesucht wurden, deren ...

question
Backup Software für PostgreSQLDaniVor 1 TagFrageDatenbanken11 Kommentare

Moin, für eine Anwendung kommt PostgreSQL 13.5 zum Einsatz. Leider nicht unter Linux, sondern läuft unter Windows Server 2019. Nun gibt es für jeden Kollegen ...