Google Cloud DNS Threat Detector-Logs erfassen
Parserversion:1.0
In diesem Dokument wird beschrieben, wie Sie Google Cloud DNS Threat Detector-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.
DNS Armor powered by Infoblox ist ein vollständig verwalteter Dienst, der Sicherheit auf DNS-Ebene für Ihre Google Cloud-Arbeitslasten bietet. Der erweiterte Bedrohungsdetektor wurde entwickelt, um schädliche Aktivitäten so früh wie möglich in der Angriffskette zu erkennen, nämlich bei der DNS-Abfrage, ohne die betriebliche Komplexität zu erhöhen oder die Leistung zu beeinträchtigen. Nachdem eine Bedrohung erkannt wurde, können Sie über Cloud Logging umsetzbare Informationen zu DNS-Bedrohungen erhalten.
Wenn Sie einen DNS-Bedrohungsdetektor für ein Projekt aktivieren, sendet DNS Armor Ihre internetgebundenen DNS-Abfragelogs sicher an die Google Cloud-basierte Analyse-Engine von Infoblox. Diese Engine verwendet eine Kombination aus Threat Intelligence-Feeds und KI-basierter Verhaltensanalyse, um Bedrohungen zu erkennen. Bei Erkennung schädlicher Aktivitäten wird ein DNS Armor-Bedrohungslog generiert, das an Ihr Projekt zurückgesendet und in Cloud Logging geschrieben wird, damit Sie es ansehen und Maßnahmen ergreifen können.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- GCP-Projekt mit aktivierter Cloud Storage API.
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets.
- Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets.
- Network Security API in Ihrem Projekt aktiviert.
- Erforderliche IAM-Rollen zum Aktivieren eines DNS-Bedrohungsdetektors.
- Berechtigungen zum Ansehen von DNS-Bedrohungslogs:
resourcemanager.projects.get,resourcemanager.projects.list,networksecurity.dnsThreatDetectors.get,networksecurity.dnsThreatDetectors.listoder die Rollenroles/networksecurity.dnsThreatDetectorViewerundroles/logging.viewer.
Google Cloud Storage-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. dns-threat-detector-logs.Standorttyp Wählen Sie je nach Bedarf aus (Region, biregionaler Standort, multiregionaler Standort). Standort Wählen Sie den Standort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für häufig aufgerufene Logs) Zugriffssteuerung Einheitlich (empfohlen) Schutzmaßnahmen Optional: Objektversionierung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
DNS-Bedrohungsdetektor erstellen
In diesem Abschnitt wird beschrieben, wie Sie einen DNS-Bedrohungsdetektor erstellen, um VPC-Netzwerke auf schädliche, internetgebundene DNS-Aktivitäten zu überwachen.
Pro Projekt kann nur ein DNS-Bedrohungsdetektor aktiviert sein.
Google Cloud Console verwenden
- Rufen Sie in der Google Cloud Console die Seite Erweiterte Bedrohungserkennung auf.
- Klicken Sie auf DNS-Bedrohungsdetektor erstellen.
- Geben Sie einen Namen für den DNS-Bedrohungsdetektor ein.
- Wählen Sie Alle VPC-Netzwerke im Projekt aus.
- Klicken Sie auf Erstellen.
gcloud-Befehlszeilentool verwenden
Alternativ können Sie einen DNS-Bedrohungsdetektor mit dem Befehl gcloud erstellen:
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"
Ersetzen Sie:
- my-dns-threat-detector: Der Name für Ihren DNS-Bedrohungsdetektor.
- PROJECT_ID: Ihre Projekt-ID.
Cloud Logging konfigurieren, um DNS Threat Detector-Logs in GCS zu exportieren
DNS Armor-Bedrohungslogs werden in Cloud Logging geschrieben. Sie müssen eine Logsenke konfigurieren, um diese Logs in Ihren GCS-Bucket zu exportieren.
- Rufen Sie in der Google Cloud Console Logging > Log Router auf.
- Klicken Sie auf Senke erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein, z. B.
dns-threat-detector-to-gcs. - Beschreibung der Senke: Optionale Beschreibung.
- Name der Senke: Geben Sie einen aussagekräftigen Namen ein, z. B.
- Klicken Sie auf Weiter.
- Gehen Sie zum Bereich Senkendienst auswählen :
- Senkendienst: Wählen Sie Cloud Storage-Bucket aus.
- Cloud Storage-Bucket auswählen: Wählen Sie den Bucket aus dem Drop-down-Menü aus, z. B.
dns-threat-detector-logs.
- Klicken Sie auf Weiter.
Geben Sie im Bereich Logs auswählen, die in der Senke enthalten sein sollen die folgende Filterabfrage ein:
resource.type="networksecurity.googleapis.com/DnsThreatDetector" logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
Ersetzen Sie PROJECT_ID durch Ihre GCP-Projekt-ID.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Konfiguration und klicken Sie auf Senke erstellen.
gcloud-Befehlszeilentool verwenden
Alternativ können Sie eine Logsenke mit dem Befehl gcloud erstellen:
gcloud logging sinks create dns-threat-detector-to-gcs \
gs://dns-threat-detector-logs \
--log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
--project=PROJECT_ID
Ersetzen Sie:
- dns-threat-detector-logs: Der Name Ihres GCS-Buckets.
- PROJECT_ID: Ihre GCP-Projekt-ID.
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.
Feed in Google SecOps konfigurieren, um Google Cloud DNS Threat Detector-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
GCP DNS Threat Detector Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
Wählen Sie Google Cloud DNS Threat Detector als Logtyp aus.
Klicken Sie auf Dienstkonto abrufen.
Eine eindeutige E-Mail-Adresse des Dienstkontos wird angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse. Sie verwenden sie im nächsten Schritt.
Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://dns-threat-detector-logs/Ersetzen Sie:
dns-threat-detector-logs: Der Name Ihres GCS-Buckets.
- Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:
- Nie: Nach der Übertragung werden keine Dateien gelöscht (empfohlen für Tests).
- Übertragene Dateien lö1schen: Dateien werden nach erfolgreicher Übertragung gelöscht.
- Übertragene Dateien und leere Verzeichnisse löschen: Dateien und leere Verzeichnisse werden nach erfolgreicher Übertragung gelöscht.
- Maximales Alter der Datei: Schließen Sie Dateien ein, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
- Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Überprüfen Sie die Konfiguration des neuen Feeds auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren GCS-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets, z. B.
dns-threat-detector-logs. - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E-Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage-Objekt-Betrachter aus.
Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| record.jsonPayload.dnsQuery.responseCode, record.jsonPayload.dnsQuery.authAnswer, record.jsonPayload.dnsQuery.queryTime, record.jsonPayload.partnerId, record.jsonPayload.detectionTime, record.logName | additional.fields | Werte werden in die Zuordnung „additional“ kopiert und dann als Zuordnungseinträge mit „value.string_value“ zusammengeführt, wenn sie nicht leer sind. |
| record.receiveTimestamp | metadata.collected_timestamp | Als ISO 8601-Zeitstempel geparst |
| metadata.event_type | Auf „NETWORK_CONNECTION“ festgelegt, wenn „has_principal“ und „has_target“, auf „STATUS_UPDATE“, wenn „has_principal“, andernfalls auf „GENERIC_EVENT“ | |
| record.timestamp | metadata.event_timestamp | Als ISO 8601-Zeitstempel geparst |
| record.insertId | metadata.product_log_id | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.rdata | network.dns.answers | Wert wird in „answer.data“ kopiert und dann als Array zusammengeführt, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.queryName, record.jsonPayload.dnsQuery.queryType | network.dns.questions | „questions.name“ aus „queryName“, „questions.type“ aus „queryType“-String in Ganzzahl zugeordnet und dann als Array zusammengeführt, wenn es nicht leer ist |
| record.jsonPayload.dnsQuery.responseCode | network.dns.response_code | Aus String in Ganzzahl mit vordefinierter Tabelle zugeordnet |
| record.jsonPayload.dnsQuery.protocol | network.ip_protocol | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.sourceIp | principal.asset.ip | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.sourceIp | principal.ip | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.location | principal.location.country_or_region | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.resource.labels.location | principal.location.name | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.vmProjectNumber, record.jsonPayload.dnsQuery.projectNumber | principal.resource.attribute.labels | Werte werden in die Zuordnung „additional“ kopiert und dann als Zuordnungseinträge zusammengeführt, wenn sie nicht leer sind. |
| record.jsonPayload.dnsQuery.vmInstanceId | principal.resource.id | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.resource.labels.id | principal.resource.product_object_id | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.resource.type | principal.resource.type | Wert wird direkt kopiert, wenn er nicht leer ist. |
| security_result | Aus der erstellten Zuordnung „security_result“ zusammengeführt | |
| record.jsonPayload.threatInfo.confidence | security_result.confidence | LOW_CONFIDENCE, wenn (?i)Low, MEDIUM_CONFIDENCE, wenn (?i)Medium, HIGH_CONFIDENCE, wenn (?i)High |
| record.jsonPayload.threatInfo.threatDescription | security_result.description | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.threatInfo.threatIndicatorType, record.jsonPayload.threatInfo.threatIndicator, record.jsonPayload.threatInfo.threatFeed, record.jsonPayload.threatInfo.category, record.jsonPayload.threatInfo.type, record.jsonPayload.threatInfo.threat, record.jsonPayload.threatInfo.severity, record.resource.labels.resource_container | security_result.detection_fields | Werte werden in die Zuordnung „additional“ kopiert und dann als Zuordnungseinträge zusammengeführt, wenn sie nicht leer sind. |
| record.severity | security_result.severity | LOW, wenn (?i)Low, INFORMATIONAL, wenn (?i)(Informational|Info), MEDIUM, wenn (?i)Medium, CRITICAL, wenn (?i)Critical, HIGH, wenn (?i)High |
| record.jsonPayload.threatInfo.threatId | security_result.threat_id | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.destinationIp | target.asset.ip | Wert wird direkt kopiert, wenn er nicht leer ist. |
| record.jsonPayload.dnsQuery.destinationIp | target.ip | Wert wird direkt kopiert, wenn er nicht leer ist. |
| metadata.vendor_name | Auf „Google Cloud“ festgelegt | |
| metadata.product_name | Auf „Google Cloud DNS Threat Detector“ festgelegt |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten