DNSFilter-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie DNSFilter so konfigurieren, dass Logs über Webhooks über das HTTP Event Collector-Protokoll (HEC) an Google Security Operations gesendet werden.
DNSFilter ist eine KI-basierte DNS-Sicherheitslösung, die Bedrohungsschutz, Inhaltsfilterung und Netzwerksichtbarkeit bietet. Mit der Funktion „Datenexport“ können DNS-Abfragelogdaten automatisch über die HEC-API (HTTP Event Collector) auf SIEM-Plattformen exportiert werden. So werden Sicherheitsmonitoring in Echtzeit und Compliance-Berichte unterstützt.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Zugriff auf das DNSFilter-Dashboard mit Administratorberechtigungen oder höher
- Das Add-on DNSFilter Data Export ist aktiviert (als kostenpflichtiges Add-on für Basic-, Pro- und Enterprise-Abos verfügbar).
- Zugriff auf die Google Cloud Console (zum Erstellen von API-Schlüsseln)
Webhook-Feed in Google SecOps erstellen
Feed erstellen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
DNSFilter HEC Feed. - Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie DNSFILTER als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung (optional): Lassen Sie das Feld leer, da jede HEC-Anfrage korrekt formatierte Ereignisse enthält.
- Asset-Namespace: Der Asset-Namespace
- Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll
- Klicken Sie auf Weiter.
- Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Secret-Schlüssel generieren und speichern
Nachdem Sie den Feed erstellt haben, müssen Sie einen geheimen Schlüssel für die Authentifizierung generieren:
- Klicken Sie auf der Seite mit den Feeddetails auf Secret Key generieren.
- In einem Dialogfeld wird der geheime Schlüssel angezeigt.
Kopieren und speichern Sie den geheimen Schlüssel sicher.
Feed-Endpunkt-URL abrufen
- Rufen Sie den Tab Details des Feeds auf.
- Kopieren Sie im Abschnitt Endpunktinformationen die Feed-Endpunkt-URL.
Das URL-Format lautet:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateoder
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSpeichern Sie diese URL für die nächsten Schritte.
Klicken Sie auf Fertig.
Google Cloud API-Schlüssel erstellen
Für Google SecOps ist ein API-Schlüssel für die Authentifizierung erforderlich. Erstellen Sie in der Google Cloud Console einen eingeschränkten API-Schlüssel.
API-Schlüssel erstellen
- Rufen Sie die Seite „Anmeldedaten“ in der Google Cloud Console auf.
- Wählen Sie Ihr Projekt aus (das Projekt, das mit Ihrer Google SecOps-Instanz verknüpft ist).
- Klicken Sie auf Anmeldedaten erstellen > API-Schlüssel.
- Ein API-Schlüssel wird erstellt und in einem Dialogfeld angezeigt.
- Klicken Sie auf API-Schlüssel bearbeiten, um den Schlüssel einzuschränken.
API-Schlüssel einschränken
- Gehen Sie auf der Seite mit den Einstellungen für API-Schlüssel so vor:
Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Google SecOps DNSFilter Webhook API Key. - Gehen Sie unter API-Einschränkungen so vor:
- Wählen Sie Schlüssel einschränken aus.
- Suchen Sie im Drop-down-Menü APIs auswählen nach Google SecOps API (oder Chronicle API) und wählen Sie die Option aus.
- Klicken Sie auf Speichern.
- Kopieren Sie den API-Schlüsselwert aus dem Feld API-Schlüssel oben auf der Seite.
Speichern Sie den API-Schlüssel sicher.
DNSFilter-Datenexport konfigurieren
HEC-Endpunkt-URL erstellen
Kombinieren Sie die Google SecOps-Endpunkt-URL und den API-Schlüssel, um die HEC-URL zu erstellen:
<ENDPOINT_URL>?key=<API_KEY>Beispiel:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Datenexport in DNSFilter konfigurieren
- Melden Sie sich im DNSFilter-Dashboard an.
- Klicken Sie auf Tools > „Datenexport“.
- Wählen Sie im Bereich Exportziel die Option HTTP Event Collector (HEC) aus.
- Geben Sie im Abschnitt HEC-Konfiguration Folgendes ein:
- HTTP Event Collector URL (URL des HTTP Event Collector): Fügen Sie die vollständige Endpunkt-URL mit API-Schlüssel aus dem vorherigen Schritt ein.
- Aktives Event Collector-Token: Fügen Sie den geheimen Schlüssel ein, der beim Erstellen des Google SecOps-Feeds generiert wurde.
- Klicken Sie auf Konfiguration speichern.
DNSFilter testet die Verbindung und zeigt eine Erfolgsmeldung an, wenn die Konfiguration korrekt ist.
Datenaufnahme prüfen
- Rufen Sie im DNSFilter-Dashboard Tools > Datenexport auf.
- Prüfen Sie, ob der Status als Aktiv oder Verbunden angezeigt wird.
- Rufen Sie in der Google SecOps Console die SIEM-Einstellungen > Feeds auf.
- Suchen Sie Ihren DNSFilter-Feed und prüfen Sie, ob der Status als Aktiv angezeigt wird.
- Klicken Sie auf den Feednamen, um Details aufzurufen.
- Prüfen Sie den Messwert Logs Ingested (Aufgenommene Logs), um zu bestätigen, dass Daten übertragen werden.
Wenn Sie nach DNSFilter-Ereignissen suchen möchten, rufen Sie Suchen auf und führen Sie die folgende Abfrage aus:
metadata.log_type = "DNSFILTER"
Referenz zu Authentifizierungsmethoden
Google SecOps-Webhook-Feeds unterstützen mehrere Authentifizierungsmethoden. Bei der DNSFilter-HEC-Integration wird die Hybridmethode verwendet.
Verwendete Methode: Hybrid (URL + Header)
DNSFilter sendet den API-Schlüssel in der URL und den geheimen Schlüssel (HEC-Token) im Anfrageheader.
Anfrageformat:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json Authorization: Splunk <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Alternative Methode: Benutzerdefinierte Header
Wenn Sie eine benutzerdefinierte Anwendung so konfigurieren, dass Protokolle an Google SecOps gesendet werden, sollten Sie diese Methode verwenden, um die Sicherheit zu erhöhen.
Anfrageformat:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Vorteile:
- API-Schlüssel und Secret sind in der URL nicht sichtbar
- Sicherer (Header werden nicht in Webserver-Zugriffslogs protokolliert)
- Bevorzugte Methode, wenn sie vom Anbieter unterstützt wird
Namen von Authentifizierungsheadern
Google SecOps akzeptiert die folgenden Headernamen für die Authentifizierung:
Für API-Schlüssel:
x-goog-chronicle-auth(empfohlen)X-Goog-Chronicle-Auth(keine Unterscheidung zwischen Groß- und Kleinschreibung)
Für den geheimen Schlüssel:
x-chronicle-auth(empfohlen)X-Chronicle-Auth(keine Unterscheidung zwischen Groß- und Kleinschreibung)Authorization: Splunk <TOKEN>(HEC-Kompatibilität)
Webhook-Limits und Best Practices
Anfragelimits
| Limit | Wert |
|---|---|
| Maximale Anfragengröße | 4 MB |
| Maximale Abfragen pro Sekunde | 15.000 |
| Zeitlimit für Anfragen | 30 Sekunden |
| Wiederholungsverhalten | Automatisch mit exponentiellem Backoff |
Best Practices
- Exportstatus im Blick behalten: Überprüfen Sie regelmäßig den Datenexportstatus im DNSFilter-Dashboard, um einen kontinuierlichen Datenfluss sicherzustellen.
- API-Schlüsselrotation: Rotieren Sie Ihren Google Cloud API-Schlüssel regelmäßig aus Sicherheitsgründen.
- Verwaltung von geheimen Schlüsseln: Speichern Sie den geheimen Schlüssel von Google SecOps sicher und generieren Sie ihn neu, wenn er kompromittiert wurde.
- Datenaufbewahrung: Konfigurieren Sie geeignete Datenaufbewahrungsrichtlinien sowohl in DNSFilter als auch in Google SecOps.
- Benachrichtigungskonfiguration: Richten Sie Benachrichtigungen in Google SecOps für kritische DNS-Sicherheitsereignisse ein.
Fehlerbehebung
Verbindungstest schlägt fehl
Wenn der Test der DNSFilter-Datenexportkonfiguration fehlschlägt:
- Prüfen Sie, ob die HEC-URL korrekt ist und den API-Schlüsselparameter enthält.
- Prüfen Sie, ob der geheime Schlüssel (HEC-Token) korrekt kopiert wurde und keine zusätzlichen Leerzeichen enthält.
- Prüfen Sie, ob für den Google Cloud-API-Schlüssel der Chronicle API-Zugriff aktiviert ist.
- Prüfen Sie, ob der Google SecOps-Feed den Status Aktiv hat.
- Prüfen Sie die Netzwerkverbindung von DNSFilter zu Google Cloud-Endpunkten.
In Google SecOps werden keine Daten angezeigt.
Wenn die Verbindung hergestellt wird, aber keine Daten angezeigt werden:
- Prüfen Sie, ob in Ihrer DNSFilter-Bereitstellung DNS-Abfragen generiert werden.
- Prüfen Sie das DNSFilter-Abfragelog, um zu bestätigen, dass der Traffic verarbeitet wird.
- Suchen Sie in Google SecOps nach
metadata.log_type = "DNSFILTER", um die Aufnahme zu überprüfen. - Prüfen Sie den Messwert Logs Ingested (Aufgenommene Logs) im Feed in Google SecOps.
- Prüfen Sie die Fehlerprotokolle des Feeds auf Fehler bei der Aufnahme.
Fehlermeldung beim Datenexport
Häufige Fehlerursachen:
- Ungültige Anmeldedaten: Der API-Schlüssel oder der geheime Schlüssel ist falsch oder abgelaufen.
- Falsche Region: Die Region der Google SecOps-Endpunkt-URL stimmt nicht mit Ihrer Instanz überein.
- Berechtigungen: Für den API-Schlüssel ist kein Zugriff auf die Chronicle API aktiviert.
- Netzwerkprobleme: Firewall oder Proxy blockieren ausgehende HTTPS-Verbindungen.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| Zeit | metadata.collected_timestamp | Konvertiert mit dem Datumsformat: JJJJ-MM-TT HH:mm:ss Z UTC |
| metadata.event_type | Auf „STATUS_UPDATE“ gesetzt, wenn „principal_ip_present“, „principal_hostname_present“ oder „principal_mac_present“ auf „true“ gesetzt ist, andernfalls „GENERIC_EVENT“ | |
| question_type | network.dns.questions | „question_type“ wurde mithilfe der DNS-Eintragstypzuordnung in „question.type“ konvertiert und dann in das Array zusammengeführt. |
| Code | network.dns.response_code | Konvertiert mithilfe der Zuordnung von DNS-Antwortcodes |
| Protokoll | network.ip_protocol | Konvertiert mithilfe der IP-Protokollzuordnung |
| Client | principal.hostname | Wert direkt kopiert |
| request_address, ip4, ip6, source_addresses | principal.ip | Zusammengeführt aus „request_address“ (extrahierte IP), „ip4“ (extrahierte IP), „ip6“ (extrahierte IP) und aus dem Array „source_addresses“ extrahierten IPs |
| Region | principal.location.country_or_region | Wert direkt kopiert |
| clientMac | principal.mac | Wert wird direkt kopiert, wenn er mit dem MAC-Regex übereinstimmt |
| clientID | principal.resource.product_object_id | Wert direkt kopiert |
| Nutzername | principal.user.user_display_name | Wert direkt kopiert |
| user_id | principal.user.userid | Wert direkt kopiert |
| code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name | security_result.detection_fields | Zusammengeführte Labels aus verschiedenen Quellfeldern als Schlüssel/Wert-Paare |
| Domain | target.administrative_domain | Wert direkt kopiert |
| fqdn | target.domain.name | Wert direkt kopiert |
| metadata.product_name | Auf „DNSFILTER“ festgelegt | |
| metadata.vendor_name | Auf „DNSFILTER“ festgelegt |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten