DNS AAAA-Queries filtern

Wer in seinem Netz kein IPv6 einsetzt, benötigt normalerweise auch keine IPv6-Namensauflösung.
Allerdings erfolgt die Namensauflösung für IPv6 auch über IPv4 (Ethertype 0x0800).

In einem (realen) IPv4-Netz ist z. B. knapp ein Viertel des DNS-Verkehrs IPv6-Traffic (AAAA):

 

Da AAAA-Queries nur ein Typ von DNS-Records sind, werden sie wie jede andere DNS-Anfrage/Antwort per UDP (seltener auch TCP) und Destination Port 53 übermittelt. Deswegen kann man AAAA-Queries nicht so einfach in der Firewall filtern.

Mit den Layer7-Filtern und einem Regex-Ausdruck gelingt es aber trotzdem. Dazu kann Folgendes eingefügt werden:

/ip firewall layer7-protocol
add name=AAAA regexp="^.?.?.?.?.?.?.?.?.?.?.?.?([\x01-\?][a-z0-9\-_]+)+\.?\x1c\.?\x01"

Dieser Filter kann dann in einer Firewall-Filterregel genutzt werden, zum Beispiel in der Input-Chain:

add action=drop chain=input comment="drop DNS AAAA-requests" dst-port=53 layer7-protocol=AAAA protocol=udp

Wichtig: Der Router selbst führt normalerweise auch Namensauflösungen durch, z. B. die Mikrotik-Update-Adresse oder wenn Address-Lists mit DNS-Namen existieren. Dann sollte eine solche Regel auch auf der OUTPUT-Chain angelegt werden!

 


Im Detail

Der Regex matcht auf folgende Felder des DNS-Headers:

  • QTYPE
  • QCLASS
^.?.?.?.?.?.?.?.?.?.?.?.?([\x01-\?][a-z0-9\-_]+)+\.?\x1c\.?\x01

 


 

Ob eine derartige Filterung sinnvoll ist, muss immer gegen die erhöhte CPU-Auslastung bei Layer7-Filtern abgewogen werden.

So sieht die Übersicht der DNS-Abfragen nach der Implementierung der Regel aus:

Alle AAAA-Queries wurden vom Router erfolgreich verworfen.

 


vereinfachter Regex

Wenn sich ROS darüber beklagt, dass der Regex zu komplex ist:

 

Man kann auch eine vereinfachte Version nutzen:

/ip firewall layer7-protocol add name=AAAA regexp=".?\x1c\.?\x01$"

Damit wird von hinten ($) nach der QCLASS und dem QTYPE gesucht.
In einem Test über mehrere Tage trat der Fehler „regexp too complex“ nicht mehr auf.

 

Referenzen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert