In diesem Dokument wird eine Methode zur Blockierung des "Code Red"-Wurms an Netzwerkeintrittspunkten durch Network-Based Application Recognition (NBAR) und Access Control Lists (ACLs) in der Cisco IOS®-Software auf Cisco Routern vorgestellt. Diese Lösung sollte zusammen mit den empfohlenen Patches für IIS-Server von Microsoft verwendet werden.
Hinweis: Diese Methode funktioniert nicht mit Cisco Routern der Serie 1600.
Hinweis: Bestimmter P2P-Datenverkehr kann aufgrund der Art seines P2P-Protokolls nicht vollständig blockiert werden. Diese P2P-Protokolle ändern ihre Signaturen dynamisch, um alle DPI-Engines zu umgehen, die versuchen, ihren Datenverkehr vollständig zu blockieren. Daher wird empfohlen, die Bandbreite zu begrenzen, anstatt sie vollständig zu blockieren. Drosselung der Bandbreite für diesen Datenverkehr. Geben Sie weniger Bandbreite, lassen Sie jedoch die Verbindung durch.
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Quality of Service (QoS)-Servicerichtlinien, die die Befehle der modularen QoS-Befehlszeilenschnittstelle (CLI) verwenden.
NBAR
ACLs
Richtlinienbasiertes Routing
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt. Die Konfiguration in diesem Dokument wurde auf dem Cisco 3640 getestet, auf dem Cisco IOS-Version 12.2(24a) ausgeführt wird
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netz Live ist, überprüfen Sie, ob Sie die mögliche Auswirkung jedes möglichen Befehls verstehen.
Weitere Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).
Als Erstes sollten Sie "Code Red" bekämpfen, indem Sie den Patch anwenden, der von Microsoft erhältlich ist (siehe die Links im Abschnitt Methode A: Verwenden Sie eine ACL unten). Dadurch werden anfällige Systeme geschützt und der Wurm aus einem infizierten System entfernt. Wenn Sie den Patch jedoch auf Ihre Server anwenden, wird der Wurm nur daran gehindert, die Server zu infizieren, und die HTTP GET-Anforderungen werden nicht daran gehindert, die Server zu erreichen. Es besteht weiterhin die Möglichkeit, dass der Server mit einer Flut von Infektionsversuchen bombardiert wird.
Die in dieser Ankündigung beschriebene Lösung wurde in Verbindung mit dem Microsoft-Patch entwickelt, um die HTTP GET-Anforderungen "Code Red" an einem Netzwerkeingangspunkt zu blockieren.
Diese Lösung versucht, die Infektion zu blockieren, behebt jedoch keine Probleme, die durch die Anhäufung einer großen Anzahl von Cache-Einträgen, Adjacencies und NAT/PAT-Einträgen verursacht werden, da der einzige Weg, den Inhalt der HTTP GET-Anforderung zu analysieren, der Aufbau einer TCP-Verbindung ist. Das folgende Verfahren schützt nicht vor einem Scan des Netzwerks. Es schützt eine Site jedoch vor einem Befall durch ein externes Netzwerk oder reduziert die Anzahl der Infektionsversuche, die ein Computer bedienen muss. In Kombination mit der eingehenden Filterung verhindert die ausgehende Filterung, dass infizierte Clients den Wurm "Code Red" in das globale Internet verbreiten.
Für die in diesem Dokument beschriebene Lösung ist die klassenbasierte Kennzeichnungsfunktion der Cisco IOS-Software erforderlich. Insbesondere die Möglichkeit, einen beliebigen Teil einer HTTP-URL abzugleichen, nutzt die Klassifizierungsfunktion für HTTP-Subports in NBAR. Die unterstützten Plattformen und die Cisco IOS Software-Mindestanforderungen sind im Folgenden zusammengefasst:
Plattform | Cisco IOS Software-Mindestanforderungen |
---|---|
7200 | 12.1(5)T |
7100 | 12.1(5)T |
3745 | 12,2(8)T |
3725 | 12,2(8)T |
3660 | 12.1(5)T |
3640 | 12.1(5)T |
3620 | 12.1(5)T |
2600 | 12.1(5)T |
1700 | 12.2(2)T |
Hinweis: Zur Verwendung von NBAR muss Cisco Express Forwarding (CEF) aktiviert werden.
Class-based Marking und Distributed NBAR (DNBAR) sind auch auf den folgenden Plattformen verfügbar:
Plattform | Cisco IOS Software-Mindestanforderungen |
---|---|
7500 | 12.1(6)E |
FlexWAN | 12.1(6)E |
Der erste Infektionsversuch sendet eine große HTTP GET-Anforderung an den Ziel-IIS-Server. Der ursprüngliche "Code Red"-Fußabdruck ist unten dargestellt:
2001-08-04 16:32:23 10.101.17.216 - 10.1.1.75 80 GET /default.ida NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u 7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403
Der "Code Red" II-Fußabdruck ist unten dargestellt:
2001-08-04 15:57:35 10.7.35.92 - 10.1.1.75 80 GET /default.ida XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090 %u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090% u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 403 -
Beachten Sie, dass die GET-Anforderung immer nach einer Datei mit der Erweiterung .ida sucht. Diese Zeichenfolge wird bei allen Infektionsversuchen verwendet und kann daher in IOS als Anpassungskriterium mit klassenbasierter Markierung verwendet werden. Der Rest der GET-Anforderung ist nicht unbedingt konsistent, da nur versucht wird, einen Pufferüberlauf zu erzeugen. Dies wird durch den Vergleich der beiden oben genannten Einträge deutlich.
Es wird nun berichtet, dass der Unterschied zwischen diesen beiden Signaturen ist auf eine neue Sorte der "Code Red" Wurm, genannt CodeRed.v3 oder CodeRed.C. Der ursprüngliche Stamm "Code Red" enthält den String "NNNNNNNN" in der GET-Anforderung, während der neue Stamm "XXXXXXXX" enthält. Weitere Informationen finden Sie in der Symantec-Ankündigung .
Am 6. August 2001 um 18:24 Uhr EDT haben wir einen neuen Footprint aufgenommen. Seitdem haben wir gelernt, dass der eEye Schwachstellen-Scanner diesen Fußabdruck hinterlässt.
2001-08-06 22:24:02 10.30.203.202 - 10.1.1.9 80 GET /x.ida AAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=X 403 HTTP/1.1 -
Die in dieser Ankündigung bereitgestellte Technik zum Blockieren von "Code Red" kann diese Scanversuche auch blockieren, indem Sie die Klassenzuordnungsdefinition wie im nächsten Abschnitt gezeigt straffen.
Um den Wurm "Code Red" zu blockieren, verwenden Sie eine der drei unten beschriebenen Methoden. Alle drei Methoden klassifizieren schädlichen Datenverkehr mithilfe der Cisco IOS MQC-Funktion. Dieser Datenverkehr wird dann wie unten beschrieben verworfen.
Bei dieser Methode werden die markierten "Code Red"-Pakete mithilfe einer ACL an der Ausgabeschnittstelle verworfen. Im folgenden Netzwerkdiagramm werden die Schritte in dieser Methode veranschaulicht:
Um diese Methode zu konfigurieren, gehen Sie wie folgt vor:
Klassifizieren eingehender "Code Red"-Hacks mithilfe der klassenbasierten Kennzeichnungsfunktion der Cisco IOS-Software, wie unten gezeigt:
Router(config)#class-map match-any http-hacks Router(config-cmap)#match protocol http url "*default.ida*" Router(config-cmap)#match protocol http url "*cmd.exe*" Router(config-cmap)#match protocol http url "*root.exe*"
Die obige Klassenzuordnung sucht innerhalb von HTTP-URLs und stimmt mit einer der angegebenen Zeichenfolgen überein. Beachten Sie, dass wir neben der default.ida von "Code Red" weitere Dateinamen eingefügt haben. Sie können diese Technik verwenden, um ähnliche Hackerversuche wie den Sadmind-Virus zu blockieren, der in den folgenden Dokumenten erläutert wird:
Erstellen Sie eine Richtlinie, und verwenden Sie den Befehl set, um eingehende "Code Red"-Hacks mit einer Richtlinienzuordnung zu markieren. In diesem Dokument wird der DSCP-Wert 1 (dezimal) verwendet, da dieser Wert wahrscheinlich nicht für anderen Netzwerkverkehr verwendet wird.
Hier markieren wir eingehende "Code Red"-Hacks mit einer Richtlinienzuordnung namens "mark-inbound-http-hacks".
Router(config)#policy-map mark-inbound-http-hacks Router(config-pmap)#class http-hacks Router(config-pmap-c)#set ip dscp 1
Wenden Sie die Richtlinie als eingehende Richtlinie auf der Eingangsschnittstelle an, um eingehende "Code Red"-Pakete zu markieren.
Router(config)#interface serial 0/0 Router(config-if)#service-policy input mark-inbound-http-hacks
Konfigurieren Sie eine ACL, die mit dem DSCP-Wert 1 übereinstimmt, wie in der Dienstrichtlinie festgelegt.
Router(config)#access-list 105 deny ip any any dscp 1 Router(config)#access-list 105 permit ip any any
Hinweis: Die Cisco IOS Software-Versionen 12.2(11) und 12.2(11)T bieten Unterstützung für das log-Schlüsselwort in der ACL bei der Definition von Klassenzuordnungen zur Verwendung mit NBAR (CSCdv48172). Wenn Sie eine frühere Version verwenden, verwenden Sie nicht das log-Schlüsselwort in der ACL. Auf diese Weise werden alle Pakete gezwungen, Prozess-Switching anstelle von CEF-Switching durchzuführen, und NBAR funktioniert nicht, da CEF erforderlich ist.
Wenden Sie die ausgehende ACL auf die Ausgabeschnittstelle an, die mit den Ziel-Webservern verbunden ist.
Router(config)#interface ethernet 0/1 Router(config-if)#ip access-group 105 out
Überprüfen Sie, ob Ihre Lösung wie erwartet funktioniert. Führen Sie den Befehl show access-list aus, und stellen Sie sicher, dass der Wert "match" für die deny-Anweisung inkrementiert wird.
Router#show access-list 105 Extended IP access list 105 deny ip any any dscp 1 log (2406 matches) permit ip any any (731764 matches)
Im Konfigurationsschritt können Sie auch das Senden von nicht erreichbaren IP-Nachrichten mit dem Befehl no ip unreachable auf Schnittstellenebene deaktivieren, um zu vermeiden, dass der Router zu viele Ressourcen benötigt.
Diese Methode wird nicht empfohlen, wenn Sie den DSCP=1-Datenverkehr wie im Abschnitt "Methode B" beschrieben per Richtlinie an Null 0 weiterleiten können.
Bei dieser Methode wird richtlinienbasiertes Routing verwendet, um markierte "Code Red"-Pakete zu blockieren. Sie müssen die Befehle in dieser Methode nicht anwenden, wenn die Methoden A oder C bereits konfiguriert sind.
Im Folgenden werden die Schritte zum Implementieren dieser Methode beschrieben:
Klassifizieren Sie den Datenverkehr, und markieren Sie ihn. Verwenden Sie die Befehle class-map und policy-map aus Methode A.
Verwenden Sie den Befehl service-policy, um die Richtlinie als eingehende Richtlinie auf die Eingangsschnittstelle anzuwenden und eingehende Pakete mit "Code Red" zu kennzeichnen. Siehe Methode A.
Erstellen Sie eine erweiterte IP-Zugriffskontrollliste, die mit den markierten "Code Red"-Paketen übereinstimmt.
Router(config)#access-list 106 permit ip any any dscp 1
Verwenden Sie den Befehl route-map, um eine Routing-Richtlinie zu erstellen.
Router(config)#route-map null_policy_route 10 Router(config-route-map)#match ip address 106 Router(config-route-map)#set interface Null0
Wenden Sie route-map auf die Eingabeschnittstelle an.
Router(config)#interface serial 0/0 Router(config-if)#ip policy route-map null_policy_route
Überprüfen Sie mit dem Befehl show access-list, ob Ihre Lösung wie erwartet funktioniert. Wenn Sie Ausgabe-ACLs verwenden und die ACL-Protokollierung aktiviert haben, können Sie auch die Befehle show log verwenden, wie unten gezeigt:
Router#show access-list 106 Extended IP access list 106 permit ip any any dscp 1 (1506 matches) Router#show log Aug 4 13:25:20: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets Aug 4 13:26:32: %SEC-6-IPACCESSLOGP: list 105 denied tcp A.B.C.D.(0) -> 10.1.1.75(0), 6 packets
Wir können die Verwerfungsentscheidung an der Eingangsschnittstelle des Routers treffen, anstatt an jeder Ausgangsschnittstelle eine Ausgabe-ACL zu benötigen. Wir empfehlen erneut, die sendenden Nachrichten für "IP unreachable" mit dem Befehl no ip unreachables zu deaktivieren.
Diese Methode ist im Allgemeinen am skalierbarsten, da sie weder von PBR noch von Ausgabe-ACLs abhängt.
Klassifizieren Sie den Datenverkehr mithilfe der Befehle class-map, die in Methode A dargestellt werden.
Erstellen Sie eine Richtlinie mit dem Befehl policy-map, und verwenden Sie den Befehl policy, um eine Verwerfungsaktion für diesen Datenverkehr anzugeben.
Router(config)#policy-map drop-inbound-http-hacks Router(config-pmap)#class http-hacks Router(config-pmap-c)#police 1000000 31250 31250 conform-action drop exceed-action drop violate-action drop
Verwenden Sie den Befehl service-policy, um die Richtlinie als eingehende Richtlinie auf die Eingangsschnittstelle anzuwenden und die "Code Red"-Pakete zu verwerfen.
Router(config)#interface serial 0/0 Router(config-if)#service-policy input drop-inbound-http-hacks
Überprüfen Sie mit dem Befehl show policy-map interface, ob Ihre Lösung wie erwartet funktioniert. Stellen Sie sicher, dass für die Klasse und die einzelnen Übereinstimmungskriterien inkrementelle Werte angezeigt werden.
Router#show policy-map interface serial 0/0 Serial0/0 Service-policy input: drop-inbound-http-hacks Class-map: http-hacks (match-any) 5 packets, 300 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: protocol http url "*default.ida*" 5 packets, 300 bytes 5 minute rate 0 bps Match: protocol http url "*cmd.exe*" 0 packets, 0 bytes 5 minute rate 0 bps Match: protocol http url "*root.exe*" 0 packets, 0 bytes 5 minute rate 0 bps police: 1000000 bps, 31250 limit, 31250 extended limit conformed 5 packets, 300 bytes; action: drop exceeded 0 packets, 0 bytes; action: drop violated 0 packets, 0 bytes; action: drop conformed 0 bps, exceed 0 bps, violate 0 bps Class-map: class-default (match-any) 5 packets, 300 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any
Beachten Sie bei der Verwendung von NBAR mit den in diesem Dokument beschriebenen Methoden, dass die folgenden Funktionen von NBAR nicht unterstützt werden:
Mehr als 24 übereinstimmende URLs, HOSTs oder MIME-Typen
Übereinstimmung über die ersten 400 Byte in einer URL
Nicht-IP-Datenverkehr
Multicast- und andere Nicht-CEF-Switching-Modi
Fragmentierte Pakete
Pipeline für persistente HTTP-Anfragen
URL/HOST/MIME/Klassifizierung mit sicherem HTTP
Asymmetrische Datenströme durch Stateful-Protokolle
Pakete, die vom Router mit NBAR ausgehen oder an diesen gerichtet sind
Sie können NBAR nicht auf den folgenden logischen Schnittstellen konfigurieren:
Fast EtherChannel
Schnittstellen, die Tunneling oder Verschlüsselung verwenden
VLANs
Wählschnittstellen
PPP mit mehreren Verbindungen
Hinweis: NBAR kann in VLANs ab Cisco IOS Version 12.1(13)E konfiguriert werden, wird jedoch nur vom Software-Switching-Pfad unterstützt.
Da NBAR nicht zur Klassifizierung des Ausgangsdatenverkehrs auf einer WAN-Verbindung verwendet werden kann, für die Tunneling oder Verschlüsselung verwendet wird, sollte es stattdessen auf andere Schnittstellen des Routers, z. B. die LAN-Schnittstelle, angewendet werden, um die Eingangsklassifizierung durchzuführen, bevor der Datenverkehr zur Ausgabe an die WAN-Verbindung weitergeleitet wird.
Weitere NBAR-Informationen finden Sie unter den Links im Abschnitt Zugehörige Informationen.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
08-Sep-2014 |
Erstveröffentlichung |