Raccogliere i log di Microsoft IIS
Questo documento spiega come raccogliere i log di Microsoft Internet Information Services (IIS) in Google Security Operations utilizzando Bindplane. Il parser tenta innanzitutto di pulire e normalizzare i dati di input rimuovendo i caratteri non necessari e standardizzando i nomi dei campi. Quindi, utilizza una serie di pattern grok
per estrarre i campi pertinenti da vari formati di log Microsoft IIS e li mappa al modello UDM (Unified Data Model).
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di avere Windows 2016 o versioni successive.
- Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane su Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Risorse aggiuntive per l'installazione
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps
- Prima di configurare il file YAML, arresta il
observIQ Distro for Open Telemetry Collector
servizio nel pannello Servizi. Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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]
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.Dopo aver salvato il file
config.yaml
, avvia il servizioobservIQ Distro for Open Telemetry Collector
.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
@timestamp | metadata.event_timestamp | Il timestamp dell'evento registrato nel log non elaborato. |
@version | metadata.product_version | La versione del server IIS. |
AgentDevice | additional.fields.AgentDevice.value.string_value | Il dispositivo che ha generato il log. |
AgentLogFile | additional.fields.AgentLogFile.value.string_value | Il nome del file di log. |
ASP.NET_SessionId | network.session_id | L'ID sessione dell'utente. |
c-ip | principal.ip | L'indirizzo IP del client. |
Canale | security_result.about.resource.attribute.labels.Channel.value | Il canale in cui è stato registrato l'evento. |
ChannelID | security_result.about.resource.attribute.labels.ChannelID.value | L'ID del canale in cui è stato registrato l'evento. |
Computer | target.hostname | Il nome host della macchina di destinazione. |
cs-bytes | network.received_bytes | Il numero di byte ricevuti dal client. |
cs-host | principal.hostname, principal.asset.hostname | Il nome host del client. |
cs-method | network.http.method | Il metodo HTTP utilizzato dal client. |
cs-uri-query | target.url | La stringa di query dell'URL richiesto dal client. |
cs-uri-stem | target.url | Il percorso dell'URL richiesto dal client. |
cs-username | principal.user.user_display_name | Il nome utente del cliente. |
cs-version | network.tls.version_protocol | La versione HTTP utilizzata dal client. |
cs(Cookie) | Utilizzato per estrarre informazioni sui cookie. | |
cs(Referer) | network.http.referral_url | L'URL che ha indirizzato il cliente alla pagina corrente. |
cs(User-Agent) | network.http.user_agent | Lo user agent del client. |
csbyte | network.received_bytes | Il numero di byte ricevuti dal client. |
cshost | principal.hostname, principal.asset.hostname | Il nome host del client. |
csip | principal.ip, principal.asset.ip | L'indirizzo IP del client. |
csmethod | network.http.method | Il metodo HTTP utilizzato dal client. |
csreferer | network.http.referral_url | L'URL che ha indirizzato il cliente alla pagina corrente. |
csuseragent | network.http.user_agent | Lo user agent del client. |
csusername | principal.user.user_display_name | Il nome utente del cliente. |
csversion | network.tls.version_protocol | La versione HTTP utilizzata dal client. |
data | Utilizzato per creare il timestamp dell'evento se il timestamp del log non elaborato non è valido. | |
description | security_result.description | Una descrizione dell'evento. |
devicename | target.hostname | Il nome host della macchina di destinazione. |
dst_ip | target.ip, target.asset.ip | L'indirizzo IP della macchina di destinazione. |
dst_port | target.port | Il numero di porta della macchina di destinazione. |
duration | La durata della richiesta in millisecondi. | |
EventEnqueuedUtcTime | additional.fields.EventEnqueuedUtcTime.value.string_value | L'ora in cui l'evento è stato messo in coda nel fuso orario UTC. |
EventID | metadata.product_log_id | L'ID dell'evento. |
EventProcessedUtcTime | additional.fields.EventProcessedUtcTime.value.string_value | L'ora in cui l'evento è stato elaborato nel fuso orario UTC. |
EventTime | metadata.event_timestamp | Il timestamp dell'evento. |
EventType | metadata.product_event_type | Il tipo di evento. |
file_path | target.file.full_path | Il percorso completo del file coinvolto nell'evento. |
FilterId | security_result.about.resource.attribute.labels.FilterId.value | L'ID del filtro. |
FilterKey | security_result.about.resource.attribute.labels.FilterKey.value | La chiave del filtro. |
FilterName | security_result.about.resource.attribute.labels.FilterName.value | Il nome del filtro. |
FilterType | security_result.about.resource.attribute.labels.FilterType.value | Il tipo di filtro. |
host | target.hostname | Il nome host della macchina di destinazione. |
host.architecture | principal.asset.hardware.cpu_platform | L'architettura della macchina host. |
host.geo.name | additional.fields.geo_name.value.string_value | La posizione geografica della macchina host. |
host.hostname | target.hostname, target.asset.hostname | Il nome host della macchina host. |
host.id | observer.asset_id | L'ID della macchina host. |
host.ip | principal.ip, principal.asset.ip | L'indirizzo IP della macchina host. |
host.mac | principal.mac | L'indirizzo MAC della macchina host. |
host.os.build | additional.fields.os_build.value.string_value | Il numero di build del sistema operativo sulla macchina host. |
host.os.kernel | principal.platform_patch_level | La versione del kernel del sistema operativo sulla macchina host. |
host.os.name | additional.fields.os_name.value.string_value | Il nome del sistema operativo sulla macchina host. |
host.os.platform | principal.platform | La piattaforma del sistema operativo sulla macchina host. |
host.os.version | principal.platform_version | La versione del sistema operativo sulla macchina host. |
http_method | network.http.method | Il metodo HTTP utilizzato dal client. |
http_response | network.http.response_code | Il codice di risposta HTTP. |
http_status_code | network.http.response_code | Il codice di stato HTTP della risposta. |
http_substatus | additional.fields.sc_substatus.value.string_value | Il codice di stato secondario HTTP della risposta. |
istanza | additional.fields.instance.value.string_value | L'ID istanza dell'attività. |
intermediary_devicename | intermediary.hostname, intermediary.asset.hostname | Il nome host del dispositivo intermediario. |
json_message | Il messaggio di log non elaborato in formato JSON. | |
kv_fields | Utilizzato per estrarre coppie chiave-valore dal messaggio di log non elaborato. | |
LayerKey | security_result.about.resource.attribute.labels.LayerKey.value | La chiave del livello. |
LayerName | security_result.about.resource.attribute.labels.LayerName.value | Il nome del livello. |
LayerId | security_result.about.resource.attribute.labels.LayerId.value | L'ID del livello. |
log.file.path | target.file.full_path | Il percorso completo del file di log. |
log.offset | metadata.product_log_id | L'offset dell'evento nel file di log. |
logstash.collect.host | observer.hostname | Il nome host della macchina che ha raccolto il log. |
logstash.process.host | intermediary.hostname | Il nome host del computer che ha elaborato il log. |
logstash_json_message | Il messaggio di log non elaborato in formato JSON. | |
messaggio | security_result.description | Il messaggio di log non elaborato. |
ministero | additional.fields.ministry.value.string_value | Il ministero associato all'evento. |
nome | Il nome dell'entità. | |
NewValue | additional.fields.NewValue.value.string_value | Il nuovo valore dell'impostazione di configurazione. |
OldValue | additional.fields.OldValue.value.string_value | Il valore precedente dell'impostazione di configurazione. |
porta | principal.port | Il numero di porta del client. |
priority_code | Il codice di priorità del messaggio syslog. | |
ProcessID | principal.process.pid | L'ID processo del processo che ha generato l'evento. |
ProviderGuid | security_result.about.resource.attribute.labels.ProviderGuid.value | Il GUID del fornitore. |
ProviderKey | security_result.about.resource.attribute.labels.ProviderKey.value | La chiave del fornitore. |
ProviderName | security_result.about.resource.attribute.labels.ProviderName.value | Il nome del fornitore. |
referrer_url | network.http.referral_url | L'URL che ha indirizzato il cliente alla pagina corrente. |
request_url | target.url | L'URL richiesto dal client. |
s-computername | target.hostname | Il nome host della macchina di destinazione. |
s-ip | target.ip, target.asset.ip | L'indirizzo IP della macchina di destinazione. |
s-port | target.port | Il numero di porta della macchina di destinazione. |
s-sitename | additional.fields.sitename.value.string_value | Il nome del sito. |
sc-bytes | network.sent_bytes | Il numero di byte inviati al client. |
sc-status | network.http.response_code | Il codice di stato HTTP della risposta. |
sc-substatus | additional.fields.sc_substatus.value.string_value | Il codice di stato secondario HTTP della risposta. |
sc-win32-status | Il codice di stato di Windows della risposta. | |
scbyte | network.sent_bytes | Il numero di byte inviati al client. |
scstatus | network.http.response_code | Il codice di stato HTTP della risposta. |
gravità | security_result.severity | La gravità dell'evento. |
service.type | additional.fields.service_type.value.string_value | Il tipo di servizio. |
sIP | principal.ip, principal.asset.ip | L'indirizzo IP del client. |
sPort | principal.port | Il numero di porta del client. |
sSiteName | additional.fields.sitename.value.string_value | Il nome del sito. |
src_ip | principal.ip, principal.asset.ip, observer.ip | L'indirizzo IP del client. |
src_port | principal.port | Il numero di porta del client. |
sysdate | La data e l'ora del messaggio syslog. | |
syslog_facility | security_result.severity_details | La struttura del messaggio syslog. |
syslog_pri | La priorità del messaggio syslog. | |
syslog_severity | security_result.severity_details | La gravità del messaggio syslog. |
syslog_severity_code | Il codice di gravità del messaggio syslog. | |
tags | security_result.rule_name | Tag associati all'evento. |
attività | additional.fields.task.value.string_value | Il nome dell'attività. |
tempo | Utilizzato per creare il timestamp dell'evento se il timestamp del log non elaborato non è valido. | |
tempo impiegato | La durata della richiesta in millisecondi. | |
uri_query | target.url | La stringa di query dell'URL richiesto dal client. |
user_agent | network.http.user_agent | Lo user agent del client. |
Nome utente | target.user.userid | Il nome utente dell'utente. |
UserSid | target.user.windows_sid | Il SID di Windows dell'utente. |
Peso | security_result.about.resource.attribute.labels.Weight.value | Il peso del filtro. |
win32_status | Il codice di stato di Windows della risposta. | |
xforwardedfor | L'intestazione X-Forwarded-For, contenente un elenco di indirizzi IP separati da virgole. | |
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 |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.