Cisco Umbrella-DNS-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Cisco Umbrella-DNS-Logs in einem Google Security Operations-Feed mithilfe eines AWS S3-Buckets erfassen. Der Parser verarbeitet sowohl JSON- als auch CSV-formatierte Logs. Sie extrahiert Felder, benennt sie entsprechend dem UDM um, verarbeitet verschiedene Protokollversionen und ‑formate (einschließlich Proxy- und IP-Protokolle) und führt eine spezifische Logik für Identitäten, Sicherheitskategorien und Netzwerkereignisse aus. Schließlich werden die extrahierten Daten in das UDM-Schema eingefügt.

Hinweise

  • Prüfen Sie, ob Sie eine Google SecOps-Instanz haben.
  • Prüfen Sie, ob Sie privilegierten Zugriff auf AWS IAM und S3 haben.
  • Prüfen Sie, ob Sie privilegierten Zugriff auf Cisco Umbrella haben.

Von Cisco verwalteten Amazon S3-Bucket konfigurieren

  1. Melden Sie sich im Cisco Umbrella-Dashboard an.
  2. Klicken Sie auf Verwaltung > Protokollverwaltung.
  3. Wählen Sie die Option Use a Cisco-managed Amazon S3 bucket (Von Cisco verwalteten Amazon S3-Bucket verwenden) aus.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Region auswählen: Wählen Sie eine Region in der Nähe Ihres Standorts aus, um die Latenz zu verringern.
    • Aufbewahrungsdauer auswählen: Wählen Sie den Zeitraum aus. Die Aufbewahrungsdauer beträgt 7, 14 oder 30 Tage. Nach dem ausgewählten Zeitraum werden die Daten gelöscht und können nicht wiederhergestellt werden. Wenn Ihr Aufnahmerhythmus regelmäßig ist, sollten Sie einen kürzeren Zeitraum verwenden. Sie können die Aufbewahrungsdauer später ändern.
  5. Klicken Sie auf Speichern.
  6. Klicken Sie auf Weiter, um Ihre Auswahl zu bestätigen und eine Aktivierungsbenachrichtigung zu erhalten.
    Im Fenster Aktivierung abgeschlossen werden die Werte für Zugriffsschlüssel und Geheimer Schlüssel angezeigt.
  7. Kopieren Sie die Werte für Access key (Zugriffsschlüssel) und Secret key (geheimer Schlüssel). Wenn Sie diese Schlüssel verlieren, müssen Sie sie neu generieren.
  8. Klicken Sie auf Ok > Weiter.
  9. Auf einer Übersichtsseite werden die Konfiguration und der Name Ihres Buckets angezeigt. Sie können das Logging nach Bedarf für Ihre Organisation deaktivieren oder aktivieren. Logs werden jedoch unabhängig davon, ob neue Daten hinzugefügt werden, auf Grundlage der Aufbewahrungsdauer gelöscht.

Optional: Nutzerzugriffsschlüssel für selbstverwalteten AWS S3-Bucket konfigurieren

  1. Melden Sie sich bei der AWS Management Console an.
  2. Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
  3. Wählen Sie den erstellten Nutzer aus.
  4. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  5. Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  6. Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
  7. Klicken Sie auf Weiter.
  8. Optional: Fügen Sie ein Beschreibungstag hinzu.
  9. Klicken Sie auf Zugriffsschlüssel erstellen.
  10. Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die spätere Verwendung zu speichern.
  11. Klicken Sie auf Fertig.
  12. Wählen Sie den Tab Berechtigungen aus.
  13. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  14. Wählen Sie Berechtigungen hinzufügen aus.
  15. Wählen Sie Richtlinien direkt anhängen aus.
  16. Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
  17. Klicken Sie auf Weiter.
  18. Klicken Sie auf Berechtigungen hinzufügen.

Optional: Selbstverwalteten Amazon S3-Bucket konfigurieren

  1. Melden Sie sich bei der AWS Management Console an.

  2. Rufen Sie S3 auf.

  3. Klicken Sie auf Bucket erstellen.

  4. Geben Sie die folgenden Konfigurationsdetails an:

    • Bucket-Name: Geben Sie einen Namen für den Amazon S3-Bucket an.
    • Region: Wählen Sie eine Region aus.
  5. Klicken Sie auf Erstellen.

Optional: Bucket-Richtlinie für selbstverwalteten AWS S3-Bucket konfigurieren

  1. Klicken Sie auf den neu erstellten Bucket, um ihn zu öffnen.
  2. Wählen Sie Eigenschaften > Berechtigungen aus.
  3. Klicken Sie in der Liste Berechtigungen auf Bucket-Richtlinie hinzufügen.
  4. Geben Sie die vorkonfigurierte Bucket-Richtlinie wie folgt ein:

    {
      "Version": "2008-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::BUCKET_NAME/*"
        },
        {
          "Sid": "",
          "Effect": "Deny",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::BUCKET_NAME/*"},
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:GetBucketLocation",
          "Resource": "arn:aws:s3:::BUCKET_NAME"
        },
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::568526795995:user/logs"
          },
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::BUCKET_NAME"
        }
      ]
    }
    
    • Ersetzen Sie BUCKET_NAME durch den von Ihnen angegebenen Amazon S3-Bucket-Namen.
  5. Klicken Sie auf Speichern.

Optional: Erforderliche Bestätigung für selbstverwalteten Amazon S3-Bucket

  1. Wählen Sie im Cisco Umbrella-Dashboard Admin > Log management > Amazon S3 aus.
  2. Geben Sie im Feld Bucket name (Bucket-Name) den genauen Namen Ihres Amazon S3-Buckets an und klicken Sie dann auf Verify (Bestätigen).
  3. Im Rahmen der Überprüfung wird eine Datei mit dem Namen README_FROM_UMBRELLA.txt von Cisco Umbrella in Ihren Amazon S3-Bucket hochgeladen. Möglicherweise müssen Sie Ihren Browser aktualisieren, damit die Readme-Datei nach dem Hochladen angezeigt wird.
  4. Laden Sie die Datei README_FROM_UMBRELLA.txt herunter und öffnen Sie sie mit einem Texteditor.
  5. Kopieren und speichern Sie das eindeutige Cisco Umbrella-Token aus der Datei.
  6. Rufen Sie das Cisco Umbrella-Dashboard auf.
  7. Geben Sie im Feld Tokennummer das Token an und klicken Sie auf Speichern.
  8. Wenn der Vorgang erfolgreich war, erhalten Sie in Ihrem Dashboard eine Bestätigungsnachricht, dass der Bucket bestätigt wurde. Wenn Sie eine Fehlermeldung erhalten, dass Ihr Bucket nicht überprüft werden kann, prüfen Sie noch einmal die Syntax des Bucket-Namens und die Konfiguration.

Feed in Google SecOps konfigurieren, um die Cisco Umbrella-DNS-Protokolle aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen> Feeds auf.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. Cisco Umbrella DNS Logs (Cisco Umbrella-DNS-Logs).
  4. Wählen Sie Amazon S3 V2 als Quelltyp aus.
  5. Wählen Sie Cisco Umbrella DNS als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:

    • S3-URI: Der Bucket-URI.
      • s3:/BUCKET_NAME/
        • Ersetzen Sie BUCKET_NAME durch den tatsächlichen Namen des Buckets.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
  8. Klicken Sie auf Weiter.

  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
action security_result.action_details Der Wert wird aus dem Feld action übernommen, sofern es in den JSON-Logs vorhanden ist, oder aus column6 oder column7 in CSV-Logs und in Großbuchstaben konvertiert (ALLOW oder BLOCK).
amp.disposition security_result.detection_fields[].key Der Wert ist ampDisposition.
amp.disposition security_result.detection_fields[].value Der Wert wird aus dem Feld amp.disposition übernommen.
amp.malware security_result.detection_fields[].key Der Wert ist ampMalware.
amp.malware security_result.detection_fields[].value Der Wert wird aus dem Feld amp.malware übernommen.
amp.score security_result.detection_fields[].key Der Wert ist ampScore.
amp.score security_result.detection_fields[].value Der Wert wird aus dem Feld amp.score übernommen.
blocked_categories security_result.category_details Der Wert wird aus dem Feld blocked_categories übernommen.
blockedfiletype security_result.detection_fields[].key Der Wert ist egress type.
blockedfiletype security_result.detection_fields[].value Der Wert wird aus dem Feld blockedfiletype übernommen.
bundleid additional.fields[].key Der Wert ist bundleid.
bundleid additional.fields[].value.string_value Der Wert wird aus dem Feld bundleid übernommen.
categories[] security_result.category_details Der Wert wird aus dem Feld categories[].label übernommen.
column1 metadata.event_timestamp.seconds Der Wert wird aus dem Feld column1 als Zeitstempel geparst. Bei Proxy-Logs werden die Felder date und time, sofern vorhanden, kombiniert und als Zeitstempel geparst.
column10 network.http.user_agent Der Wert wird aus dem Feld column10 übernommen.
column10 additional.fields[].value.string_value Der Wert wird aus dem Feld column10 übernommen.
column11 target.port Der Wert wird aus dem Feld column11 übernommen.
column12 principal.resource.name Der Wert wird aus dem Feld column12 übernommen.
column13 security_result.rule_id Der Wert wird aus dem Feld column13 übernommen.
column14 security_result.action_details Der Wert wird aus dem Feld column14 übernommen.
column2 principal.user.user_display_name Der Wert wird aus dem Feld column2 übernommen.
column2 principal.user.userid Der Wert wird aus dem Feld column2 übernommen.
column2 principal.location.name Der Wert wird aus dem Feld column2 übernommen.
column3 principal.hostname Der Wert wird aus dem Feld column3 übernommen.
column3 principal.user.product_object_id Der Wert wird aus dem Feld column3 übernommen.
column3 principal.location.city Der Wert wird aus dem Feld column3 übernommen.
column3 additional.fields[].value.string_value Der Wert wird aus dem Feld column3 übernommen.
column4 principal.asset.ip Der Wert wird aus dem Feld column4 übernommen.
column4 principal.ip Der Wert wird aus dem Feld column4 übernommen.
column4 principal.port Der Wert wird aus dem Feld column4 übernommen.
column5 principal.asset.ip Der Wert wird aus dem Feld column5 übernommen.
column5 principal.ip Der Wert wird aus dem Feld column5 übernommen.
column5 target.asset.ip Der Wert wird aus dem Feld column5 übernommen.
column5 target.ip Der Wert wird aus dem Feld column5 übernommen.
column6 security_result.action_details Der Wert wird aus dem Feld column6 übernommen.
column6 target.port Der Wert wird aus dem Feld column6 übernommen.
column7 network.received_bytes Der Wert wird aus dem Feld column7 übernommen.
column7 additional.fields[].value.string_value Der Wert wird aus dem Feld column7 übernommen.
column8 principal.asset.ip Der Wert wird aus dem Feld column8 übernommen.
column8 principal.ip Der Wert wird aus dem Feld column8 übernommen.
column8 target.url Der Wert wird aus dem Feld column8 übernommen.
column9 principal.port Der Wert wird aus dem Feld column9 übernommen.
column9 network.http.referral_url Der Wert wird aus dem Feld column9 übernommen.
data_center_name principal.resource.name Der Wert wird aus dem Feld data_center_name übernommen.
datacenter.label security_result.detection_fields[].key Der Wert ist datacenter label.
datacenter.label security_result.detection_fields[].value Der Wert wird aus dem Feld datacenter.label übernommen.
destinationip target.asset.ip Der Wert wird aus dem Feld destinationip übernommen.
destinationip target.ip Der Wert wird aus dem Feld destinationip übernommen.
direction network.direction Der Wert wird aus dem Feld direction übernommen und in Großbuchstaben umgewandelt.
domain network.dns.questions[].name Der Wert wird aus dem Feld domain übernommen. Ein eventuell vorhandener nachgestellter Punkt wird entfernt.
dstPort target.port Der Wert wird aus dem Feld dstPort übernommen.
dstip target.asset.ip Der Wert wird aus dem Feld dstip übernommen.
dstip target.ip Der Wert wird aus dem Feld dstip übernommen.
egress.ip security_result.detection_fields[].key Der Wert ist egress ip.
egress.ip security_result.detection_fields[].value Der Wert wird aus dem Feld egress.ip übernommen.
egress.type security_result.detection_fields[].key Der Wert ist egress type.
egress.type security_result.detection_fields[].value Der Wert wird aus dem Feld egress.type übernommen.
externalip principal.asset.ip Der Wert wird aus dem Feld externalip übernommen.
externalip principal.ip Der Wert wird aus dem Feld externalip übernommen.
forwardingmethod additional.fields[].key Der Wert ist forwardingmethod.
forwardingmethod additional.fields[].value.string_value Der Wert wird aus dem Feld forwardingmethod übernommen.
granular_identity principal.user.user_display_name Der Wert wird aus dem Feld granular_identity übernommen, wenn sowohl granular_identity als auch most_granular_identity vorhanden sind. Andernfalls wird sie aus dem Feld _policy_identity abgeleitet und anhand von identityType weiter aufgeschlüsselt.
granular_identity principal.user.email_addresses Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld granular_identity extrahiert.
granular_identity principal.user.first_name Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld granular_identity extrahiert.
granular_identity principal.user.last_name Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld granular_identity extrahiert.
granular_identity principal.user.userid Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld granular_identity extrahiert.
granular_identity principal.hostname Der Wert wird aus dem Feld granular_identity übernommen.
granular_identity principal.location.name Der Wert wird aus dem Feld granular_identity übernommen.
identity_types additional.fields[].value.string_value Der Wert wird aus dem Feld identity_types übernommen.
identities[] principal.user.product_object_id Der Wert wird aus dem Feld identities[] übernommen.
identities principal.user.product_object_id Der Wert wird aus dem Feld identities übernommen.
internalip principal.asset.ip Der Wert wird aus dem Feld internalip übernommen.
internalip principal.ip Der Wert wird aus dem Feld internalip übernommen.
isolated.fileaction security_result.detection_fields[].key Der Wert ist isolated fileaction.
isolated.fileaction security_result.detection_fields[].value Der Wert wird aus dem Feld isolated.fileaction übernommen.
isolated.state security_result.detection_fields[].key Der Wert ist isolated state.
isolated.state security_result.detection_fields[].value Der Wert wird aus dem Feld isolated.state übernommen.
most_granular_identity principal.user.identityType Der Wert wird aus dem Feld most_granular_identity übernommen, wenn sowohl granular_identity als auch most_granular_identity vorhanden sind. Andernfalls wird sie aus dem Feld _policy_identity_type übernommen.
nat_destination_ip principal.asset.ip Der Wert wird aus dem Feld nat_destination_ip übernommen.
nat_destination_ip principal.ip Der Wert wird aus dem Feld nat_destination_ip übernommen.
odns_categories security_result.category_details Der Wert wird aus dem Feld odns_categories übernommen.
policy.ruleid security_result.rule_id Der Wert wird aus dem Feld policy.ruleid übernommen.
policy.rulesetid security_result.detection_fields[].key Der Wert ist rulesetid.
policy.rulesetid security_result.detection_fields[].value Der Wert wird aus dem Feld policy.rulesetid übernommen.
policy.timebasedrule security_result.detection_fields[].key Der Wert ist timebasedrule.
policy.timebasedrule security_result.detection_fields[].value Der Wert wird aus dem Feld policy.timebasedrule übernommen.
port target.port Der Wert wird aus dem Feld port übernommen.
query_type_name network.dns.questions[].type Der numerische Teil wird mit einem regulären Ausdruck aus dem Feld query_type_name extrahiert und in eine Ganzzahl umgewandelt.
query_type_name additional.fields[].value.string_value Der Stringteil in Klammern wird mithilfe eines regulären Ausdrucks aus dem Feld query_type_name extrahiert.
querytype network.dns.questions[].type Der Wert wird aus dem Feld querytype übernommen und basierend auf dem DNS-Eintragstyp einem numerischen Wert zugeordnet.
referer network.http.referral_url Der Wert wird aus dem Feld referer übernommen.
requestmethod network.http.method Der Wert wird aus dem Feld requestmethod übernommen.
requestsize network.sent_bytes Der Wert wird aus dem Feld requestsize übernommen und in eine vorzeichenlose Ganzzahl konvertiert.
response additional.fields[].value.string_value Der Wert wird aus dem Feld response übernommen.
responsecode network.http.response_code Der Wert wird aus dem Feld responsecode übernommen.
responsefilename target.file.names Der Wert wird aus dem Feld responsefilename übernommen.
responsesize network.received_bytes Der Wert wird aus dem Feld responsesize übernommen und in eine vorzeichenlose Ganzzahl konvertiert.
returncode network.dns.response_code Der Wert wird aus dem Feld returncode übernommen und in eine vorzeichenlose Ganzzahl konvertiert.
securityoverridden additional.fields[].key Der Wert ist securityoverridden.
securityoverridden additional.fields[].value.string_value Der Wert wird aus dem Feld securityoverridden übernommen.
sha256 target.file.sha256 Der Wert wird aus dem Feld sha256 übernommen.
source_ip principal.asset.ip Der Wert wird aus dem Feld source_ip übernommen, sofern es in den JSON-Logs vorhanden ist, oder aus column3 in CSV-Logs.
source_ip principal.ip Der Wert wird aus dem Feld source_ip übernommen, sofern es in den JSON-Logs vorhanden ist, oder aus column3 in CSV-Logs.
srcPort principal.port Der Wert wird aus dem Feld srcPort übernommen.
statuscode network.http.response_code Der Wert wird aus dem Feld statuscode übernommen.
tenantcontrols additional.fields[].key Der Wert ist tenantcontrols.
tenantcontrols additional.fields[].value.string_value Der Wert wird aus dem Feld tenantcontrols übernommen.
timestamp metadata.event_timestamp.seconds Der Wert wird aus dem Feld timestamp als Zeitstempel geparst.
tunnel_name additional.fields[].key Der Wert ist tunnel_name.
tunnel_name additional.fields[].value.string_value Der Wert wird aus dem Feld tunnel_name übernommen.
tunnel_type metadata.product_event_type Der Wert wird aus dem Feld tunnel_type übernommen.
type additional.fields[].key Der Wert ist type.
type additional.fields[].value.string_value Der Wert wird aus dem Feld type übernommen.
url target.url Der Wert wird aus dem Feld url übernommen.
useragent network.http.user_agent Der Wert wird aus dem Feld useragent übernommen.
verdict security_result.action_details Der Wert wird aus dem Feld verdict übernommen.
warnstatus security_result.detection_fields[].key Der Wert ist warnstatus.
warnstatus security_result.detection_fields[].value Der Wert wird aus dem Feld warnstatus übernommen. Der Wert ist DNS Lookup Type. Der Stringteil in Klammern wird mit einem regulären Ausdruck aus dem Feld query_type_name extrahiert. Wenn das Feld nicht vorhanden ist, ist es ein leerer String. Der Wert ist DNS request and response were made.. Er wird anhand des Vorhandenseins bestimmter Felder bestimmt: NETWORK_DNS, wenn question.name vorhanden ist, NETWORK_CONNECTION, wenn sowohl principal.ip als auch target.ip vorhanden sind, STATUS_UPDATE, wenn nur principal.ip vorhanden ist, oder GENERIC_EVENT in allen anderen Fällen. Der Wert ist UMBRELLA_DNS. Der Wert ist Umbrella DNS. Der Wert ist Cisco. Der Wert wird anfangs auf DNS festgelegt. Wenn requestmethod eine gültige HTTP-Methode ist, wird sie in HTTP geändert. Der numerische Teil wird mit einem regulären Ausdruck aus dem Feld query_type_name extrahiert und in eine Ganzzahl konvertiert. Alternativ wird er aus dem Feld querytype abgeleitet und anhand des DNS-Eintrags in einen numerischen Wert umgewandelt. Der Wert wird aus dem Feld useragent oder column10 mit dem Filter parseduseragent abgeleitet. Der Wert wird aus dem letzten Teil des Felds column3 nach dem Aufteilen durch Kommas übernommen oder ist ein leerer String, wenn das Feld nicht vorhanden ist. Der Wert wird aus dem ersten Teil des Felds column3 nach dem Aufteilen durch Kommas oder aus dem Feld column2 übernommen, wenn column3 nicht vorhanden ist. Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld column2 oder column3 extrahiert. Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld column2 oder column3 extrahiert. Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld column2 oder column3 extrahiert. Der Wert wird mithilfe eines regulären Ausdrucks aus dem Feld column2 oder column3 extrahiert. Der Wert wird aus dem Feld action, column6, column7 oder verdict abgeleitet und in Großbuchstaben konvertiert (ALLOW oder BLOCK). Der Wert wird auf NETWORK_MALICIOUS gesetzt, wenn _categories Malware enthält, oder auf NETWORK_SUSPICIOUS, wenn _categories Potentially Harmful enthält.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten