In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
Die Identity Services Engine (ISE) Version 1.3 unterstützt die neue API pxGrid. Dieses moderne und flexible Protokoll, das Authentifizierung, Verschlüsselung und Zugriffsrechte (Gruppen) unterstützt, ermöglicht eine einfache Integration mit anderen Sicherheitslösungen. Dieses Dokument beschreibt die Verwendung der Anwendung pxLog, die als Machbarkeitsstudie geschrieben wurde. pxLog kann Syslog-Meldungen vom Intrusion Prevention System (IPS) empfangen und pxGrid-Meldungen an die ISE senden, um den Angreifer in Quarantäne zu setzen. Daher verwendet die ISE RADIUS Change of Authorization (CoA), um den Autorisierungsstatus des Endpunkts zu ändern, der den Netzwerkzugriff beschränkt. All dies geschieht für den Endbenutzer transparent.
In diesem Beispiel wurde Snort als IPS verwendet. Es kann jedoch auch jede andere Lösung verwendet werden. Eigentlich muss es kein IPS sein. Es muss lediglich die Syslog-Meldung mit der IP-Adresse des Angreifers an pxLog gesendet werden. Dies schafft die Möglichkeit zur Integration einer Vielzahl von Lösungen.
Dieses Dokument beschreibt auch, wie pxGrid-Lösungen mit den typischen Problemen und Einschränkungen zu beheben und zu testen.
Haftungsausschluss: Die Anwendung pxLog wird von Cisco nicht unterstützt. Dieser Artikel wurde als Machbarkeitsstudie verfasst. Der Hauptzweck bestand darin, es während des Wettetests der pxGrid-Implementierung auf der ISE zu verwenden.
Cisco empfiehlt, Erfahrung mit der Konfiguration der Cisco ISE und Grundkenntnisse in den folgenden Bereichen zu haben:
Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen:
Der Datenverkehrsfluss sieht wie im Netzwerkdiagramm dargestellt folgendermaßen aus:
Die Lösung besteht darin, eine Reihe von Anwendungen auf einem Linux-System zu installieren:
Die pxLog-Anwendung verwendet folgende Bibliotheken:
Alle diese Bibliotheken befinden sich bereits im lib-Verzeichnis des Projekts, sodass keine weiteren Java ARchive (JAR)-Dateien heruntergeladen werden müssen.
So installieren Sie die Anwendung:
Dieser Artikel konzentriert sich nicht auf ein bestimmtes IPS, weshalb nur eine kurze Erläuterung gegeben ist.
Snort wird inline mit dem DAQ-Support konfiguriert. Datenverkehr wird mit iptables umgeleitet:
iptables -I FORWARD -j ACCEPT
iptables -I FORWARD -j NFQUEUE --queue-num 1
Nach der Inspektion wird es eingefügt und gemäß den Standard-IP-Regeln weitergeleitet.
Es wurden einige benutzerdefinierte Snort-Regeln konfiguriert (die Datei /etc/snort/rules/test.rules ist in der globalen Konfiguration enthalten).
alert icmp any any -> any any (itype:8; dsize:666<>686; sid:100122)
alert icmp any any -> any any (itype:8; ttl: 6; sid:100124)
Snort sendet eine Syslog-Meldung, wenn die Time To Live (TTL) des Pakets gleich 6 ist oder die Nutzlast zwischen 666 und 686 liegt. Der Datenverkehr wird nicht von Snort blockiert.
Außerdem sollten Schwellenwerte festgelegt werden, um sicherzustellen, dass die Warnmeldungen nicht zu häufig ausgelöst werden (/etc/snort/threshold.conf):
event_filter gen_id 1, sig_id 100122, type limit, track by_src, count 1, seconds 60
event_filter gen_id 1, sig_id 100124, type limit, track by_src, count 1, seconds 60
Anschließend zeigt der Syslog-Server auf den pxLog-Computer (/etc/snort/snort.conf):
output alert_syslog: host=10.222.0.61:514, LOG_AUTH LOG_ALER
Bei einigen Versionen von Snort gibt es Bugs im Zusammenhang mit der Syslog-Konfiguration. Anschließend können die Standardeinstellungen verwendet werden, die auf den lokalen Host verweisen, und syslog-ng kann konfiguriert werden, um bestimmte Nachrichten an den pxLog-Host weiterzuleiten.
EPS sollte aktiviert (standardmäßig deaktiviert) sein über Administration > Settings:
Dadurch können Sie die Quarantäne-/Entquarantäne-Funktion verwenden.
Die erste Regel tritt nur auf, wenn der Endpunkt in Quarantäne gestellt wird. Anschließend wird der eingeschränkte Zugriff dynamisch von der RADIUS-CoA erzwungen. Der Switch muss außerdem Netzwerkgeräten mit dem richtigen gemeinsamen geheimen Schlüssel hinzugefügt werden.
Der pxGrid-Status kann über die CLI überprüft werden:
lise/admin# show application status ise
ISE PROCESS NAME STATE PROCESS ID
--------------------------------------------------------------------
Database Listener running 6717
Database Server running 51 PROCESSES
Application Server running 9486
Profiler Database running 7804
AD Connector running 10058
M&T Session Database running 7718
M&T Log Collector running 9752
M&T Log Processor running 9712
Certificate Authority Service running 9663
pxGrid Infrastructure Service running 14979
pxGrid Publisher Subscriber Service running 15281
pxGrid Connection Manager running 15248
pxGrid Controller running 15089
Identity Mapping Service running 9962
Es gibt auch separate Debugs für pxGrid (Administration > Logging > Debug Log Configuration > pxGrid). Debugdateien werden im pxGrid-Verzeichnis gespeichert. Die wichtigsten Daten befinden sich im Verzeichnis pxgrid/pxgrid-jabberd.log und im Verzeichnis pxgrid/pxgrid-controller.log.
Die Anwendung pxLog wird beim Start von Tomcat automatisch bereitgestellt.
pxLog muss Syslog-Meldungen verarbeiten und darauf basierende Aktionen ausführen. Um eine neue Regel hinzuzufügen, wählen Sie Regeln verwalten:
Das erzwingbare Modul sucht nun nach diesem regulären Ausdruck (RegExp) in der Syslog-Meldung "snort[". Wird sie gefunden, sucht sie nach allen IP-Adressen und wählt die vor der letzten aus. Dies entspricht den meisten Sicherheitslösungen. Weitere Informationen finden Sie im Abschnitt "Syslog". Diese IP-Adresse (Angreifer) wird über pxGrid unter Quarantäne gestellt. Es kann auch eine detailliertere Regel verwendet werden (z. B. die Signaturnummer).
Die Microsoft Windows 7-Station initiiert eine verkabelte dot1x-Sitzung. Cisco AnyConnect NAM wurde als Komponente verwendet. Die EAP-Methode (Extensible Authentication Protocol-Protected EAP) wird konfiguriert.
Das ISE Dot1x-Autorisierungsprofil für vollständigen Zugriff wird ausgewählt. Der Switch lädt die Zugriffsliste herunter, um den vollständigen Zugriff zu gewähren:
3750#show authentication sessions interface g0/17
Interface: GigabitEthernet0/17
MAC Address: 0050.b611.ed31
IP Address: 10.221.0.240
User-Name: cisco
Status: Authz Success
Domain: DATA
Security Policy: Should Secure
Security Status: Unsecure
Oper host mode: single-host
Oper control dir: both
Authorized By: Authentication Server
Vlan Policy: N/A
ACS ACL: xACSACLx-IP-PERMIT_ALL-53fc9dbe
Session timeout: N/A
Idle timeout: N/A
Common Session ID: 0A01000C000037E6BAB267CF
Acct Session ID: 0x00003A70
Handle: 0xA100080E
Runnable methods list:
Method State
dot1x Authc Success
3750#show ip access-lists interface g0/17
permit ip any any
Dies zeigt, was passiert, wenn Sie von einem Microsoft Windows-Paket mit TTL = 7 senden:
c:\> ping 10.222.0.61 -i 7 -n 1
Dieser Wert wird in Snort in der Weiterleitungskette dekrementiert, und es wird ein Alarm ausgelöst. Daraufhin wird eine Syslog-Meldung an pxLog gesendet:
Sep 6 22:10:31 snort snort[6310]: [1:100124:0] ALERT {ICMP} 10.221.0.240 ->
10.222.0.61
Das pxLog empfängt die Syslog-Meldung, verarbeitet sie und fordert die Quarantäne dieser IP-Adresse an. Dies kann bestätigt werden, wenn Sie die Protokolle überprüfen:
Die ISE meldet, dass die IP-Adresse in Quarantäne gestellt wurde:
Das Ergebnis: Die Autorisierungsrichtlinie wird überprüft, eine Quarantäne ausgewählt und RADIUS CoA gesendet, um den Autorisierungsstatus auf dem Switch für den jeweiligen Endpunkt zu aktualisieren.
Dies ist die CoA-Abschlussmeldung, die den Supplicant dazu zwingt, eine neue Sitzung zu initiieren und eingeschränkten Zugriff zu erhalten (Permit_ICMP):
Das Ergebnis kann auf dem Switch bestätigt werden (eingeschränkter Zugriff für den Endpunkt):
3750#show authentication sessions interface g0/17
Interface: GigabitEthernet0/17
MAC Address: 0050.b611.ed31
IP Address: 10.221.0.240
User-Name: cisco
Status: Authz Success
Domain: DATA
Security Policy: Should Secure
Security Status: Unsecure
Oper host mode: single-host
Oper control dir: both
Authorized By: Authentication Server
Vlan Policy: N/A
ACS ACL: xACSACLx-IP-PERMIT_ICMP-53fc9dc5
Session timeout: N/A
Idle timeout: N/A
Common Session ID: 0A01000C000037E7BAB7D68C
Acct Session ID: 0x00003A71
Handle: 0xE000080F
Runnable methods list:
Method State
dot1x Authc Success
3750#show ip access-lists interface g0/17
permit icmp any any
Zu diesem Zeitpunkt beschließt der Administrator, die Quarantäne für diesen Endpunkt aufzuheben:
Derselbe Vorgang kann direkt von der ISE ausgeführt werden:
Die ISE überprüft erneut die Regeln und aktualisiert den Autorisierungsstatus auf dem Switch (vollständiger Netzwerkzugriff wird gewährt):
Der Bericht bestätigt Folgendes:
Die pxLog-Anwendung wurde geschrieben, um die Funktionalität der pxGrid-API zu demonstrieren. Sie bietet Ihnen folgende Möglichkeiten:
Weitere Funktionen sind für die Zukunft geplant.
Hier sind einige Screenshots von pxLog:
Der Client (Benutzer) kann jeweils Mitglied einer Gruppe sein. Die beiden am häufigsten verwendeten Gruppen sind:
Wie bereits erwähnt, müssen beide Client-Anwendungen, pxLog und pxGrid-Controller (ISE), über Zertifikate verfügen, um miteinander kommunizieren zu können. Die Anwendung pxLog speichert diese in den Java KeyStore-Dateien:
Dateien sind durch ein Kennwort geschützt (Standard: cisco123). Der Speicherort und die Kennwörter können unter WEB-INF/web.xml geändert werden.
So erstellen Sie einen neuen Java KeyStore:
pxgrid store # keytool -import -alias ca -keystore root.jks -file cert-ca.der
pxgrid store # keytool -import -alias mnt -keystore root.jks -file cert-mnt.der
pxgrid store # keytool -import -alias ca -keystore client.jks -file cert-ca.der
pxgrid store # keytool -genkey -alias clientcert -keyalg RSA -keystore client.jks -
keysize 2048
pxgrid store # keytool -certreq -alias clientcert -keystore client.jks -
file cert-client.csr
pxgrid store # keytool -import -alias clientcert -keystore client.jks -file cert-
client.der
pxgrid store # keytool -list -v -keystore client.jks
pxgrid store # keytool -list -v -keystore root.jks
Vorsicht: Beim Upgrade des ISE 1.3-Knotens besteht die Möglichkeit, das Identitätszertifikat beizubehalten. Die CA-Signatur wird jedoch entfernt. Daher verwendet die aktualisierte ISE ein neues Zertifikat, hängt das CA-Zertifikat jedoch nie an die SSL/ServerHello-Nachricht an. Dies löst den Fehler auf dem Client aus, der (gemäß RFC) eine vollständige Kette erwartet.
Die pxGrid-API für verschiedene Funktionen (z.B. Session-Download) führt eine zusätzliche Validierung durch. Der Client kontaktiert die ISE und empfängt den ISE-Hostnamen, der durch den Befehl hostname in der CLI definiert wird. Anschließend versucht der Client, eine DNS-Auflösung für diesen Hostnamen auszuführen und Daten von dieser IP-Adresse abzurufen. Wenn die DNS-Auflösung für den ISE-Hostnamen fehlschlägt, versucht der Client nicht, Daten abzurufen.
Vorsicht: Beachten Sie, dass für diese Auflösung nur der Hostname verwendet wird, der in diesem Szenario aufgeführt ist, nicht der vollqualifizierte Domänenname (Fully Qualified Domain Name, FQDN), der in diesem Szenario "lise.example.com" lautet.
Cisco veröffentlicht und unterstützt die pxGrid-API. Es gibt ein Paket mit dem Namen:
pxgrid-sdk-1.0.0-167
Im Inneren befinden sich:
Dies ist die Liste der Sicherheitslösungen, die Syslog-Meldungen mit der IP-Adresse des Angreifers senden. Diese können einfach in pxLog integriert werden, solange Sie die richtige RegExp-Regel in der Konfiguration verwenden.
Snort sendet Syslog-Warnungen in folgendem Format:
host[id] [sig_gen, sig_id, sig_sub] [action] [msg] [proto] [src] [dst]
Hier ein Beispiel:
snort[6310]: [1:100124:0] ALERT {ICMP} 10.221.0.240 -> 10.222.0.61
Die IP-Adresse des Angreifers ist immer die Sekunde vor der letzten (Ziel). Es ist einfach, eine detaillierte RegExp für eine bestimmte Signatur zu erstellen und die IP-Adresse des Angreifers zu extrahieren. Hier ist ein Beispiel für RegExp für die Signatur 100124 und die Nachricht Internet Control Message Protocol (ICMP):
snort[\.*:100124:.*ICMP.*
Wenn die ASA für HTTP (z. B. Inspection) konfiguriert ist, sieht die entsprechende Syslog-Meldung folgendermaßen aus:
Mar 12 2014 14:36:20: %ASA-5-415006: HTTP - matched Class 23:
MS13-025_class in policy-map MS_Mar_2013_policy, URI matched -
Dropping connection from inside:192.168.60.88/2135 to
outside:192.0.2.63/80
Auch hier könnte eine detaillierte RegExp verwendet werden, um diese Nachrichten zu filtern und die IP-Adresse des Angreifers zu extrahieren, die zweite vor der letzten.
Der Sourcefire-Sensor sendet beispielsweise die folgende Meldung:
Jan 28 19:46:19 IDS01 SFIMS: [CA IDS][Policy1][119:15:1] http_inspect: OVERSIZE
REQUEST-URI DIRECTORY [Classification: Potentially Bad Traffic] [Priority: 2]
{TCP} 10.12.253.47:55504 -> 10.15.224.60:80
Auch hier ist es einfach, die IP-Adresse des Angreifers zu extrahieren, da dieselbe Logik zutrifft. Außerdem werden der Richtlinienname und die Signatur bereitgestellt, sodass die pxLog-Regel detailliert sein kann.
Hier ein Beispiel, das von Juniper Intrusion Detection & Prevention (IDP) gesendet wurde:
dayId="20061012" recordId="0" timeRecv="2006/10/12
21:52:21" timeGen="2006/10/12 21:52:21" domain="" devDomVer2="0"
device_ip="10.209.83.4" cat="Predefined" attack="TROJAN:SUBSEVEN:SCAN"
srcZn="NULL" srcIntf="NULL" srcAddr="192.168.170.20" srcPort="63396"
natSrcAddr="NULL" natSrcPort="0" dstZn="NULL" dstIntf="NULL"
dstAddr="192.168.170.10" dstPort="27374" natDstAddr="NULL" natDstPort="0"
protocol="TCP" ruleDomain="" ruleVer="5" policy="Policy2" rulebase="IDS"
ruleNo="4" action="NONE" severity="LOW" alert="no" elaspedTime="0" inbytes="0"
outbytes="0" totBytes="0" inPak="0" outPak="0" totPak="0" repCount="0"
packetData="no" varEnum="31" misc="<017>'interface=eth2" user="NULL"
app="NULL" uri="NULL"
Die IP-Adresse des Angreifers kann auf die gleiche Weise extrahiert werden.
JunOS ist ähnlich:
Jul 16 10:09:39 JuniperJunOS: asp[8265]:
ASP_IDS_TCP_SYN_ATTACK: asp 3: proto 6 (TCP),
ge-0/0/1.0 10.60.0.123:2280 -> 192.168.1.12:80, TCP
SYN flood attack
Hier sind einige Beispiele für Linux-iptables.
Jun 15 23:37:33 netfilter kernel: Inbound IN=lo OUT=
MAC=00:13:d3:38:b6:e4:00:01:5c:22:9b:c2:08:00 src=10.0.0.1 DST=10.0.0.100 LEN=60
TOS=0x10 PREC=0x00 TTL=64 ID=47312 DF PROTO=TCP SPT=40945 DPT=3003 WINDOW=32767
RES=0x00 SYN URGP=0
Sie können Syslog-Informationen für jeden Pakettyp mit den erweiterten Funktionen senden, die von den iptable-Modulen bereitgestellt werden, z. B. Verbindungsnachverfolgung, xtables, rpfilters, Mustervergleich usw.
Hier ist eine Beispielmeldung für IPFW-Blockierungsfragmente:
Sep 7 15:03:14 delta ipfw: 11400 Deny UDP 10.61.216.50 10.81.199.2 in via fxp0
(frag 52639:519@1480)
Die ISE ist in der Lage, die Art der Sitzungen im Hinblick auf die CoA-Verarbeitung zu erkennen.
Das EPS-Modul ist einfach. Wenn eine Quarantäne ausgeführt wird, wird immer ein CoA-Beendigungspaket gesendet. Bei kabelgebundenen/Wireless-Sitzungen stellt dies kein Problem dar (alle 802.1x-Komponenten können eine zweite EAP-Sitzung transparent initiieren). Wenn die ASA jedoch die CoA erhält und beendet wird, wird die VPN-Sitzung beendet, und dem Endbenutzer wird Folgendes angezeigt:
Es gibt zwei mögliche Lösungen, um das AnyConnect VPN zur automatischen Wiederherstellung der Verbindung zu zwingen (im XML-Profil konfiguriert):
Auch wenn die neue Sitzung eingerichtet wurde, wählt die ASA die neue Audit-Sitzungs-ID. Aus Sicht der ISE ist dies eine neue Sitzung, und es besteht keine Chance, auf die Quarantäneregeln zu stoßen. Auch für die VPNs ist es nicht möglich, die MAC-Adresse des Endpunkts als Identität zu verwenden, im Gegensatz zu kabelgebundenen/Wireless-dot1x.
Die Lösung besteht darin, das EPS zu zwingen, sich wie die ISE zu verhalten, und den richtigen CoA-Typ basierend auf der Sitzung zu senden. Diese Funktion wird in ISE-Version 1.3.1 eingeführt.
Hier ist eine Liste der pxGrid Partner und Lösungen:
Hier finden Sie weitere Partner und Lösungen:
Eine vollständige Liste der Sicherheitslösungen finden Sie im Marketplace-Lösungskatalog.
In ISE Version 1.3 stehen drei Arten von APIs zur Verfügung.
Hier ein Vergleich:
RUHE | Externe RESTful | pxGrid | |
---|---|---|---|
Client-Authentifizierung | Benutzername + Kennwort (einfache HTTP-Authentifizierung) |
Benutzername + Kennwort (einfache HTTP-Authentifizierung) |
Zertifikat |
Privilegientrennung | nein |
Begrenzt (ERS-Administrator) |
ja (Gruppen) |
Zugriff | MnT | MnT | MnT |
Verkehr | tcp/443 (HTTPS) | tcp/9060 (HTTPS) | TCP/5222 (XMPP) |
HTTP-Methode | HOLEN | GET/POST/PUT | GET/POST |
Standardmäßig aktiviert | ja | nein | nein |
Anzahl der Vorgänge | wenige | viele | wenige |
CoA beenden | unterstützt | nein | unterstützt |
CoA erneut authentifizieren | unterstützt | nein | Unterstützt * |
Benutzeroperationen | nein | ja | nein |
Endgeräteoperationen | nein | ja | nein |
Endgeräte-Identitätsgruppenoperationen | nein | ja | nein |
Quarantäne (IP, MAC) | nein | nein | ja |
Aus Quarantäne entfernen (IP, MAC) | nein | nein | ja |
PortBounce/Herunterfahren | nein | nein | ja |
Gastbenutzerbetrieb | nein | ja | nein |
Gastportalbetrieb | nein | ja | nein |
Betrieb von Netzwerkgeräten | nein | ja | nein |
Betrieb von Netzwerkgerätegruppen | nein | ja | nein |
* Quarantäne verwendet Unified CoA-Unterstützung von ISE Version 1.3.1.
pxLog kann von Sourceforge heruntergeladen werden.
Das Software Development Kit (SDK) ist bereits enthalten. Die aktuelle SDK- und API-Dokumentation für pxGrid erhalten Sie von Ihrem Partner oder vom Cisco Account Team.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
23-Dec-2014 |
Erstveröffentlichung |