<?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%2FBenutzerlogins_per_FTP_verbieten</id>
	<title>Cisco-ASA Layer-7-Inspection/Benutzerlogins per FTP verbieten - 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%2FBenutzerlogins_per_FTP_verbieten"/>
	<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cisco-ASA_Layer-7-Inspection/Benutzerlogins_per_FTP_verbieten&amp;action=history"/>
	<updated>2026-06-27T14:41:56Z</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/Benutzerlogins_per_FTP_verbieten&amp;diff=1712&amp;oldid=prev</id>
		<title>PoC: /* Zusammenfügen zum Großen Ganzen */ Connection Restriction</title>
		<link rel="alternate" type="text/html" href="https://kb.pocnet.net/index.php?title=Cisco-ASA_Layer-7-Inspection/Benutzerlogins_per_FTP_verbieten&amp;diff=1712&amp;oldid=prev"/>
		<updated>2015-09-14T21:32:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Zusammenfügen zum Großen Ganzen: &lt;/span&gt; Connection Restriction&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 einen FTP-Server schützen sollen:&lt;br /&gt;
* Generell soll nur ein Gastlogin möglich sein,&lt;br /&gt;
* Von bestimmten Adressen aus soll auch ein normaler Login möglich sein.&lt;br /&gt;
&lt;br /&gt;
Es ist leider nicht möglich, Pakete innerhalb einer vereinfachten Regelbasis auf Layer-¾ und Layer-7 (Deep-Packet-Inspection) zu klassifizieren. Dies muss getrennt geschehen.&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;
Hierzu ist die Definition zweier Access-Listen notwendig: Eine als Standard, um interessanten FTP-Traffic &amp;#039;&amp;#039;&amp;#039;zu&amp;#039;&amp;#039;&amp;#039; einem bestimmten Host zu filtern&amp;lt;ref&amp;gt;Es sei denn, man möchte z.&amp;amp;thinsp;B. die gesamte DMZ mit einer solchen Einrichtung schützen und nicht nur einen Host.&amp;lt;/ref&amp;gt;…&lt;br /&gt;
 access-list ftp_default extended permit tcp any host 198.51.100.20 eq ftp&lt;br /&gt;
&lt;br /&gt;
… und eine, welche Ausnahmen zu dieser ACL zulässt, in diesem Falle also der Quelladresse(n):&lt;br /&gt;
 access-list ftp_auth_allow extended permit tcp object-group ftp-auth-allowed-networks host 198.51.100.20 eq ftp&lt;br /&gt;
&lt;br /&gt;
Die Objektgruppe &amp;#039;&amp;#039;ftp-auth-allowed-networks&amp;#039;&amp;#039; ist in diesem Fall ein ASA &amp;lt;code&amp;gt;group-object network&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Diese Access-Listen werden nun von Class-Maps referenziert:&lt;br /&gt;
 class-map ftp-traffic-auth-allowed&lt;br /&gt;
  match access-list ftp_auth_allow&lt;br /&gt;
 !&lt;br /&gt;
 class-map ftp-traffic-default&lt;br /&gt;
  match access-list ftp_default&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;
== Festlegen der Layer-7-Übereinstimmungen ==&lt;br /&gt;
Anhand einer [https://de.wikipedia.org/wiki/Regulärer_Ausdruck Regex] wird festgelegt, welche Loginnamen erlaubt sind:&lt;br /&gt;
 regex ftp_anonymous &amp;quot;[^A-Z,a-z,0-9]+(ftp|anonymous)[^A-Z,a-z,0-9]+&amp;quot;&lt;br /&gt;
Leider unterstützt die Cisco ASA nicht alle Regex-Möglichkeiten. Regex-Ende (&amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;) ist grundsätzlich nicht möglich. Regex-Beginn (&amp;lt;code&amp;gt;^&amp;lt;/code&amp;gt;) erzielt in der Praxis hier auch keine Übereinstimmung. Somit würden ohne weitere Einschränkungen Logins wie &amp;#039;&amp;#039;blanonymousfoo&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;anftpuser&amp;#039;&amp;#039; ebenfalls als gültig markiert. Hier sind Zeichenklassen-Auslassungen wie z.&amp;amp;thinsp;B. &amp;lt;code&amp;gt;[^a-z,A-Z,0-9]&amp;lt;/code&amp;gt; eine ersatzweise Möglichkeit, Anfang und ende der gewünschten Zeichenkette eindeutig zu identifizieren.&lt;br /&gt;
&lt;br /&gt;
Zunächst wird eine PMap definiert für &amp;quot;allen anderen&amp;quot; FTP-Traffic, bei dem der Paketinhalt also &amp;quot;egal&amp;quot; ist. Bei Bedarf können hier z.&amp;amp;thinsp;B. noch Parameter für Maskierungen bestimmter FTP-Antworten angeknipst werden.&lt;br /&gt;
 policy-map type inspect ftp standard_ftp-map&lt;br /&gt;
  parameters&lt;br /&gt;
&lt;br /&gt;
Nun wird die PMap erstellt, in welcher der alle Logins, die &amp;#039;&amp;#039;&amp;#039;nicht&amp;#039;&amp;#039;&amp;#039; auf o.&amp;amp;thinsp;G. Regex passen, mit einen Verbindungsrücksetzung (TCP RST) quittiert werden. Zusätzlich soll ein Logeintrag erzeugt werden.&lt;br /&gt;
 policy-map type inspect ftp auth-reset_ftp-map&lt;br /&gt;
  parameters&lt;br /&gt;
  match not username regex ftp_anonymous&lt;br /&gt;
   reset 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 ftp-traffic-auth-allowed&lt;br /&gt;
   inspect ftp strict standard_ftp-map&lt;br /&gt;
  class ftp-traffic-default&lt;br /&gt;
   inspect ftp strict auth-reset_ftp-map&lt;br /&gt;
   set connection per-client-max 2&lt;br /&gt;
&lt;br /&gt;
Heisst:&lt;br /&gt;
* Pakete, die auf oben beschriebene Ausnahmen-ACL passen, werden durch die normale Inspection-Regel &amp;#039;&amp;#039;standard_ftp-map&amp;#039;&amp;#039; geführt, welche Auth zulässt,&lt;br /&gt;
* Pakete, die auf die Default-ACL passen (also alle anderen an Port tcp/21), werden durch die &amp;#039;&amp;#039;auth-reset_ftp-map&amp;#039;&amp;#039; geführt und daher geprüft, wie sich die Gegenseite authentisiert.&lt;br /&gt;
&lt;br /&gt;
Diese &amp;quot;Verdrehung&amp;quot; ist nicht so ganz einfach zu durchschauen, weil standardmäßig nur Gastlogins möglich sein sollen. Ausnahmen sollen mit richtigen Benutzern authentisieren dürfen.&amp;lt;ref&amp;gt;Auch wenn man das eigentlich nicht mehr haben möchte: Bei FTP geht alles im Klartext über den Draht.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel werden die gleichzeitig pro IP erlaubten Verbindungen in der non-anon-Klasse auf zwei restriktiert, damit ein Script, welches verschiedene Logins parallel durchprobieren würde, noch etwas mehr ausgebremst wird.&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, damit FTP-Sitzungen vom LAN in die DMZ grundlegend einschränkungsfrei möglich sind.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dies hätte ich auch durch eine entsprechende Erweiterung der Access-Liste für Netzausnahmen erreichen können, die gezeigte Möglichkeit sehe ich aber als sauberer an.&lt;br /&gt;
&lt;br /&gt;
== Log ==&lt;br /&gt;
Im Logging der ASA tauchen bei Fehlversuchen diese Meldungen auf:&lt;br /&gt;
 %ASA-5-303005: Strict FTP inspection matched username regex ftp_anonymous in policy-map ftp_out_in_map, Reset connection from outside:203.0.113.10/53112 to dmz:198.51.100.20/21&lt;br /&gt;
 %ASA-4-507003: tcp flow from outside:203.0.113.10/53112 to dmz:198.51.100.20/21 terminated by inspection engine, reason - inspector reset unconditionally.&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>