Microsoft IIS-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie mit Bindplane IIS-Protokolle (Internet Information Services) für Google Security Operations erfassen. Der Parser versucht zuerst, die Eingabedaten zu bereinigen und zu normalisieren, indem er unnötige Zeichen entfernt und Feldnamen standardisiert. Anschließend werden mithilfe einer Reihe von grok-Mustern relevante Felder aus verschiedenen Microsoft IIS-Logformaten extrahiert und dem einheitlichen Datenmodell (UDM) zugeordnet.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen Windows 2016 oder höher.
  • Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. Lade die Datei zur Authentifizierung der Datenaufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent unter Windows installieren

  1. Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Bevor Sie die YAML-Datei konfigurieren, beenden Sie den observIQ Distro for Open Telemetry Collector-Dienst im Bereich „Dienste“.
  2. Rufen Sie die Konfigurationsdatei auf:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  3. Bearbeiten Sie die Datei config.yamlso:

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      # Resourcedetection is used to add a unique (host.name) to the metric resource(s), allowing users to filter between multiple agent systems.
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
    
      normalizesums:
    
      batch:
    
    exporters:
      chronicle/powershell:
        endpoint: malachiteingestion-pa.googleapis.com
        # Adjust the path to the credentials file you downloaded in Step 1
        creds: '/path/to/ingestion-authentication-file.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<customer_id>'
    
    service:
      pipelines:
        logs/winpowershell:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters: [chronicle/iis]
    
  4. Ersetzen Sie <customer_id> durch die tatsächliche Kundennummer.

  5. Aktualisieren Sie /path/to/ingestion-authentication-file.json im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.

  6. Nachdem Sie die config.yaml-Datei gespeichert haben, starten Sie den observIQ Distro for Open Telemetry Collector-Dienst.

Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden

  • Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
@timestamp metadata.event_timestamp Der Zeitstempel des Ereignisses, wie im Rohprotokoll aufgezeichnet.
@version metadata.product_version Die Version des IIS-Servers.
AgentDevice additional.fields.AgentDevice.value.string_value Das Gerät, auf dem das Protokoll generiert wurde.
AgentLogFile additional.fields.AgentLogFile.value.string_value Der Name der Protokolldatei.
ASP.NET_SessionId network.session_id Die Sitzungs-ID des Nutzers.
c-ip principal.ip Die IP-Adresse des Clients.
Kanal security_result.about.resource.attribute.labels.Channel.value Der Kanal, in dem das Ereignis protokolliert wurde.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value Die ID des Kanals, in dem das Ereignis protokolliert wurde.
Computer target.hostname Der Hostname des Zielcomputers.
cs-bytes network.received_bytes Die Anzahl der vom Client empfangenen Bytes.
cs-host principal.hostname, principal.asset.hostname Der Hostname des Clients.
cs-Methode network.http.method Die vom Client verwendete HTTP-Methode.
cs-uri-query target.url Der Abfragestring der vom Client angeforderten URL.
cs-uri-stem target.url Der Pfad der vom Client angeforderten URL.
cs-username principal.user.user_display_name Der Nutzername des Clients.
cs-version network.tls.version_protocol Die vom Client verwendete HTTP-Version.
cs(Cookie) Wird zum Extrahieren von Cookie-Informationen verwendet.
cs(Referer) network.http.referral_url Die URL, über die der Kunde auf die aktuelle Seite verwiesen wurde.
cs(User-Agent) network.http.user_agent Der User-Agent des Clients.
csbyte network.received_bytes Die Anzahl der vom Client empfangenen Bytes.
cshost principal.hostname, principal.asset.hostname Der Hostname des Clients.
csip principal.ip, principal.asset.ip Die IP-Adresse des Clients.
csmethod network.http.method Die vom Client verwendete HTTP-Methode.
csreferer network.http.referral_url Die URL, über die der Kunde auf die aktuelle Seite verwiesen wurde.
csuseragent network.http.user_agent Der User-Agent des Clients.
csusername principal.user.user_display_name Der Nutzername des Clients.
csversion network.tls.version_protocol Die vom Client verwendete HTTP-Version.
Datum Wird verwendet, um den Ereigniszeitstempel zu erstellen, wenn der Zeitstempel des Rohlogs ungültig ist.
description security_result.description Eine Beschreibung des Ereignisses.
devicename target.hostname Der Hostname des Zielcomputers.
dst_ip target.ip, target.asset.ip Die IP-Adresse des Zielcomputers.
dst_port target.port Die Portnummer des Zielcomputers.
Dauer Die Dauer der Anfrage in Millisekunden.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value Die Zeit, zu der das Ereignis in die Warteschlange gestellt wurde (UTC).
EventID metadata.product_log_id Die ID des Ereignisses.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value Die Zeit, zu der das Ereignis verarbeitet wurde, in UTC.
EventTime metadata.event_timestamp Der Zeitstempel des Ereignisses.
EventType metadata.product_event_type Der Typ des Ereignisses.
file_path target.file.full_path Der vollständige Pfad der Datei, die mit dem Ereignis verknüpft ist.
FilterId security_result.about.resource.attribute.labels.FilterId.value Die ID des Filters.
FilterKey security_result.about.resource.attribute.labels.FilterKey.value Der Schlüssel des Filters.
FilterName security_result.about.resource.attribute.labels.FilterName.value Der Name des Filters.
FilterType security_result.about.resource.attribute.labels.FilterType.value Der Typ des Filters.
Host target.hostname Der Hostname des Zielcomputers.
host.architecture principal.asset.hardware.cpu_platform Die Architektur des Hostcomputers.
host.geo.name additional.fields.geo_name.value.string_value Der geografische Standort des Hosts.
host.hostname target.hostname, target.asset.hostname Der Hostname des Hosts.
host.id observer.asset_id Die ID des Hosts.
host.ip principal.ip, principal.asset.ip Die IP-Adresse des Hosts.
host.mac principal.mac Die MAC-Adresse des Hosts.
host.os.build additional.fields.os_build.value.string_value Die Build-Nummer des Betriebssystems auf dem Hostcomputer.
host.os.kernel principal.platform_patch_level Die Kernelversion des Betriebssystems auf dem Hostcomputer.
host.os.name additional.fields.os_name.value.string_value Der Name des Betriebssystems auf dem Hostcomputer.
host.os.platform principal.platform Die Plattform des Betriebssystems auf dem Hostcomputer.
host.os.version principal.platform_version Die Version des Betriebssystems auf dem Hostcomputer.
http_method network.http.method Die vom Client verwendete HTTP-Methode.
http_response network.http.response_code Der HTTP-Antwortcode.
http_status_code network.http.response_code Der HTTP-Statuscode der Antwort.
http_substatus additional.fields.sc_substatus.value.string_value Der HTTP-Teilstatuscode der Antwort.
Instanz additional.fields.instance.value.string_value Die Instanz-ID der Aufgabe.
intermediary_devicename intermediary.hostname, intermediary.asset.hostname Der Hostname des Zwischengeräts.
json_message Die Rohprotokollnachricht im JSON-Format.
kv_fields Wird verwendet, um Schlüssel/Wert-Paare aus der Rohprotokollnachricht zu extrahieren.
LayerKey security_result.about.resource.attribute.labels.LayerKey.value Der Schlüssel der Ebene.
LayerName security_result.about.resource.attribute.labels.LayerName.value Der Name der Ebene.
LayerId security_result.about.resource.attribute.labels.LayerId.value Die ID der Ebene.
log.file.path target.file.full_path Der vollständige Pfad der Protokolldatei.
log.offset metadata.product_log_id Der Offset des Ereignisses in der Protokolldatei.
logstash.collect.host observer.hostname Der Hostname des Computers, auf dem das Protokoll erfasst wurde.
logstash.process.host intermediary.hostname Der Hostname des Computers, auf dem das Protokoll verarbeitet wurde.
logstash_json_message Die Rohprotokollnachricht im JSON-Format.
Nachricht security_result.description Die Roh-Lognachricht.
Ministerium additional.fields.ministry.value.string_value Das mit dem Ereignis verknüpfte Ministerium.
Name Der Name der Entität.
NewValue additional.fields.NewValue.value.string_value Der neue Wert der Konfigurationseinstellung.
OldValue additional.fields.OldValue.value.string_value Der alte Wert der Konfigurationseinstellung.
Port principal.port Die Portnummer des Clients.
priority_code Der Prioritätscode der Syslog-Nachricht.
ProcessID principal.process.pid Die Prozess-ID des Prozesses, der das Ereignis generiert hat.
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value Die GUID des Anbieters.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value Der Schlüssel des Anbieters.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value Der Name des Anbieters.
referrer_url network.http.referral_url Die URL, über die der Kunde auf die aktuelle Seite verwiesen wurde.
request_url target.url Die vom Client angeforderte URL.
s-computername target.hostname Der Hostname des Zielcomputers.
s-ip target.ip, target.asset.ip Die IP-Adresse des Zielcomputers.
s-port target.port Die Portnummer des Zielcomputers.
s-sitename additional.fields.sitename.value.string_value Der Name der Website.
sc-bytes network.sent_bytes Die Anzahl der an den Client gesendeten Bytes.
sc-status network.http.response_code Der HTTP-Statuscode der Antwort.
sc-substatus additional.fields.sc_substatus.value.string_value Der HTTP-Teilstatuscode der Antwort.
sc-win32-status Der Windows-Statuscode der Antwort.
scbyte network.sent_bytes Die Anzahl der an den Client gesendeten Bytes.
scstatus network.http.response_code Der HTTP-Statuscode der Antwort.
die Ausprägung security_result.severity Die Schwere des Ereignisses.
service.type additional.fields.service_type.value.string_value Die Art des Dienstes.
sIP principal.ip, principal.asset.ip Die IP-Adresse des Clients.
sPort principal.port Die Portnummer des Clients.
sSiteName additional.fields.sitename.value.string_value Der Name der Website.
src_ip principal.ip, principal.asset.ip, observer.ip Die IP-Adresse des Clients.
src_port principal.port Die Portnummer des Clients.
sysdate Datum und Uhrzeit der syslog-Nachricht.
syslog_facility security_result.severity_details Die Facility der Syslog-Nachricht.
syslog_pri Die Priorität der Syslog-Nachricht.
syslog_severity security_result.severity_details Der Schweregrad der Syslog-Nachricht.
syslog_severity_code Der Schweregradcode der Syslog-Nachricht.
Tags security_result.rule_name Mit dem Ereignis verknüpfte Tags.
task additional.fields.task.value.string_value Der Name der Aufgabe.
Zeit Wird verwendet, um den Ereigniszeitstempel zu erstellen, wenn der Zeitstempel des Rohlogs ungültig ist.
time-taken Die Dauer der Anfrage in Millisekunden.
uri_query target.url Der Abfragestring der vom Client angeforderten URL.
user_agent network.http.user_agent Der User-Agent des Clients.
Nutzername target.user.userid Der Nutzername des Nutzers.
UserSid target.user.windows_sid Die Windows-SID des Nutzers.
Gewicht security_result.about.resource.attribute.labels.Weight.value Das Gewicht des Filters.
win32_status Der Windows-Statuscode der Antwort.
xforwardedfor Der X-Forwarded-For-Header enthält eine durch Kommas getrennte Liste mit IP-Adressen.
metadata.log_type IIS
network.direction INBOUND
metadata.vendor_name Microsoft
metadata.product_name Internet Information Server
metadata.event_type NETWORK_HTTP, USER_UNCATEGORIZED, GENERIC_EVENT, STATUS_UPDATE, USER_LOGOUT, USER_LOGIN
extensions.auth.type MACHINE

Änderungen

2025-01-27

Optimierung:

  • Unterstützung für das Parsen von XML-Protokollen hinzugefügt.

2024-06-20

Optimierung:

  • streamid wurde additional.fields zugeordnet.

2024-06-11

Optimierung:

  • Es wurde ein Grok-Muster hinzugefügt, um nicht geparste Protokolle zu analysieren.

2024-02-18

Optimierung:

  • Die Feldnamen des Grok-Musters wurden geändert, um den Wert korrekt zuzuordnen.
  • Name von intermediary_devicename in observer_devicename geändert.
  • Name von src_ip in observer_ip geändert.
  • Name von dst_ip in principal_or_intermediary_ip geändert.
  • Name von xff_ips in principal_xff_ips geändert.
  • observer_ip wurde observer.ip zugeordnet.
  • observer_devicename wurde observer.hostname zugeordnet.
  • principal_xff_ips wurde principal.ip zugeordnet.
  • Wenn principal_xff_ips vorhanden ist, wird principal_or_intermediary_ip intermediary.ip zugeordnet.
  • Wenn principal_xff_ips nicht vorhanden ist, wird principal_or_intermediary_ip auf principal.ip zugeordnet.

2024-02-12

Optimierung:

  • Neue Grok-Muster wurden hinzugefügt, um die Netzwerkprotokolle mit KV-Daten zu unterstützen.
  • sc-substatus wurde additional.fields zugeordnet.

2024-01-09

Optimierung:

  • Neue Grok-Muster wurden hinzugefügt, um Netzwerkprotokolle mit Schlüssel/Wert-Daten zu unterstützen.
  • dst_ip2 wurde target.ip zugeordnet.
  • X-BackEndCookie,exchangecookie, OutlookSession, MapiContext, MapiRouting, content_type und MapiSequence wurden additional.fields zugeordnet.

2023-12-19

Optimierung:

  • Configuration wird als Wert zu metadata.product_event_type zugeordnet, wenn EventType VERBOSE entspricht.
  • Message wurde security_result.description zugeordnet.
  • PhysicalPath wurde target.file.full_path zugeordnet.
  • OldValue, NewValue, Configuration und ConfigPath wurden additional.fields zugeordnet.

2023-12-06

Optimierung:

  • @timestamp wurde metadata.event_timestamp zugeordnet.
  • host.hostname wurde target.hostname zugeordnet.
  • logstash.process.host wurde intermediary.hostname zugeordnet.
  • logstash.collect.host wurde observer.hostname zugeordnet.
  • _user wurde principal.user.userid zugeordnet.
  • http_response wurde network.http.response_code zugeordnet.
  • referer wurde network.http.referral_url zugeordnet.
  • syslog_severity wurde security_result.severity_details zugeordnet.
  • message wurde security_result.description zugeordnet.
  • Wenn request_url /login.aspx und entity AutoLogout=1 ist, setzen Sie metadata.event_type auf USER_LOGOUT.
  • Wenn request_url /login.aspx ist, setzen Sie metadata.event_type auf USER_LOGIN.

2023-10-27

Optimierung:

  • Noun.hostname und Noun.asset.hostname wurden demselben Wert zugeordnet.
  • cIP wurde target.ip zugeordnet.
  • csUriStem wurde target.url zugeordnet.
  • sPort wurde principal.port zugeordnet.
  • csUserAgent wurde http.user_agent zugeordnet.
  • sIP wurde principal.ip zugeordnet.
  • csMethod wurde network.http.method zugeordnet.
  • scStatus wurde http.response_code zugeordnet.
  • sComputerName wurde target.hostname zugeordnet.
  • _resourceId wurde target.resource.id zugeordnet.
  • scBytes wurde network.sent_bytes zugeordnet.
  • csBytes wurde network.received_bytes zugeordnet.
  • sSiteName, TenantId, EventProcessedUtcTime, ManagementGroupName und EventEnqueuedUtcTime wurden additional.fields zugeordnet.
  • TimeGenerated wurde about.resource.attribute.labels zugeordnet.
  • SourceSystem wurde security_result.detection_fields zugeordnet.

2023-06-23

Fehlerkorrektur:

  • Änderung des Protokollformats
  • Grok für das geänderte Protokollmuster definiert
  • cs-host wurde principal.application zugeordnet
  • Uristem und cs-uri-stem mit if-else auf target.url zugeordnet
  • CS-Version wurde auf network.tls.version_protocol zugeordnet
  • Der Wert für „Schwere“ wurde durch den Wert im Feld „Ebene“ ersetzt.
  • Der Wert „websitename“ wurde durch „s-websitename“ ersetzt.
  • Der Wert von „UserSid“ wurde durch „UserID“ ersetzt.
  • AgentDevice als Labelschlüssel und -wert zugeordnet
  • app_name wurde principal.application zugeordnet
  • ChannelID wurde security_result.about.resource.attribute zugeordnet
  • Level wurde security_result.severity zugeordnet.
  • ExecutionProcessID wurde principal.process.pid zugeordnet
  • ExecutionThreadID wurde principal.process.product_specific_process_id zugeordnet
  • Domain wurde principal.user.userid zugeordnet
  • UserID wurde principal.user.windows_sid zugeordnet
  • AccountType wurde principal.user.role_name zugeordnet.

2023-05-12

Optimierung:

  • JSON-Logs, die beim Parsen fehlgeschlagen sind
  • cshost wurde principal.hostname zugeordnet
  • csusername wurde principal.user.user_display_name zugeordnet.
  • sip wurde target.ip zugeordnet.
  • uristem wurde target.url zugeordnet.
  • sport wurde target.port zugeordnet.
  • csversion wurde network.tls.version_protocol zugeordnet.
  • csuseragent wurde network.http.user_agent zugeordnet.
  • csip wurde principal.ip zugeordnet.
  • xforwardedfor wurde principal.ip zugeordnet.
  • csmethod wurde network.http.method zugeordnet.
  • csreferer wurde network.http.referral_url zugeordnet.
  • scstatus wurde network.http.response_code zugeordnet.
  • computername wurde target.asset.hostname zugeordnet.
  • scbyte wurde network.sent_bytes zugeordnet.
  • csbyte wurde network.received_bytes zugeordnet.
  • date und time wurden metadata.event_timestamp zugeordnet.

2023-03-01

Optimierung:

  • Unterstützung für Logs im JSON-Format mit Schlüsseln wie c-*, s-*, cs-* und sc-* hinzugefügt.

2022-10-25

Optimierung:

  • uri_query,intermediary_device_name,principal_username,sent_bytes,received_bytes aus dem Protokoll extrahiert
  • dst_port wurde in src_port geändert.
  • src_port wurde principal.port zugeordnet.
  • Zuordnung von target.url zu request_url+?+uri_query aktualisiert.
  • token_data wurde security_result.detection_fields als Cookie zugeordnet.
  • sent_bytes wurde network.sent_bytes zugeordnet.
  • received_bytes wurde network.received_bytes zugeordnet.
  • intermediary_devicename wird target.hostname zugeordnet, wenn target_host leer ist, andernfalls intermediary.hostname.
  • principal_username wurde principal.user.userid zugeordnet.
  • Devicename wurde nur dann target.hostname zugeordnet, wenn target_host leer ist.
  • src_ip wurde principal.ip zugeordnet, wenn xff_ips leer ist.
  • Wenn xff_ips nicht leer ist:
  • src_ip wurde intermediary.ip zugeordnet.
  • xff_ips wurde principal.ip zugeordnet.
  • Es wurde ein Grok-Muster für zusätzliche Protokolltypen hinzugefügt.

2022-10-01

Optimierung:

  • Grok wurde geschrieben, um unparse syslogs zu analysieren.
  • Severity wurde security_result.severity zugeordnet.
  • UserName wurde target.user.userid zugeordnet.
  • UserSid wurde target.user.windows_sid zugeordnet.
  • ProviderKey wurde security_result.about.resource.attribute.labels zugeordnet.
  • LayerKey wurde security_result.about.resource.attribute.labels zugeordnet.
  • LayerName wurde security_result.about.resource.attribute.labels zugeordnet.
  • LayerId wurde security_result.about.resource.attribute.labels zugeordnet.
  • Weight wurde security_result.about.resource.attribute.labels zugeordnet.
  • Conditions wurde security_result.about.resource.attribute.labels zugeordnet.
  • Action wurde security_result.about.resource.attribute.labels zugeordnet.
  • CalloutKey wurde security_result.about.resource.attribute.labels zugeordnet.
  • CalloutName wurde security_result.about.resource.attribute.labels zugeordnet.
  • Channel wurde security_result.about.resource.attribute.labels zugeordnet.
  • FilterId wurde security_result.about.resource.attribute.labels zugeordnet.
  • FilterKey wurde security_result.about.resource.attribute.labels zugeordnet.
  • FilterName wurde security_result.about.resource.attribute.labels zugeordnet.
  • FilterType wurde security_result.about.resource.attribute.labels zugeordnet.
  • ProviderGuid wurde security_result.about.resource.attribute.labels zugeordnet.
  • ProviderName wurde security_result.about.resource.attribute.labels zugeordnet.
  • SourceName wurde security_result.about.resource.attribute.labels zugeordnet.
  • SyslogSeverity wurde security_result.about.resource.attribute.labels zugeordnet.
  • Category wurde security_result.category_details zugeordnet.
  • EventType wurde metadata.product_event_type zugeordnet.
  • EventID wurde metadata.product_log_id zugeordnet.
  • ProcessID wurde principal.process.pid zugeordnet.
  • SourceModuleName wurde target.resource.name zugeordnet.
  • SourceModuleType wurde observer.application zugeordnet.

2022-09-30

Optimierung:

  • XFF-Header-IPs wurden mit „intermediary.ip“ abgeglichen.
  • Hostname wurde target.hostname zugeordnet.
  • Es wurde ein zusätzliches Grok-Muster hinzugefügt, um bestimmte Protokolle mit zusätzlichen Informationen korrekt zu parsen. Diese zusätzlichen Informationen wurden in zusätzlichen Feldern zugeordnet.
  • ASP.NET_Session_id wurde network.session_id zugeordnet.

2022-03-30

Optimierung:

  • Zusätzliche Felder parsen

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