Cisco IOS-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Cisco IOS-Logs (Internetwork Operating System) mithilfe eines Bindplane-Agents in Google Security Operations aufnehmen. Der Parser transformiert Roh-Syslog-Nachrichten in ein strukturiertes Format, das dem einheitlichen Datenmodell (Unified Data Model, UDM) entspricht. Zuerst werden Felder mithilfe von Grok-Mustern initialisiert und extrahiert, die auf gängigen Cisco IOS-Syslog-Formaten basieren. Anschließend werden die extrahierten Felder den entsprechenden UDM-Feldern zugeordnet, Ereignisse kategorisiert und die Daten mit zusätzlichem Kontext angereichert, bevor das strukturierte Protokoll schließlich im UDM-Format ausgegeben wird.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie müssen Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Sie benötigen erhöhte Zugriffsrechte für Cisco IOS.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei zur Authentifizierung der Datenaufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
Bindplane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Weitere Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet
Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor, z. B.
nano
,vi
oder Notepad.
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: CISCO_IOS raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kundennummer.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.
Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden
Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog unter Cisco IOS konfigurieren
- Melden Sie sich im Cisco IOS an.
Eskalieren Sie die Berechtigungen mit dem folgenden Befehl:
enable
Wechseln Sie mit dem folgenden Befehl in den Konfigurationsmodus:
conf t
Geben Sie die folgenden Befehle ein:
logging host <bindplane-server-ip> transport <tcp/udp> port <port-number> logging source-interface <interface>
- Ersetzen Sie
<bindplane-server-ip>
durch die IP-Adresse des Bindplane-Agents und<port-number>
durch den konfigurierten Port. - Ersetzen Sie
<tcp/udp>
durch das konfigurierte Protokoll für das Bindplane-Agent-Warten, z. B.udp
. - Ersetzen Sie
<interface>
durch die Cisco-Interface-ID.
- Ersetzen Sie
Legen Sie die Prioritätsstufe mit dem folgenden Befehl fest:
logging trap Informational logging console Informational logging severity Informational
Syslog-Einrichtung festlegen:
logging facility syslog
Speichern Sie die Datei und beenden Sie den Vorgang.
Konfigurieren Sie die Einstellungen so, dass sie nach einem Neustart erhalten bleiben. Geben Sie dazu den folgenden Befehl ein:
copy running-config startup-config
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
AcsSessionID | network.session_id | Wert aus dem Feld „AcsSessionID“. |
AcctRequest-Flags | security_result.summary | Wert aus dem Feld „AcctRequest-Flags“. |
AcctRequest-Flags | security_result.action | Wenn AcctRequest-Flags Start enthält, setze es auf ALLOW . Wenn AcctRequest-Flags Stop enthält, setze es auf BLOCK . |
AuthenticationIdentityStore | additional.fields.key = AuthenticationIdentityStore , value = AuthenticationIdentityStore |
Wert aus dem Feld „AuthenticationIdentityStore“. |
AuthenticationMethod | additional.fields.key = AuthenticationMethod , value = AuthenticationMethod |
Wert aus dem Feld „AuthenticationMethod“. |
AuthenticationStatus | security_result.summary | Wert aus dem Feld „AuthenticationStatus“. |
Authentifizierungsmethode | security_result.detection_fields.key = Authen-Method , value = Authen-Method |
Wert aus dem Feld „Authen-Method“. |
Authentifizierungsmethode | extensions.auth.type | Wenn „Authen-Method“ TacacsPlus enthält, setze es auf TACACS . |
AVPair_priv-lvl | security_result.detection_fields.key = AVPair_priv-lvl , value = AVPair_priv-lvl |
Wert aus dem Feld „AVPair_priv-lvl“. |
AVPair_start_time | additional.fields.key = AVPair_start_time , value = AVPair_start_time |
Wert aus dem Feld „AVPair_start_time“. |
AVPair_task_id | additional.fields.key = AVPair_task_id , value = AVPair_task_id |
Wert aus dem Feld „AVPair_task_id“. |
AVPair_timezone | additional.fields.key = AVPair_timezone , value = AVPair_timezone |
Wert aus dem Feld „AVPair_timezone“. |
auditid | metadata.product_log_id | Wert aus dem Feld „auditid“. |
cisco_facility | Nicht dem IDM-Objekt zugeordnet. | |
cisco_message | metadata.description | Wert aus dem Feld „cisco_message“. |
cisco_mnemonic | security_result.rule_name | Wert aus dem Feld „cisco_mnemonic“. |
cisco_severity | security_result.severity | Wird basierend auf dem Wert verschiedenen Schweregraden zugeordnet: 0: WARNUNG, 1: KRITISCH, 2: HOCH, 3: FEHLER, 4: MITTEL, 5: NIEDRIG, 6: INFORMATIONSMELDUNG, 7: INFORMATIONSMELDUNG. |
cisco_severity | security_result.severity_details | Wird basierend auf dem Wert verschiedenen Details zur Schwere zugeordnet: 0: System unusable , 1: Immediate action needed , 2: Critical condition , 3: Error condition , 4: Warning condition , 5: Normal but significant condition , 6: Informational message only , 7: Appears during debugging only . |
cisco_tag | metadata.product_event_type | Wert aus dem Feld „cisco_tag“. |
cisco_tag | metadata.event_type | Wird basierend auf dem Wert verschiedenen Ereignistypen zugeordnet: SYS-6-LOGGINGHOST_STARTSTOP, TRACK-6-STATE, SYS-3-LOGGINGHOST_FAIL, CRYPTO-4-IKMP_NO_SA, HA_EM-3-FMPD_ACTION_NOTRACK, HA_EM-3-FMPD_ERROR: GENERIC_EVENT; IPSEC-3-REPLAY_ERROR, CRYPTO-4-RECVD_PKT_INV_SPI, IPSEC-3-HMAC_ERROR, FW-6-DROP_PKT, SEC-6-IPACCESSLOGP: NETWORK_UNCATEGORIZED; CRYPTO-4-IKMP_BAD_MESSAGE, CRYPTO-6-IKMP_NOT_ENCRYPTED, CRYPTO-6-IKMP_MODE_FAILURE: STATUS_UNCATEGORIZED; SYS-5-CONFIG_I: USER_UNCATEGORIZED. |
ClientLatency | additional.fields.key = ClientLatency , value = ClientLatency |
Wert aus dem Feld „ClientLatency“. |
CmdSet | additional.fields.key = CmdSet , value = CmdSet |
Wert aus dem Feld „CmdSet“. |
Befehl | principal.process.command_line | Wert aus dem Befehlsfeld. |
CPMSessionID | additional.fields.key = CPMSessionID , value = CPMSessionID |
Wert aus dem Feld „CPMSessionID“. |
description | metadata.description | Wert aus dem Feld „Textzeile“. |
DestinationIPAddress | target.asset.ip | Wert aus dem Feld „DestinationIPAddress“. |
DestinationIPAddress | target.ip | Wert aus dem Feld „DestinationIPAddress“. |
DestinationPort | target.port | Wert aus dem Feld „DestinationPort“. |
Device_IP_Address | principal.asset.ip | Wert aus dem Feld „Device_IP_Address“. |
Device_IP_Address | principal.ip | Wert aus dem Feld „Device_IP_Address“. |
Device_Type | additional.fields.key = Device_Type , value = Device_Type |
Wert aus dem Feld „Device_Type“. |
dst_ip | target.asset.ip | Wert aus dem Feld „dst_ip“. |
dst_ip | target.ip | Wert aus dem Feld „dst_ip“. |
dst_port | target.port | Wert aus dem Feld „dst_port“. |
dst_user | target.user.userid | Wert aus dem Feld „dst_user“. |
EnableFlag | security_result.detection_fields.key = EnableFlag , value = EnableFlag |
Wert aus dem Feld „EnableFlag“. |
IdentityGroup | additional.fields.key = IdentityGroup , value = IdentityGroup |
Wert aus dem Feld „IdentityGroup“. |
IdentitySelectionMatchedRule | security_result.detection_fields.key = IdentitySelectionMatchedRule , value = IdentitySelectionMatchedRule |
Wert aus dem Feld „IdentitySelectionMatchedRule“. |
intermediary_host | intermediary.hostname | Wert aus dem Feld „intermediary_host“. |
intermediary_ip | intermediary.ip | Wert aus dem Feld „intermediary_ip“. |
IPSEC | additional.fields.key = IPSEC , value = IPSEC |
Wert aus dem IPSEC-Feld. |
ISEPolicySetName | extensions.auth.type | Wenn ISEPolicySetName Tacacs enthält, setzen Sie TACACS . |
IsMachineAuthentication | additional.fields.key = IsMachineAuthentication , value = IsMachineAuthentication |
Wert aus dem Feld „IsMachineAuthentication“. |
IsMachineIdentity | security_result.detection_fields.key = IsMachineIdentity , value = IsMachineIdentity |
Wert aus dem Feld „IsMachineIdentity“. |
Standort | additional.fields.key = Location , value = Location |
Wert aus dem Feld „Standort“. |
MatchedCommandSet | additional.fields.key = MatchedCommandSet , value = MatchedCommandSet |
Wert aus dem Feld „MatchedCommandSet“. |
Nachricht | Nicht dem IDM-Objekt zugeordnet. | |
metadata_event_type | metadata.event_type | Wert aus dem Feld „metadata_event_type“. Wenn das Feld leer ist oder GENERIC_EVENT enthält, setzen Sie es auf NETWORK_UNCATEGORIZED, wenn „principal_mid_present“ und „target_mid_present“ auf „wahr“ gesetzt sind, auf USER_UNCATEGORIZED, wenn „principal_userid_present“ auf „wahr“ gesetzt ist, auf STATUS_UPDATE, wenn „principal_mid_present“ auf „wahr“ gesetzt ist, oder auf GENERIC_EVENT, wenn dies nicht der Fall ist. Wenn „Dienst“ Login enthält, setzen Sie „USER_LOGIN“, wenn „principal_userid_present“, „principal_mid_present“ und „target_mid_present“ auf „wahr“ gesetzt sind, oder „USER_UNCATEGORIZED“, wenn „principal_userid_present“ auf „wahr“ gesetzt ist. |
Model_Name | additional.fields.key = Model_Name , value = Model_Name |
Wert aus dem Feld „Model_Name“. |
Name | additional.fields.key = Name , value = Name |
Wert aus dem Feld „Name“. |
Network_Device_Profile | additional.fields.key = Network_Device_Profile , value = Network_Device_Profile |
Wert aus dem Feld „Network_Device_Profile“. |
NetworkDeviceGroups | additional.fields.key = NetworkDeviceGroups , value = NetworkDeviceGroups |
Wert aus dem Feld „NetworkDeviceGroups“. |
NetworkDeviceName | principal.asset.hostname | Wert aus dem Feld „NetworkDeviceName“. |
NetworkDeviceName | principal.hostname | Wert aus dem Feld „NetworkDeviceName“. |
NetworkDeviceProfileId | principal.resource.product_object_id | Wert aus dem Feld „NetworkDeviceProfileId“. |
pid | principal.process.pid | Wert aus dem Feld „pid“. |
Port | principal.resource.attribute.labels.key = Port , value = Port |
Wert aus dem Feld „Port“. |
Berechtigungsstufe | security_result.detection_fields.key = Privilege-Level , value = Privilege-Level |
Wert aus dem Feld „Berechtigungsstufe“. |
product_event_type | metadata.product_event_type | Wert aus dem Feld „product_event_type“. |
Protokoll | additional.fields.key = Protocol , value = Protocol |
Wert aus dem Feld „Protokoll“. |
Protokoll | network.application_protocol | Wenn das Protokoll HTTPS ist, legen Sie HTTPS fest. |
Protokoll | network.ip_protocol | Wenn „protocol“ TCP oder UDP ist, setzen Sie den Wert in Großbuchstaben. |
reason | security_result.summary | Wert aus dem Feld „Grund“. |
Region | principal.location.country_or_region | Wert aus dem Feld „Region“. |
Remote-Adresse | target.asset.ip | Wert aus dem Feld „Remote-Adresse“, nachdem er als IP-Adresse bestätigt wurde. |
Remote-Adresse | target.ip | Wert aus dem Feld „Remote-Adresse“, nachdem er als IP-Adresse bestätigt wurde. |
RequestLatency | security_result.detection_fields.key = RequestLatency , value = RequestLatency |
Wert aus dem Feld „RequestLatency“. |
Antwort | additional.fields.key = Response , value = Response |
Wert aus dem Antwortfeld. |
SelectedAccessService | security_result.action_details | Wert aus dem Feld „SelectedAccessService“. |
SelectedAuthenticationIdentityStores | security_result.detection_fields.key = SelectedAuthenticationIdentityStores , value = SelectedAuthenticationIdentityStores |
Wert aus dem Feld „SelectedAuthenticationIdentityStores“. |
SelectedCommandSet | additional.fields.key = SelectedCommandSet , value = SelectedCommandSet |
Wert aus dem Feld „SelectedCommandSet“. |
Dienst | additional.fields.key = Service , value = Service |
Wert aus dem Feld „Dienst“ |
Dienstargument | additional.fields.key = Service-Argument , value = Service-Argument |
Wert aus dem Feld „Dienstargument“. |
die Ausprägung | security_result.severity | Wenn „severity“ Notice enthält, setzen Sie den Wert auf „INFORMATIONAL“. |
Software_Version | additional.fields.key = Software_Version , value = Software_Version |
Wert aus dem Feld „Software_Version“. |
source_facility | principal.asset.hostname | Wert aus dem Feld „source_facility“. |
source_facility | principal.hostname | Wert aus dem Feld „source_facility“. |
src_ip | principal.asset.ip | Wert aus dem Feld „src_ip“. |
src_ip | principal.ip | Wert aus dem Feld „src_ip“. |
src_mac | principal.mac | Wert aus dem Feld „src_mac“, nachdem . durch : ersetzt wurde. |
src_port | principal.port | Wert aus dem Feld „src_port“. |
src_user_id | principal.user.userid | Wert aus dem Feld „src_user_id“. Wenn leer, wird der Wert aus dem Feld „Nutzer“ übernommen. Wenn das Feld immer noch leer ist, verwenden Sie den Wert aus dem Feld „StepData_9“. |
src_user_name | principal.user.user_display_name | Wert aus dem Feld „src_user_name“. |
Schritt | additional.fields.key = Step , value = Schritt |
Wert aus dem Schritt-Feld. |
StepData_10 | principal.asset.hostname | Wert aus dem Feld „StepData_10“. |
StepData_10 | principal.hostname | Wert aus dem Feld „StepData_10“. |
StepData_13 | security_result.summary | Wert aus dem Feld „StepData_13“. |
StepData_14 | security_result.detection_fields.key = StepData_14 , value = StepData_14 |
Wert aus dem Feld „StepData_14“. |
StepData_15 | security_result.detection_fields.key = StepData_15 , value = StepData_15 |
Wert aus dem Feld „StepData_15“. |
StepData_20 | security_result.detection_fields.key = StepData_20 , value = StepData_20 |
Wert aus dem Feld „StepData_20“. |
StepData_21 | security_result.detection_fields.key = StepData_21 , value = StepData_21 |
Wert aus dem Feld „StepData_21“. |
StepData_3 | additional.fields.key = StepData_3 , value = StepData_3 |
Wert aus dem Feld „StepData_3“. |
StepData_4 | security_result.detection_fields.key = StepData_4 , value = StepData_4 |
Wert aus dem Feld „StepData_4“. |
StepData_6 | security_result.detection_fields.key = StepData_6 , value = StepData_6 |
Wert aus dem Feld „StepData_6“. |
StepData_7 | security_result.detection_fields.key = StepData_7 , value = StepData_7 |
Wert aus dem Feld „StepData_7“. |
StepData_8 | security_result.detection_fields.key = StepData_8 , value = StepData_8 |
Wert aus dem Feld „StepData_8“. |
StepData_9 | principal.user.userid | Wert aus dem Feld „StepData_9“, wenn die Felder „src_user_id“ und „User“ leer sind. |
target_host | target.asset.hostname | Wert aus dem Feld „target_host“. |
target_host | target.hostname | Wert aus dem Feld „target_host“. |
timestamp | metadata.event_timestamp | Wert aus dem Zeitstempelfeld, nachdem zusätzliche Leerzeichen entfernt und das Datum geparst wurde. |
TotalAuthenLatency | additional.fields.key = TotalAuthenLatency , value = TotalAuthenLatency |
Wert aus dem Feld „TotalAuthenLatency“. |
ts | metadata.event_timestamp | Wert, der nach dem Parsen des Datums aus dem Feld „ts“ übernommen wird. |
Typ | security_result.category_details | Wert aus dem Feld „Typ“. |
Nutzer | principal.user.userid | Wert aus dem Feld „Nutzer“, wenn „src_user_id“ leer ist. |
UserType | additional.fields.key = UserType , value = UserType |
Wert aus dem Feld „UserType“. |
metadata.vendor_name | Legen Sie CISCO fest. |
|
metadata.product_name | Legen Sie CISCO_IOS fest. |
|
metadata.log_type | Legen Sie CISCO_IOS fest. |
Änderungen
2025-02-11
Optimierung:
- Unterstützung für ein neues syslog-Logformat hinzugefügt.
2025-01-23
Optimierung:
- Unterstützung für ein neues syslog-Logformat hinzugefügt.
2025-01-02
Optimierung:
- Unterstützung für ein neues syslog-Logformat hinzugefügt.
2024-12-27
Optimierung:
- Unterstützung für ein neues syslog-Logformat hinzugefügt.
2024-11-25
Optimierung:
- Es wurde ein Grok-Muster hinzugefügt, um neue Protokolle zu parsen.
- Der Hostname im syslog-Header wurde von
target.hostname
zuintermediary.hostname
zugeordnet.
2024-11-19
Optimierung:
- Unterstützung für ein neues Format von syslog-Protokollen hinzugefügt.
2024-10-28
Optimierung:
- Es wurde ein Grok-Muster hinzugefügt, um neue Protokolle zu parsen.
2024-10-24
Optimierung:
- Es wurde ein Grok-Muster hinzugefügt, um neue Protokolle zu parsen.
2024-10-01
Optimierung:
- Es wurde ein Grok-Muster hinzugefügt, um neue Protokolle zu parsen.
2024-07-04
Optimierung:
- Unterstützung für ein neues Muster von syslog-Protokollen hinzugefügt.
2024-04-02
Optimierung:
- Es wurde ein neues Grok-Muster zum Parsen eines neuen Protokolltyps hinzugefügt.
- Die neuen Felder wurden den entsprechenden UDM-Feldern zugeordnet.
2023-10-04
Optimierung:
- Es wurde ein neues Grok-Muster zum Parsen eines neuen Protokolltyps hinzugefügt.
source_facility
wurdeprincipal.hostname
zugeordnet.
2023-08-11
Optimierung:
intermediary.ip
wurde zugeordnet, wenn die NachrichtHOST=
enthält.principal.user.userid
wurde zugeordnet, wenn die NachrichtUser:
enthält.principal.process.command_line
wurde zugeordnet, wenn die Nachrichtcommand:
enthält.target.user.userid
wurde zugeordnet, wenn die Nachrichtusername
enthält.metadata.event_type
wurde einer spezifischerenmetadata.event_type
zugeordnet.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten