EfficientIP DDI-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie EfficientIP DDI-Logs mit dem Bindplane-Agent 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-Adressverwaltung, NTP und TFTP bietet. Die Plattform bietet zentrales Management und Automatisierung für die Netzwerkinfrastruktur mit erweiterten Monitoring- und Sicherheitsfunktionen.
Hinweise
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 Sie den Agent hinter einem Proxy ausführen, achten Sie darauf, dass die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sind.
- Administratorzugriff auf die EfficientIP SOLIDserver-Webkonsole
- SOLIDserver-Version 8.0 oder höher (getestet mit 8.3.x und 8.4.x)
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die 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 > Profile 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" /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 Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Konfigurationsdatei suchen
Linux:
sudo nano /etc/bindplane-agent/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: compression: gzip creds_file_path: '/etc/bindplane-agent/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 service: pipelines: logs/efficientip_to_chronicle: receivers: - udplog exporters: - chronicle/efficientip_ddiErsetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration:
listen_address: Auf0.0.0.0:514setzen, um an allen Schnittstellen an UDP-Port 514 zu lauschen.- Verwenden Sie für Linux-Deployments ohne Root-Berechtigung den Port
1514oder höher. - Der Port muss mit der Konfiguration in SOLIDserver übereinstimmen.
- Verwenden Sie für Linux-Deployments ohne Root-Berechtigung den Port
Exporter-Konfiguration:
creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: Ersetzen SieYOUR_CUSTOMER_IDdurch die Kunden-ID aus dem vorherigen Schritt.endpoint: Regionaler Endpunkt:- USA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asien:
asia-southeast1-malachiteingestion-pa.googleapis.com - Eine vollständige Liste finden Sie unter Regionale Endpunkte.
- USA:
log_type: AufEFFICIENTIP_DDIfestlegen (genaue Übereinstimmung erforderlich).ingestion_labels: Optionale Labels zum Kategorisieren von Logs (nach Bedarf anpassen).
Konfigurationsdatei speichern
Speichern Sie die Datei nach der Bearbeitung:
- Linux: Drücken Sie
Ctrl+O, dannEnterund dannCtrl+X. - Windows: Klicken Sie auf Datei > Speichern.
Bindplane-Agent neu starten, 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-collectorLogs auf Fehler prüfen:
sudo journalctl -u observiq-otel-collector -f
So starten Sie den Bindplane-Agent 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-collectorServices-Konsole:
- 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-collectorLogs auf Fehler prüfen:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Syslog-Weiterleitung für EfficientIP DDI konfigurieren
- Melden Sie sich in der EfficientIP SOLIDserver-Webkonsole an.
- Klicken Sie links im Navigationsmenü 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 standardmäßigen 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 Antwort-Ereignisse 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
- 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-Logs: Sicherheitsereignisse wie die Erkennung verdächtigen Verhaltens und Auslöser für die Aktivierung/Deaktivierung
- 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 | Wird als Label mit dem Schlüssel „message_size“ zusammengeführt, sofern nicht leer |
| domain_name | additional.fields | Wird als Label mit dem Schlüssel „domain_name“ zusammengeführt, sofern nicht leer |
| – | Vermittler | Aus Zwischenobjekt zusammengeführt |
| Beschreibung | metadata.description | Wert wird direkt kopiert, wenn er nicht leer ist |
| msg2 | metadata.description | Wird auf „msg2“ festgelegt, wenn „event_type“ GENERIC_EVENT ist und „description“ leer ist. |
| su_cmd | metadata.event_type | Auf „PROCESS_OPEN“ festlegen, wenn „su_cmd“ „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 | Auf „NETWORK_DHCP“ festgelegt, 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 | Auf „NETWORK_DNS“ setzen, wenn der Prozess „named“ ist und „has_dns_questions“ auf „true“ gesetzt ist; auf „STATUS_UPDATE“ setzen, wenn der Prozess „named“ ist und „has_principal“ auf „true“ gesetzt ist; auf „GENERIC_EVENT“ setzen, wenn der Prozess „named“ ist; auf „NETWORK_DHCP“ setzen, wenn der Prozess „dhcpd“ ist |
| PWD | metadata.event_type | Auf „PROCESS_OPEN“ gesetzt, wenn PWD nicht leer ist und „has_target“ oder „has_principal“ auf „true“ gesetzt ist. |
| activity_type | metadata.product_event_type | Wert direkt kopiert |
| – | metadata.vendor_name | Auf „EFFICIENTIP_DDI“ festgelegt |
| – | metadata.product_name | Auf „EFFICIENTIP_DDI DHCP“ festlegen |
| activity_type | network.application_protocol | Wird auf „DNS“ gesetzt, 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“ setzen, wenn der Prozess „named“ ist; auf „DHCP“ setzen, 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, der in „uinteger“ konvertiert wird, wenn er nicht leer oder „0“ ist |
| dhcp_info | network.dhcp.type | Auf „INFORM“ festgelegt, wenn „dhcp_info“ „INFORM“ ist; auf „DISCOVER“ festgelegt, wenn „DISCOVER“; auf „OFFER“ festgelegt, wenn „OFFER“; auf „REQUEST“ festgelegt, wenn „REQUEST“; auf „ACK“ festgelegt, wenn „PACK“ |
| yiaddr | network.dhcp.yiaddr | Wert direkt kopiert |
| src_ip | network.dhcp.yiaddr | Wird auf „src_ip“ festgelegt, wenn der Prozess „dhcpd“ ist und „yiaddr“ leer ist. |
| answer_rrs | network.dns.answers | Zusammengeführt aus Antwortobjekt für jede 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 | In „uinteger“ konvertierter Wert |
| response_code | network.dns.response_code | Wert, der dem numerischen Code zugeordnet und in „uinteger“ umgewandelt wird |
| transport | network.ip_protocol | Der Wert wird in Großbuchstaben angegeben, wenn er mit „udp“ oder „tcp“ übereinstimmt. |
| Beobachter | observer.ip | Wert in IP-Adresse 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 | In Ganzzahl konvertierter Wert |
| 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 | In Ganzzahl konvertierter Wert |
| target_cmd_line | target.process.command_line | Wert direkt kopiert |
| target_user | target.user.userid | Wert direkt kopiert |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten