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 Collectorservizio 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,vio Blocco note).
- Individua il file
Modifica il file
config.yamlcome 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.jsonal 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.