EfficientIP-DDI-Logs erfassen
Parserversion:9.0
In diesem Dokument wird beschrieben, wie Sie EfficientIP-DDI-Logs mit dem Bindplane-Agenten in Google Security Operations aufnehmen.
EfficientIP SOLIDserver ist eine umfassende DDI-Lösung (DNS-DHCP-IPAM), die hochgradig skalierbare, sichere und robuste virtuelle und Hardware-Appliances für kritische Netzwerkdienste wie DNS, DHCP, IP Address Management, NTP und TFTP bietet. Die Plattform bietet eine zentrale Verwaltung und Automatisierung der Netzwerkinfrastruktur mit erweiterten Monitoring- und Sicherheitsfunktionen.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Windows Server 2016 oder höher oder ein Linux-Host mit
systemd - Netzwerkverbindung zwischen dem Bindplane-Agent und der EfficientIP SOLIDserver-Appliance
- Wenn der Agent hinter einem Proxy ausgeführt wird, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Administratorzugriff auf die Webkonsole von EfficientIP SOLIDserver
- SOLIDserver-Version 8.0 oder höher (getestet mit 8.3.x und 8.4.x)
Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen
Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agent bei Google SecOps zu authentifizieren:
- Neue Deployments: Verwenden Sie die Chronicle API (Option 1).
- Legacy-Bereitstellungen: Verwenden Sie die Authentifizierungsdatei für die Datenaufnahme (Option 2) weiter, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
Option 1: Dienstkonto für die Chronicle API erstellen (empfohlen)
- Melden Sie sich in der Google Cloud -Konsole an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
- Rufen Sie IAM & Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B.
bindplane-ingest. - Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B.
Bindplane agent log ingestion.
- Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B.
- Klicken Sie auf Erstellen und fortfahren.
- Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
- Klicken Sie auf Weiter und dann auf Fertig.
- Klicken Sie auf das erstellte Dienstkonto und rufen Sie dann den Tab Schlüssel auf.
- Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
- Speichern Sie die Schlüsseldatei als
ingestion-auth.jsonim Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.jsonunter Linux oderC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonunter Windows) oder aktualisieren Siecreds_file_pathinconfig.yaml, damit der Pfad mit dem Pfad übereinstimmt, in dem Sie die Datei speichern. - Rufen Sie IAM & Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Exporter-Konfiguration.
Option 2: Authentifizierungsdatei für die Datenaufnahme herunterladen (Legacy)
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
- Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
- Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.
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 Kundennummer aus dem Bereich Organization Details (Organisationsdetails).
BindPlane-Agent installieren
Installieren Sie den Bindplane-Agenten gemäß der folgenden Anleitung auf Ihrem Windows- oder Linux-Betriebssystem.
Windows-Installation
- Ö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" /quietWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collectorDer Dienststatus sollte RUNNING lauten.
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.shWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sudo systemctl status observiq-otel-collectorDer Dienststatus sollte active (running) lauten.
Zusätzliche Installationsressourcen
Weitere Installationsoptionen und Informationen zur Problembehebung finden Sie im Installationsanleitung für den Bindplane-Agent.
Bindplane-Agent für die Aufnahme von Syslog und das Senden an Google SecOps konfigurieren
Konfigurationsdatei suchen
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von
config.yamldurch die folgende Konfiguration:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/efficientip_ddi: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: chronicle.googleapis.com log_type: EFFICIENTIP_DDI raw_log_field: body ingestion_labels: env: production source: solidserver service: pipelines: logs/efficientip_to_chronicle: receivers: - udplog exporters: - chronicle/efficientip_ddiErsetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration:
listen_address: Legen Sie0.0.0.0:514fest, um auf allen Schnittstellen an UDP-Port 514 zu lauschen.- Verwenden Sie für Linux-Bereitstellungen ohne Root-Zugriff den Port
1514oder höher. - Achten Sie darauf, dass der Port mit der Konfiguration in SOLIDserver übereinstimmt.
- Verwenden Sie für Linux-Bereitstellungen ohne Root-Zugriff den Port
Exporter-Konfiguration:
creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Ersetzen SieYOUR_CUSTOMER_IDdurch die Kundennummer aus dem vorherigen Schritt.location: Ersetzen Sie<LOCATION>durch die Region Ihrer Google SecOps-Instanz (z. B.us,europeoderasia-southeast1). Der Exporter stellt diesem Wertchronicle.googleapis.comvoran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.project: Ersetzen Sie<PROJECT_NUMBER>durch die Projektnummer aus IAM & Verwaltung > Einstellungen.endpoint: Behalten Sie die Einstellungchronicle.googleapis.combei.log_type: Legen SieEFFICIENTIP_DDIfest (genaue Übereinstimmung erforderlich).ingestion_labels: Optionale Labels zum Kategorisieren von Logs (nach Bedarf anpassen).
Exporter für die Legacy Ingestion API
Wenn Sie die Authentifizierungsdatei für die Datenaufnahme aus Option 2 verwenden, ersetzen Sie den Block
exportersdurch Folgendes. Legen Siecreds_file_pathauf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Siemalachiteingestion-pa.googleapis.comdurch Ihren regionalen Endpunkt (z. B.europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/efficientip_ddi: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: EFFICIENTIP_DDI raw_log_field: body ingestion_labels: env: production source: solidserver
Konfigurationsdatei speichern
Speichern Sie die Datei nach der Bearbeitung:
- Linux: Drücken Sie
Ctrl+O, dannEnterund dannCtrl+X. - Windows: Klicken Sie auf Datei > Speichern.
Starten Sie den Bindplane-Agent neu, um die Änderungen zu übernehmen.
So starten Sie den Bindplane-Agent unter Linux neu:
Führen Sie dazu diesen Befehl aus:
sudo systemctl restart observiq-otel-collectorPrüfen Sie, ob der Dienst ausgeführt wird:
sudo systemctl status observiq-otel-collectorPrüfen Sie die Logs auf Fehler:
sudo journalctl -u observiq-otel-collector -f
So starten Sie den Bindplane-Agenten unter Windows neu:
Wählen Sie eine der folgenden Optionen aus:
Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorDienstkonsole:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
- Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
- Drücken Sie
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorPrüfen Sie die Logs auf Fehler:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
EfficientIP DDI-Syslog-Weiterleitung konfigurieren
- Melden Sie sich in der Webkonsole von EfficientIP SOLIDserver an.
- Klicken Sie im linken Navigationsbereich auf Verwaltung.
- Klicken Sie im Bereich Monitoring auf Konfiguration.
- Klicken Sie im Menü auf + Hinzufügen.
- Wählen Sie in der Liste Dienste die folgenden Dienste aus: named (für DNS-Logs)
- Geben Sie im Feld Zielserver die IP-Adresse und den Port des Bindplane-Agent-Hosts im Format
<ip-address>:<port>ein.- Beispiel:
192.168.1.100:514 - Wenn Sie unter Linux einen Nicht-Standard-Port verwenden, geben Sie den Port entsprechend an (z. B.
192.168.1.100:1514).
- Beispiel:
Klicken Sie auf OK, um die Konfiguration zu speichern.
Logweiterleitung prüfen
- Prüfen Sie die Bindplane-Agentenlogs, um zu bestätigen, dass Logs empfangen werden:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Linux:
- Suchen Sie nach Logeinträgen, die DNS-Abfrage- und Antwortereignisse von SOLIDserver enthalten.
- Melden Sie sich in der Google SecOps-Konsole an und prüfen Sie, ob die EfficientIP DDI-Protokolle auf der Seite Events (Ereignisse) angezeigt werden.
Unterstützte Logtypen
Durch diese Integration werden die folgenden Logtypen von EfficientIP SOLIDserver erfasst:
- DNS-Abfragelogs: Client-DNS-Abfragen mit Abfragetyp, Domainname und Client-IP-Adresse
- DNS-Antwortlogs: DNS-Antworten mit Antwort-Einträgen, TTL und Antwortcodes
- DHCP-Logs: DHCP-Vorgänge wie DISCOVER, OFFER, REQUEST, ACK, NAK, RELEASE und INFORM
- DNS Guardian-Protokolle: Sicherheitsereignisse wie die Erkennung verdächtigen Verhaltens und Auslöser für das Scharf- und Unscharfschalten
- DNS-Zonenübertragungsprotokolle: Zonenübertragungsvorgänge und ‑benachrichtigungen
- DNS-Fehlerlogs: Formatierungsfehler, SERVFAIL, REFUSED und andere DNS-Fehler
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| ip_version | additional.fields | Wird als Label mit dem Schlüssel „ip_version“ zusammengeführt, sofern nicht leer |
| message_size | additional.fields | Zusammengeführt als Label mit dem Schlüssel „message_size“, wenn nicht leer |
| domain_name | additional.fields | Zusammengeführt als Label mit dem Schlüssel „domain_name“, wenn nicht leer |
| – | intermediary | Aus einem Zwischenobjekt zusammengeführt |
| Beschreibung | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| msg2 | metadata.description | Auf msg2 festgelegt, wenn event_type GENERIC_EVENT ist und description leer ist |
| su_cmd | metadata.event_type | Wird auf „PROCESS_OPEN“ gesetzt, wenn „su_cmd“ gleich „sudo“ ist. |
| activity_type | metadata.event_type | Auf „NETWORK_DNS“ festgelegt, wenn „activity_type“ mit „dns“ übereinstimmt und „has_dns_questions“ „true“ ist. |
| Nachricht | metadata.event_type | Wird auf „NETWORK_DHCP“ gesetzt, wenn die Nachricht mit „dhcp“ übereinstimmt |
| inner_message | metadata.event_type | Auf „NETWORK_UNCATEGORIZED“ festgelegt, wenn „inner_message“ mit bestimmten Mustern übereinstimmt und „has_principal“ und „has_target“ auf „true“ gesetzt sind. |
| verarbeiten | metadata.event_type | Wird auf „NETWORK_DNS“ gesetzt, wenn der Prozess „named“ ist und „has_dns_questions“ „true“ ist. Wird auf „STATUS_UPDATE“ gesetzt, wenn der Prozess „named“ ist und „has_principal“ „true“ ist. Wird auf „GENERIC_EVENT“ gesetzt, wenn der Prozess „named“ ist. Wird auf „NETWORK_DHCP“ gesetzt, wenn der Prozess „dhcpd“ ist. |
| PWD | metadata.event_type | Wird auf „PROCESS_OPEN“ gesetzt, wenn PWD nicht leer ist und „has_target“ oder „has_principal“ „true“ ist |
| activity_type | metadata.product_event_type | Wert direkt kopiert |
| – | metadata.vendor_name | Legen Sie diesen Wert auf „EFFICIENTIP_DDI“ fest. |
| – | metadata.product_name | Auf „EFFICIENTIP_DDI DHCP“ festgelegt |
| activity_type | network.application_protocol | Auf „DNS“ festgelegt, wenn „activity_type“ mit „dns“ übereinstimmt und „has_dns_questions“ „true“ ist |
| Nachricht | network.application_protocol | Auf „DHCP“ setzen, wenn die Nachricht mit „dhcp“ übereinstimmt |
| verarbeiten | network.application_protocol | Auf „DNS“ festlegen, wenn der Prozess „named“ ist; auf „DHCP“ festlegen, wenn der Prozess „dhcpd“ ist |
| src_mac | network.dhcp.chaddr | Wert wird direkt kopiert, wenn der Prozess „dhcpd“ ist. |
| src_ip | network.dhcp.ciaddr | Wert wird direkt kopiert, wenn „dhcp_info“ „REQUEST“ ist |
| giaddr | network.dhcp.giaddr | Wert direkt kopiert |
| dhcp_info | network.dhcp.opcode | Auf „BOOTREQUEST“ festlegen, wenn „dhcp_info“ „INFORM“, „DISCOVER“ oder „REQUEST“ ist; auf „BOOTREPLY“ festlegen, wenn „dhcp_info“ „OFFER“ oder „ACK“ ist |
| siaddr | network.dhcp.siaddr | Wert direkt kopiert |
| transaction_id | network.dhcp.transaction_id | Wert wird in eine Ganzzahl ohne Vorzeichen umgewandelt, wenn er nicht leer oder „0“ ist |
| dhcp_info | network.dhcp.type | Wird auf „INFORM“ gesetzt, wenn „dhcp_info“ „INFORM“ ist; auf „DISCOVER“, wenn „DISCOVER“; auf „OFFER“, wenn „OFFER“; auf „REQUEST“, wenn „REQUEST“; auf „ACK“, wenn „PACK“ |
| yiaddr | network.dhcp.yiaddr | Wert direkt kopiert |
| src_ip | network.dhcp.yiaddr | Wird auf „src_ip“ gesetzt, wenn der Prozess „dhcpd“ ist und „yiaddr“ leer ist |
| answer_rrs | network.dns.answers | Zusammengeführt aus dem Antwortobjekt für jeden rd in answer_rrs |
| – | network.dns.questions | Wird aus dem Fragenobjekt zusammengeführt, wenn „has_dns_questions“ auf „true“ gesetzt ist. |
| rcode | network.dns.response_code | Wert in „uinteger“ konvertiert |
| response_code | network.dns.response_code | Wert, der dem numerischen Code zugeordnet und in uinteger konvertiert wurde |
| transport | network.ip_protocol | Wert wird in Großbuchstaben umgewandelt, wenn er mit udp oder tcp übereinstimmt |
| Beobachter | observer.ip | Wert in „ipaddress“ konvertiert |
| su_cmd | principal.application | Wert wird direkt kopiert, wenn „su_cmd“ „sudo“ ist. |
| verarbeiten | principal.application | Wird auf „process“ gesetzt, wenn der Prozess „named“ oder „dhcpd“ ist. |
| Host | principal.asset.hostname | Wert wird direkt kopiert, wenn er nicht leer ist |
| Hostname | principal.asset.hostname | Wert wird direkt kopiert, wenn er nicht leer ist und der Host leer ist |
| src_ip | principal.asset.ip | Wert direkt kopiert |
| asset_id | principal.asset_id | Verkettet als „ID:“ + asset_id |
| Host | principal.hostname | Wert wird direkt kopiert, wenn er nicht leer ist |
| Hostname | principal.hostname | Wert wird direkt kopiert, wenn er nicht leer ist und der Host leer ist |
| domain_name | principal.hostname | Wert wird direkt kopiert, wenn die Beschreibung den Hostnamen enthält und Host/Hostname leer sind |
| src_ip | principal.ip | Der Wert wird direkt kopiert, wenn die Konvertierung in „ipaddress“ erfolgreich ist. Andernfalls wird er aus der Beschreibung extrahiert, wenn „src_ip“ leer ist. |
| src_mac | principal.mac | Wert direkt kopiert |
| src_port | principal.port | Wert in Ganzzahl konvertiert |
| process_id | principal.process.pid | Wert direkt kopiert |
| source_user | principal.user.userid | Wert direkt kopiert |
| – | security_result | Zusammengeführt aus sec_result |
| dst_ip | target.asset.ip | Wert direkt kopiert |
| file_path | target.file.full_path | Wert direkt kopiert |
| dst_ip | target.hostname | Wert wird direkt kopiert, wenn er keine gültige IP-Adresse ist |
| Host | target.hostname | Wert wird direkt kopiert, wenn „inner_message“ bestimmten Mustern entspricht |
| dst_ip | target.ip | Wert direkt kopiert |
| dst_port | target.port | Wert in Ganzzahl konvertiert |
| target_cmd_line | target.process.command_line | Wert direkt kopiert |
| target_user | target.user.userid | Wert direkt kopiert |
RR_msg |
event.idm.read_only_udm.metadata.description |
Aus Änderungsprotokoll zugeordnet |
client_id |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
key_office |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
rrset_type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
syslog_priority |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
updating_zone |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
view_office |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten