Microsoft IIS-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Microsoft IIS-Logs (Internet Information Services) mit Bindplane in 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 mit einer Reihe von grok
-Mustern relevante Felder aus verschiedenen Microsoft IIS-Logformaten extrahiert und dem einheitlichen Datenmodell (Unified Data Model, UDM) zugeordnet.
Hinweise
- Prüfen Sie, ob Sie eine Google SecOps-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher verwenden.
- Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie 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 > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
Bindplane-Agent unter Windows installieren
- Ö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" /quiet
Zusätzliche Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Bevor Sie die YAML-Datei konfigurieren, beenden Sie den
observIQ Distro for Open Telemetry Collector
-Dienst im Bereich „Dienste“. Greifen Sie auf die Konfigurationsdatei zu:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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]
Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.Nachdem Sie die Datei
config.yaml
gespeichert haben, starten Sie denobservIQ Distro for Open Telemetry Collector
-Dienst.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
@timestamp | metadata.event_timestamp | Der Zeitstempel des Ereignisses, wie im Rohlog aufgezeichnet. |
@version | metadata.product_version | Die Version des IIS-Servers. |
AgentDevice | additional.fields.AgentDevice.value.string_value | Das Gerät, das das Log generiert hat. |
AgentLogFile | additional.fields.AgentLogFile.value.string_value | Der Name der Logdatei. |
ASP.NET_SessionId | network.session_id | Die Sitzungs-ID des Nutzers. |
c-ip | principal.ip | Die IP-Adresse des Clients. |
Version | 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 | hauptkonto.hostname, hauptkonto.asset.hostname | Der Hostname des Clients. |
cs-method | 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 verwendet, um Cookie-Informationen zu extrahieren. | |
cs(Referer) | network.http.referral_url | Die URL, über die der Client 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 | hauptkonto.hostname, hauptkonto.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 Client 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 | Zeitpunkt, zu dem das Ereignis in UTC in die Warteschlange gestellt wurde. |
EventID | metadata.product_log_id | Die ID des Ereignisses. |
EventProcessedUtcTime | additional.fields.EventProcessedUtcTime.value.string_value | Die Zeit, zu der das Ereignis in UTC verarbeitet wurde. |
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 an dem Ereignis beteiligt 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 Hostcomputers. |
host.hostname | target.hostname, target.asset.hostname | Der Hostname des Hostcomputers. |
host.id | observer.asset_id | Die ID des Hostcomputers. |
host.ip | principal.ip, principal.asset.ip | Die IP-Adresse des Hostcomputers. |
host.mac | principal.mac | Die MAC-Adresse des Hostcomputers. |
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 Kernel-Version 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-Unterstatuscode der Antwort. |
Instanz | additional.fields.instance.value.string_value | Die Instanz-ID der Aufgabe. |
intermediary_devicename | intermediary.hostname, intermediary.asset.hostname | Der Hostname des Vermittlungsgeräts. |
json_message | Die Roh-Log-Nachricht im JSON-Format. | |
kv_fields | Wird verwendet, um Schlüssel/Wert-Paare aus der Rohlog-Nachricht 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 des Layers. |
LayerId | security_result.about.resource.attribute.labels.LayerId.value | Die ID des Layers. |
log.file.path | target.file.full_path | Der vollständige Pfad der Logdatei. |
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 Log erfasst wurde. |
logstash.process.host | intermediary.hostname | Der Hostname des Computers, auf dem das Log verarbeitet wurde. |
logstash_json_message | Die Roh-Log-Nachricht 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-Meldung. | |
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 Client 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 Byte. |
sc-status | network.http.response_code | Der HTTP-Statuscode der Antwort. |
sc-substatus | additional.fields.sc_substatus.value.string_value | Der HTTP-Unterstatuscode der Antwort. |
sc-win32-status | Der Windows-Statuscode der Antwort. | |
scbyte | network.sent_bytes | Die Anzahl der an den Client gesendeten Byte. |
scstatus | network.http.response_code | Der HTTP-Statuscode der Antwort. |
die Ausprägung | security_result.severity | Der Schweregrad des Ereignisses. |
service.type | additional.fields.service_type.value.string_value | Der Typ 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-Meldung. | |
syslog_facility | security_result.severity_details | Die Einrichtung der Syslog-Nachricht. |
syslog_pri | Die Priorität der Syslog-Meldung. | |
syslog_severity | security_result.severity_details | Der Schweregrad der Syslog-Nachricht. |
syslog_severity_code | Der Schweregradcode der Syslog-Nachricht. | |
Tags | security_result.rule_name | Tags, die dem Ereignis zugeordnet sind. |
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 | Die Gewichtung des Filters. |
win32_status | Der Windows-Statuscode der Antwort. | |
xforwardedfor | Der X-Forwarded-For-Header, der eine durch Kommas getrennte Liste mit IP-Adressen enthält. | |
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 |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten