Cisco IOS-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Cisco IOS-Logs mit Bindplane in Google Security Operations aufnehmen können. Der Parser transformiert Syslog-Rohdaten in ein strukturiertes Format, das dem Unified Data Model (UDM) entspricht. Zuerst werden Felder mithilfe von 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 folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows 2016 oder höher oder ein Linux-Host mit
systemd - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Privilegierter Zugriff auf den Router, Switch oder Server mit Cisco IOS
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
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
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 im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis/etc/bindplane-agent/oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano,vioder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yamlso: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_file_path: '/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 log_type: 'CISCO_IOS' raw_log_field: body ingestion_labels: 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.jsonauf 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-agentWenn 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 auf einem Cisco IOS-Gerät konfigurieren
- Melden Sie sich über SSH oder eine Konsolenverbindung auf dem Cisco IOS-Gerät an.
Geben Sie den folgenden Befehl für den privilegierten Modus ein:
enableGeben Sie den folgenden Befehl für den Konfigurationsmodus ein:
conf tGeben Sie die folgenden Befehle ein, um Syslog zu konfigurieren:
logging <bindplane_IP_address> logging source-interface <interface>- Ändern Sie
<bindplane_IP_address>in die tatsächliche IP-Adresse des Bindplane-Agents. - Ersetzen Sie
<interface>durch die tatsächliche Kommunikationsschnittstelle.
- Ändern Sie
Geben Sie die folgenden Befehle ein, um die Prioritätsstufe zu konfigurieren:
logging trap information logging console informationGeben Sie den folgenden Befehl ein, um die Syslog-Einrichtung zu konfigurieren:
logging facility syslogGeben Sie den folgenden Befehl ein, um die running-config in die startup-config zu kopieren:
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