Cisco IOS-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Cisco Internetwork Operating System-Logs (IOS) mithilfe eines Bindplane-Agents in Google Security Operations aufnehmen. Der Parser wandelt Syslog-Rohdaten in ein strukturiertes Format um, das dem einheitlichen Datenmodell (Unified Data Model, UDM) entspricht. Zuerst werden Felder mit Grok-Mustern basierend auf gängigen Cisco IOS-Syslog-Formaten initialisiert und extrahiert. Anschließend werden die extrahierten Felder den entsprechenden UDM-Feldern zugeordnet, Ereignisse kategorisiert und die Daten mit zusätzlichem Kontext angereichert, bevor das strukturierte Log im UDM-Format ausgegeben wird.
Hinweise
- Prüfen Sie, ob Sie eine Google SecOps-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Prüfen Sie, ob Sie privilegierten Zugriff auf Cisco IOS haben.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme 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-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder 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
Zusätzliche Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Greifen Sie auf die Konfigurationsdatei zu:
- 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 Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog in Cisco IOS konfigurieren
- Melden Sie sich bei Cisco IOS an.
Erhöhen Sie die Berechtigungen mit dem folgenden Befehl:
enable
Wechseln Sie in den Konfigurationsmodus, indem Sie den folgenden Befehl eingeben:
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 Listening-Protokoll für den BindPlane-Agenten, z. B.udp
. - Ersetzen Sie
<interface>
durch die Cisco-Schnittstellen-ID.
- Ersetzen Sie
Legen Sie die Prioritätsstufe mit dem folgenden Befehl fest:
logging trap Informational logging console Informational logging severity Informational
Legen Sie die Syslog-Einrichtung fest:
logging facility syslog
Speichern Sie die Datei und beenden Sie den Vorgang.
Konfigurieren Sie die Einstellungen so, dass sie einen Neustart überstehen, indem Sie den folgenden Befehl eingeben:
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, wird ALLOW festgelegt. Wenn AcctRequest-Flags Stop enthält, wird BLOCK festgelegt. |
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“. |
Authen-Method | security_result.detection_fields.key = Authen-Method , value = Authen-Method |
Wert aus dem Feld „Authen-Method“. |
Authen-Method | extensions.auth.type | Wenn Authen-Method TacacsPlus enthält, legen Sie TACACS fest. |
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 | Entspricht je nach Wert unterschiedlichen Schweregraden: 0: ALERT, 1: CRITICAL, 2: HIGH, 3: ERROR, 4: MEDIUM, 5: LOW, 6: INFORMATIONAL, 7: INFORMATIONAL. |
cisco_severity | security_result.severity_details | Entspricht je nach Wert unterschiedlichen Schweregraden: 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 | Entsprechend 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 Beschreibungsfeld. |
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, legen Sie TACACS fest. |
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 leer oder GENERIC_EVENT , wird NETWORK_UNCATEGORIZED festgelegt, wenn „principal_mid_present“ und „target_mid_present“ „true“ sind, USER_UNCATEGORIZED, wenn „principal_userid_present“ „true“ ist, STATUS_UPDATE, wenn „principal_mid_present“ „true“ ist, und andernfalls GENERIC_EVENT. Wenn „Service“ Login enthält, wird der Wert auf USER_LOGIN gesetzt, wenn „principal_userid_present“, „principal_mid_present“ und „target_mid_present“ „true“ sind, oder auf USER_UNCATEGORIZED, wenn „principal_userid_present“ „true“ 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 es auf HTTPS fest. |
Protokoll | network.ip_protocol | Wenn das Protokoll TCP oder UDP ist, wird es auf den Großbuchstabenwert des Protokolls gesetzt. |
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 | Der Wert wird aus dem Feld „Remote-Address“ übernommen, nachdem er als IP-Adresse validiert wurde. |
Remote-Adresse | target.ip | Der Wert wird aus dem Feld „Remote-Address“ übernommen, nachdem er als IP-Adresse validiert 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 „Service“. |
Service-Argument | additional.fields.key = Service-Argument , value = Service-Argument |
Wert aus dem Feld „Service-Argument“. |
die Ausprägung | security_result.severity | Wenn der Schweregrad Notice enthält, setzen Sie ihn 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“ nach dem Ersetzen von . durch : . |
src_port | principal.port | Wert aus dem Feld „src_port“. |
src_user_id | principal.user.userid | Wert aus dem Feld „src_user_id“. Wenn das Feld leer ist, wird der Wert aus dem Feld „Nutzer“ übernommen. Wenn das Feld immer noch leer ist, wird der Wert aus dem Feld „StepData_9“ übernommen. |
src_user_name | principal.user.user_display_name | Wert aus dem Feld „src_user_name“. |
Schritt | additional.fields.key = Step , value = Step |
Wert aus dem Feld „Schritt“. |
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 „src_user_id“ und die Nutzerfelder 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 nach dem Entfernen zusätzlicher Leerzeichen und dem Parsen des Datums. |
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 wurde. |
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. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten