Cisco Secure ACS-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie mit einem Google Security Operations-Weiterleiter Cisco Secure Access Control Server-Protokolle (ACS) erfassen können.
Weitere Informationen finden Sie unter Datenaufnahme in Google Security Operations.
Mit einem Datenaufnahmelabel wird der Parser angegeben, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel CISCO_ACS
.
Cisco Secure ACS konfigurieren
- Melden Sie sich mit Administratoranmeldedaten in der Cisco Secure ACS-Konsole an.
- Wählen Sie in der Cisco Secure ACS-Konsole Systemadministration > Konfiguration > Protokollkonfiguration > Remote-Protokollziele aus.
- Klicken Sie auf Erstellen.
Geben Sie im Fenster Erstellen Werte für die folgenden Felder ein:
Feld Beschreibung Name Name des Google Security Operations-Weiterleiters. Beschreibung Beschreibung des Google Security Operations-Weiterleitungsservers. IP-Adresse IP-Adresse des Google Security Operations-Forwarders. Erweiterte syslog-Optionen verwenden Wählen Sie diese Option aus, um die erweiterten syslog-Optionen zu aktivieren. Zieltyp Wählen Sie „TCP Syslog“ oder „UDP Syslog“ aus. Port Verwenden Sie einen hohen Port, z. B. 10514. Einrichtungscode LOCAL6 (Code = 22; Standard) Zulässige Höchstlänge Der empfohlene Wert ist 1.024. Klicken Sie auf Senden. Das Fenster Remote-Logziele mit der neuen Konfiguration für Remote-Logziele wird angezeigt.
Wählen Sie in der Cisco Secure ACS-Konsole Systemadministration > Konfiguration > Protokollkonfiguration > Protokollkategorien > Pro Instanz aus.
Wählen Sie ACS aus und klicken Sie dann auf Konfigurieren.
Wählen Sie im Fenster Pro Instanz eine Logging-Kategorie aus und klicken Sie auf Bearbeiten.
Auf dem Tab Allgemein muss für einige Protokollierungskategorien die Protokollierungsschwere auf „Standard“ oder wie vom Anbieter angegeben festgelegt sein.
Bei Cisco Secure ACS ist der Standardschweregrad Warnung für alle Protokollierungskategorien, mit Ausnahme derer, für die der Schweregrad nicht geändert werden kann, z. B. AAA-Audit-Benachrichtigung, Ressourcenerfassungs-Benachrichtigung, administrative und betriebliche Audit-Benachrichtigung und Systemstatistik-Benachrichtigung.
Klicken Sie auf den Tab Remote-Syslog-Ziel und verschieben Sie das neu erstellte Remote-Ziel von Verfügbare Ziele zu Ausgewählte Ziele.
Klicken Sie auf Senden.
Wenn Sie Remoteziele für andere Logging-Kategorien konfigurieren möchten, wiederholen Sie die Schritte 8 bis 10.
Google Security Operations-Weiterleiter und syslog für die Aufnahme von Cisco Secure ACS-Protokollen konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Weiterleitungen.
- Klicken Sie auf Neuen Weiterleiter hinzufügen.
- Geben Sie im Feld Name des Absenders einen eindeutigen Namen für den Absender ein.
- Klicken Sie auf Senden. Der Weiterleiter wird hinzugefügt und das Fenster Aufnehmerkonfiguration hinzufügen wird angezeigt.
- Geben Sie im Feld Name des Collectors einen Namen ein.
- Wählen Sie Cisco ACS als Logtyp aus.
- Wählen Sie Syslog als Typ des Collectors aus.
- Konfigurieren Sie die folgenden obligatorischen Eingabeparameter:
- Protokoll: Geben Sie das Protokoll an.
- Adresse: Geben Sie die Ziel-IP-Adresse oder den Hostnamen an, unter dem sich der Collector befindet, und die Adressen der Syslog-Daten.
- Port: Gibt den Zielport an, an dem sich der Collector befindet und auf Syslog-Daten wartet.
- Klicken Sie auf Senden.
Weitere Informationen zu Google Security Operations-Weiterleitungen finden Sie in der Dokumentation zu Google Security Operations-Weiterleitungen. Informationen zu den Anforderungen für die einzelnen Weiterleitungstypen finden Sie unter Weiterleitungskonfiguration nach Typ. Wenn beim Erstellen von Weiterleitungen Probleme auftreten, wenden Sie sich an den Google Security Operations-Support.
Referenz für die Feldzuordnung
Dieser Parser verarbeitet Cisco ACS-Protokolle, einschließlich Authentifizierung, Ressourcenerfassung, Diagnose und Systemstatistiken. Es verwendet Grok-Muster, um Felder aus verschiedenen Protokollformaten (SYSLOG + KV, LEEF) zu extrahieren, Zeitstempel und Zeitzonen zu normalisieren und Schlüsselfelder dem UDM zuzuordnen. Dabei werden verschiedene Protokolltypen mit einer speziellen Logik für erfolgreiche/fehlgeschlagene Authentifizierungen, TACACS+-Ressourcenerfassung und RADIUS-Ereignisse verarbeitet. Außerdem werden dem UDM zusätzliche Felder wie Geräteinformationen und Authentifizierungsdetails hinzugefügt.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
Acct-Authentic |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Authentic übernommen. |
Acct-Delay-Time |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Delay-Time übernommen. |
Acct-Input-Octets |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Input-Octets übernommen. |
Acct-Input-Packets |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Input-Packets übernommen. |
Acct-Output-Octets |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Output-Octets übernommen. |
Acct-Output-Packets |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Output-Packets übernommen. |
Acct-Session-Id |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Session-Id übernommen. |
Acct-Session-Time |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Session-Time übernommen. |
Acct-Status-Type |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Status-Type übernommen. |
Acct-Terminate-Cause |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Acct-Terminate-Cause übernommen. |
ACSVersion |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld ACSVersion übernommen. |
AD-Domain |
principal.group.group_display_name |
Der Wert wird aus dem Feld AD-Domain übernommen. |
AD-IP-Address |
principal.ip |
Der Wert wird aus dem Feld AD-IP-Address übernommen. |
Called-Station-ID |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Called-Station-ID übernommen. |
Calling-Station-ID |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Calling-Station-ID übernommen. |
Class |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Class übernommen. |
CmdSet |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
ConfigVersionId |
additional.fields[].value.number_value |
Der Wert wird aus dem Feld ConfigVersionId übernommen und in eine Gleitkommazahl konvertiert. |
DestinationIPAddress |
target.ip , intermediary.ip |
Der Wert wird aus dem Feld DestinationIPAddress übernommen. intermediary.ip leitet sich von Device IP Address ab. |
DestinationPort |
target.port |
Der Wert wird aus dem Feld DestinationPort übernommen und in eine Ganzzahl konvertiert. |
Device IP Address |
intermediary.ip |
Der Wert wird aus dem Feld Device IP Address übernommen. |
Device Port |
intermediary.port |
Der Wert wird aus dem Feld Device Port übernommen und in eine Ganzzahl konvertiert. |
DetailedInfo |
security_result.summary , security_result.description , security_result.action |
Wenn DetailedInfo „Authentifizierung erfolgreich“ ist, security_result.summary „Erfolgreiche Anmeldung“ und security_result.action „ZULASSEN“. Wenn DetailedInfo „Ungültiger Nutzername oder ungültiges Passwort angegeben“ enthält, ist security_result.summary „Anmeldung fehlgeschlagen“ und security_result.action BLOCK. security_result.description leitet sich von log_header ab. |
Framed-IP-Address |
principal.ip |
Der Wert wird aus dem Feld Framed-IP-Address übernommen. |
Framed-Protocol |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Framed-Protocol übernommen. |
NAS-IP-Address |
target.ip |
Der Wert wird aus dem Feld NAS-IP-Address übernommen. |
NAS-Port |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld NAS-Port übernommen. |
NAS-Port-Id |
target.port |
Der Wert wird aus dem Feld NAS-Port-Id übernommen und in eine Ganzzahl konvertiert. |
NAS-Port-Type |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld NAS-Port-Type übernommen. |
NetworkDeviceName |
target.hostname |
Der Wert wird aus dem Feld NetworkDeviceName übernommen. |
Protocol |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Protocol übernommen. |
RadiusPacketType |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
Remote-Address |
principal.ip , target.ip |
Der Wert wird aus dem Feld Remote-Address übernommen und als IP-Adresse geparst. Sie wird für Authentifizierungsereignisse mit principal.ip und für Abrechnungs- und Diagnoseereignisse mit target.ip abgeglichen. |
RequestLatency |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld RequestLatency übernommen. |
Response |
principal.user.userid |
Wenn Response „Nutzername“ enthält, wird der Nutzername extrahiert und principal.user.userid zugeordnet. |
SelectedAccessService |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld SelectedAccessService übernommen. |
SelectedAuthenticationIdentityStores |
security_result.detection_fields[].value |
Der Wert wird aus dem Feld SelectedAuthenticationIdentityStores übernommen. |
SelectedAuthorizationProfiles |
security_result.detection_fields[].value |
Der Wert wird aus dem Feld SelectedAuthorizationProfiles übernommen. |
Service-Type |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Service-Type übernommen. |
Tunnel-Client-Endpoint |
additional.fields[].value.string_value |
Der Wert wird aus dem Feld Tunnel-Client-Endpoint übernommen und als IP-Adresse geparst. |
User |
target.user.userid |
Der Wert wird aus dem Feld User übernommen. |
UserName |
target.user.userid , principal.mac |
Wenn UserName eine MAC-Adresse ist, wird sie analysiert und principal.mac zugeordnet. Andernfalls wird ihm target.user.userid zugewiesen. |
ac-user-agent |
network.http.user_agent |
Der Wert wird aus dem Feld ac-user-agent übernommen. |
cat |
metadata.description |
Der Wert wird aus dem Feld cat übernommen. |
device-mac |
principal.mac |
Der Wert wird aus dem Feld device-mac übernommen, Doppelpunkte werden hinzugefügt und der Wert wird in Kleinbuchstaben umgewandelt. Wenn device-mac „00“ ist, wird es durch „00:00:00:00:00:00“ ersetzt. |
device-platform |
principal.asset.platform_software.platform |
Wenn device-platform „win“ ist, wird principal.asset.platform_software.platform der Wert „WINDOWS“ zugewiesen. |
device-platform-version |
principal.asset.platform_software.platform_version |
Der Wert wird aus dem Feld device-platform-version übernommen. |
device-public-mac |
principal.mac |
Der Wert wird aus dem Feld device-public-mac übernommen, Bindestriche werden durch Doppelpunkte ersetzt und der Wert wird in Kleinbuchstaben umgewandelt. |
device-type |
principal.asset.hardware.model |
Der Wert wird aus dem Feld device-type übernommen. |
device-uid |
principal.asset.asset_id |
Der Wert wird aus dem Feld device-uid übernommen und mit „ASSET-ID: “ vorangestellt. |
device-uid-global |
principal.asset.product_object_id |
Der Wert wird aus dem Feld device-uid-global übernommen. |
hostname |
principal.hostname |
Der Wert wird aus dem Feld hostname übernommen. |
ip:source-ip |
principal.ip |
Der Wert wird aus dem Feld ip:source-ip übernommen. |
kv.ADDomain |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.Airespace-Wlan-Id |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.AuthenticationIdentityStore |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.AVPair |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.ExternalGroups |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.FailureReason |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.IdentityAccessRestricted |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.IdentityGroup |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.NAS-Identifier |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.SelectedShellProfile |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.ServiceSelectionMatchedRule |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.State |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.Step |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.Tunnel-Medium-Type |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.Tunnel-Private-Group-ID |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.Tunnel-Type |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.UseCase |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.UserIdentityGroup |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.VendorSpecific |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.attribute-131 |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.attribute-89 |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.cisco-av-pair |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
kv.cisco-av-pair:CiscoSecure-Group-Id |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
leef_version |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
log_header |
metadata.description |
Der Wert wird aus dem Feld log_header übernommen. |
log_id |
metadata.product_log_id |
Der Wert wird aus dem Feld log_id übernommen. |
log_type |
metadata.product_event_type |
Der Wert wird aus dem Feld log_type übernommen. |
message_severity |
(nicht zugeordnet) | Nicht dem IDM-Objekt zugeordnet. |
product |
metadata.product_name |
Der Wert wird aus dem Feld product übernommen. |
product_version |
metadata.product_version |
Der Wert wird aus dem Feld product_version übernommen. |
server_host |
target.hostname |
Der Wert wird aus dem Feld server_host übernommen. |
timestamp |
metadata.event_timestamp |
Der Wert wird aus dem Feld timestamp und dem Feld timezone (nach Entfernen des Doppelpunkts) übernommen. Der kombinierte Wert wird als Zeitstempel geparst. |
url |
network.dns.questions[].name |
Der Wert wird aus dem Feld url übernommen. |
vendor |
metadata.vendor_name |
Der Wert wird aus dem Feld vendor übernommen. Wird zuerst auf „GENERIC_EVENT“ gesetzt und dann möglicherweise basierend auf den log_type - und geparsten Feldern überschrieben. Kann „USER_LOGIN“, „USER_UNCATEGORIZED“, „NETWORK_DNS“, „NETWORK_CONNECTION“, „STATUS_UPDATE“ oder „STATUS_UNCATEGORIZED“ sein. Wird zuerst auf „Cisco“ festgelegt und dann möglicherweise vom Feld vendor überschrieben. Wird zuerst auf „ACS“ gesetzt und dann möglicherweise vom Feld product überschrieben. Legen Sie „CISCO_ACS“ fest. Legen Sie diesen Wert auf „USERNAME_PASSWORD“ fest. Legen Sie „TACACS“ fest. Legen Sie für RADIUS-Ressourcenerfassung und Diagnoseereignisse „UDP“ fest. Legen Sie für DNS-Ereignisse „DNS“ fest. Abgeleitet aus dem Feld security_action , das je nach Erfolg der Anmeldung festgelegt wird. Legen Sie für erfolgreiche Anmeldungen „successful login occurred“ (Erfolgreiche Anmeldung) und für fehlgeschlagene Anmeldungen „failed login occurred“ (Fehlgeschlagene Anmeldung) fest. Kann auch für bestimmte Diagnoseereignisse des Identitätsspeichers auf „Erfolgreich“ gesetzt werden. Legen Sie für fehlgeschlagene Anmeldeversuche „LOW“ fest. Wird erstellt, indem dem Feld device-uid „ASSET-ID: “ vorangestellt wird. |
Änderungen
2023-09-26
- Verbesserung –
- „hostname“ wurde auf „null“ initialisiert und eine Prüfung hinzugefügt, ob der Hostname nicht null ist, bevor „metadata.event_type“ auf „STATUS_UPDATE“ gesetzt wurde.
- „kv.DeviceIPAddress“ und „kv.Remote-Address“ wurden vor der Zuordnung zu UDM-Feldern einer Prüfung auf gültige IP-Adressen unterzogen.
2022-08-19
- Verbesserung –
- „Nutzername“ wurde „principal.user.userid“ zugeordnet.
- „ip:source-ip“ in „source_ip“ umbenannt und „principal.ip“ zugeordnet
- „kv.audit-session-id“ wurde in „kv.audit_session_id“ umbenannt und „network.session_id“ zugeordnet.
- „kv.AuthenticationMethod“ wurde „additional.fields“ zugeordnet.
- „kv.SelectedAccessService“ wurde „additional.fields“ zugeordnet.
- „kv.SelectedAuthorizationProfiles“ wurde in „security_result.detection_fields“ umgewandelt.
- „kv.SelectedAuthenticationIdentityStores“ wurde „security_result.detection_fields“ zugeordnet.
- „kv.device-uid-global“ wurde „principal.asset.product_object_id“ zugeordnet.
- „kv.device-uid“ wurde „principal.asset.asset_id“ zugeordnet.
- „metadata.event_type“ wurde in „USER_UNCATEGORIZED“ umgewandelt, wenn kv.DestinationIPAddress und kv.NAS-IP-Address und kv.NAS-IP-Address und kv.UserName und kv.NetworkDeviceName null sind.
- Unterstützung für Protokolle im LEEF-Format
2022-06-14
- Verbesserung: Grok wurde so geändert, dass Logs vom Typ „log_type = CSCOacs_Passed_Authentications“ geparst werden, die aufgrund mehrerer Leerzeichen fehlgeschlagen waren.
- Der Wert „device-mac“ wurde für den Protokolltyp „CSCOacs_RADIUS_Accounting“ bei einem ungültigen Wert (00) durch den Dummy-Wert „00:00:00:00:00:00“ ersetzt.
2022-06-06
- Verbesserung: Geparste Protokolle vom Typ „CSCOacs_Passed_Authentications“, die weder „DestinationIPAddress“ noch „NAS-IP-Address“ enthalten.
- Der Typ „metadata.event_type“ wurde für Protokolle vom Typ „CSCOacs_Passed_Authentications“ von „USER_UNCATEGORIZED“ in „USER_LOGIN“ geändert.
2022-05-05
- Verbesserung: Die neu aufgenommenen Protokolle ohne Nachrichtencode werden geparst und gelöscht.
2022-04-27
- Verbesserung: Die Protokolle mit log_type=CISE_TACACS_Accounting wurden geparst.