<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Cisco-ASA_Layer-7-Inspection%2FDNS-PTR-DLP</id>
	<title>Cisco-ASA Layer-7-Inspection/DNS-PTR-DLP - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kb.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Cisco-ASA_Layer-7-Inspection%2FDNS-PTR-DLP"/>
	<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cisco-ASA_Layer-7-Inspection/DNS-PTR-DLP&amp;action=history"/>
	<updated>2026-05-19T23:18:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Knowledgebase</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kb.pocnet.net/index.php?title=Cisco-ASA_Layer-7-Inspection/DNS-PTR-DLP&amp;diff=1713&amp;oldid=prev</id>
		<title>PoC: Ergänzung für TCP</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cisco-ASA_Layer-7-Inspection/DNS-PTR-DLP&amp;diff=1713&amp;oldid=prev"/>
		<updated>2015-09-14T22:07:26Z</updated>

		<summary type="html">&lt;p&gt;Ergänzung für TCP&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Cisco ASA&amp;#039;&amp;#039;&amp;#039; hat so einige Features, u.&amp;amp;thinsp;A. eine &amp;#039;&amp;#039;&amp;#039;Layer-7-Inspection&amp;#039;&amp;#039;&amp;#039;. Sie kann in Pakete eines Streams schauen und die Verbindung basierend auf den gefundenen Werten unterbrechen.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden relevante Konfigurationsfragmente aufgezeigt, welche verhindern, dass DNS-Anfragen von extern in den gemäß [https://tools.ietf.org/html/rfc1918 RFC1918] definierten Netzbereichen zum DNS gelangen (sollen).&lt;br /&gt;
&lt;br /&gt;
Diese Konfiguration wurde auf einer ASA mit Firmware Version 9.2 getestet.&lt;br /&gt;
&lt;br /&gt;
== Festlegen der Layer-¾-Übereinstimmungen ==&lt;br /&gt;
 class-map dns-traffic&lt;br /&gt;
  match port udp eq 53&lt;br /&gt;
&lt;br /&gt;
Policies (also Regelwerke) arbeiten immer mit Class-Maps. Daher ist diese zusätzliche Verknotung leider notwendig.&lt;br /&gt;
&lt;br /&gt;
Die DNS-Inspection-Engine kommt (noch?) &amp;#039;&amp;#039;&amp;#039;nicht&amp;#039;&amp;#039;&amp;#039; mit TCP-Verbindungen zurecht. Schiebt man TCP-DNS-Traffic zur Inspection-Engine, bleiben die Pakete darin hängen, bis die Firewall-Logik die eigentliche TCP-Verbindung mit einem SYN-Timeout unterbricht. Daher genügt die einfache Klassifizierung auf &amp;#039;&amp;#039;udp/53&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Das bedeutet aber auch, dass die beschriebene Konfiguration mit einem &amp;lt;code&amp;gt;dig +tcp&amp;lt;/code&amp;gt; auf einfache Weise umgangen werden kann. Daher sind zusätzliche Sicherungsmaßnahmen auf dem DNS selbst unumgänglich. Alternativ kann auch firewallseitig nur UDP-Traffic zum DNS durchgelassen werden. Dies stellt im Allgemeinen kein Problem dar, solange nicht externe Slave-DNS per Zonentransfer vom zu schützenden DNS ihre Informationen aktuell halten. Durch die Verfügbarkeit von [https://de.wikipedia.org/wiki/EDNS EDNS] sollten auch beim Einsatz von [https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions DNSSEC] keine funktionalen Einschränkungen auftreten. Getestet habe ich dies indes noch nicht.&lt;br /&gt;
&lt;br /&gt;
== Festlegen der Layer-7-Übereinstimmungen ==&lt;br /&gt;
Anhand von [https://de.wikipedia.org/wiki/Regulärer_Ausdruck Regexen] wird festgelegt, welche Anfragen eine Übereinstimmung erzielen sollen:&lt;br /&gt;
 regex 10.in-addr.arpa &amp;quot;\.10\.[Ii][Nn]-[Aa][Dd][Dd][Rr]\.[Aa][Rr][Pp][Aa]&amp;quot;&lt;br /&gt;
 regex 168.192.in-addr.arpa &amp;quot;\.168\.192\.[Ii][Nn]-[Aa][Dd][Dd][Rr]\.[Aa][Rr][Pp][Aa]&amp;quot;&lt;br /&gt;
 regex 1x.172.in-addr.arpa &amp;quot;\.1[6-9]\.172\.[Ii][Nn]-[Aa][Dd][Dd][Rr]\.[Aa][Rr][Pp][Aa]&amp;quot;&lt;br /&gt;
 regex 2x.172.in-addr.arpa &amp;quot;\.2[0-9]\.172\.[Ii][Nn]-[Aa][Dd][Dd][Rr]\.[Aa][Rr][Pp][Aa]&amp;quot;&lt;br /&gt;
 regex 3x.172.in-addr.arpa &amp;quot;\.3[0-1]\.172\.[Ii][Nn]-[Aa][Dd][Dd][Rr]\.[Aa][Rr][Pp][Aa]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese einzelnen Regexe werden in einer Klasse (als Oder-Verknüpfung, &amp;#039;&amp;#039;match-any&amp;#039;&amp;#039;) zusammengefasst&lt;br /&gt;
 class-map type regex match-any dns_rfc1918&lt;br /&gt;
  description Match queries for internal addresses&lt;br /&gt;
  match regex 10.in-addr.arpa&lt;br /&gt;
  match regex 1x.172.in-addr.arpa&lt;br /&gt;
  match regex 2x.172.in-addr.arpa&lt;br /&gt;
  match regex 3x.172.in-addr.arpa&lt;br /&gt;
  match regex 168.192.in-addr.arpa&lt;br /&gt;
&lt;br /&gt;
Nun wird die PMap erstellt, in welcher festgelegt wird, was bei einer Übereinstimmung getan werden soll. Im Beispiel sind auch ein paar nützliche und als aus Erfahrung gut funktionierende Einstellungen für zusätzliche Überwachungen parametriert.&lt;br /&gt;
 policy-map type inspect dns dns_out_in_map&lt;br /&gt;
  parameters&lt;br /&gt;
   message-length maximum client auto&lt;br /&gt;
   message-length maximum server auto&lt;br /&gt;
   no nat-rewrite&lt;br /&gt;
   id-randomization&lt;br /&gt;
   id-mismatch count 300 duration 300 action log&lt;br /&gt;
  match domain-name regex class dns_rfc1918&lt;br /&gt;
   drop-connection log&lt;br /&gt;
&lt;br /&gt;
== Zusammenfügen zum Großen Ganzen ==&lt;br /&gt;
Nun können in einer generischen (non-Inspect) PMap die Klassen und die Inspection-Policies miteinander verknüpft werden:&lt;br /&gt;
 policy-map outside-in_policy&lt;br /&gt;
  class dns-traffic&lt;br /&gt;
   inspect dns dns_out_in_map &lt;br /&gt;
&lt;br /&gt;
Damit Pakete wie gewünscht inspiziert werden, muss diese PMap an eine Netzwerkschnittstelle gebunden werden:&lt;br /&gt;
 service-policy outside-in_policy interface outside fail-close&lt;br /&gt;
&lt;br /&gt;
Natürlich können die beiden Regelwerke auch in der globalen PMap untergebracht werden. Dies habe ich hier absichtlich nicht getan, ich möchte innerhalb der internen Netzwerksegmente keine Einschränkungen der DNS-Auflösungen haben.&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
Im Logging der ASA tauchen bei Fehlversuchen diese Meldungen auf:&lt;br /&gt;
 %ASA-4-410003: DNS Classification: Dropped DNS request (id 42553) from outside:203.0.113.10/46054 to dmz:198.51.100.20/53; matched Class 43: match domain-name regex class dns_rfc1918&lt;br /&gt;
 %ASA-4-507003: udp flow from outside:203.0.113.10/46054 to dmz:198.51.100.20/53 terminated by inspection engine, reason - inspector disconnected, dropped packet.&lt;br /&gt;
&lt;br /&gt;
== Fußnoten ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/100535-asa-8x-regex-config.html#cre Cisco.com: ASA/PIX Regular Expressions] (en)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Cisco]]&lt;br /&gt;
[[Kategorie: Internet]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
</feed>