Raccogliere i log di Microsoft IIS

Supportato in:

Questa guida spiega come importare i log di Microsoft Internet Information Services (IIS) in Google Security Operations utilizzando Bindplane.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive con IIS installato
  • Accesso amministrativo al server IIS
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. 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

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Configura il logging esteso W3C di IIS

Apri IIS Manager

  1. Fai clic su Avvia.
  2. Digita inetmgr e premi Invio.
  3. Si apre la finestra Gestione IIS (Internet Information Services).

Metodo alternativo:

  1. Premi tasto Windows + R.
  2. Digita inetmgr e premi Invio.
  1. Nel riquadro Connessioni, espandi il nome del server.
  2. Per configurare la registrazione a livello di server (consigliata):
    • Fai clic sul nome del server a livello radice.
  3. Per configurare la registrazione specifica per il sito:
    • Espandi Siti e poi fai clic sul sito specifico (ad esempio, Sito web predefinito).
  4. Nella visualizzazione Funzionalità, fai doppio clic su Logging.

Seleziona il formato di log esteso W3C

  1. Nella pagina Logging, nella sezione File di log:
    • Nel menu a discesa Formato, seleziona W3C.
  2. Fai clic sul pulsante Seleziona campi.

Configura i campi di logging W3C

Nella finestra di dialogo Campi di logging W3C, seleziona i campi in base a uno dei seguenti pattern:

Utilizza questo pattern quando hai bisogno del contesto completo della richiesta, inclusi referrer e stringhe di query per l'analisi della sicurezza, e ospiti più siti su un server.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Nome servizio (s-sitename)
  4. Indirizzo IP del server (s-ip)
  5. Metodo (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Query URI (cs-uri-query)
  8. Porta server (s-port)
  9. User Name (cs-username)
  10. Indirizzo IP client (c-ip)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Stato del protocollo (sc-status)
  14. Byte inviati (sc-bytes)
  15. Byte ricevuti (cs-bytes)

Pattern 2: di base con stato secondario e rendimento

Utilizza questo pattern quando hai bisogno di codici di errore dettagliati (sottostato, stato Win32) e di tempi di richiesta per la risoluzione dei problemi.

Attiva questi campi in questo ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Indirizzo IP del server (s-ip)
  4. Metodo (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Porta server (s-port)
  7. User Name (cs-username)
  8. Indirizzo IP client (c-ip)
  9. User agent (cs(User-Agent))
  10. Referer (cs(Referer))
  11. Stato del protocollo (sc-status)
  12. Sottostato del protocollo (sc-substatus)
  13. Stato Win32 (sc-win32-status)
  14. Tempo impiegato (time-taken)

Utilizza questo pattern quando hai bisogno di una registrazione completa con identificazione del sito, errori dettagliati, metriche della larghezza di banda e dati sul rendimento.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Nome servizio (s-sitename)
  4. Indirizzo IP del server (s-ip)
  5. Metodo (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Query URI (cs-uri-query)
  8. Porta server (s-port)
  9. User Name (cs-username)
  10. Indirizzo IP client (c-ip)
  11. User agent (cs(User-Agent))
  12. Stato del protocollo (sc-status)
  13. Sottostato del protocollo (sc-substatus)
  14. Stato Win32 (sc-win32-status)
  15. Byte inviati (sc-bytes)
  16. Byte ricevuti (cs-bytes)
  17. Tempo impiegato (time-taken)

Pattern 4: Multi-site con contesto completo

Questo pattern è funzionalmente identico al pattern 3.

Utilizza questo pattern se hai più siti e hai bisogno di una visibilità completa.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Nome servizio (s-sitename)
  4. Indirizzo IP del server (s-ip)
  5. Metodo (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Query URI (cs-uri-query)
  8. Porta server (s-port)
  9. User Name (cs-username)
  10. Indirizzo IP client (c-ip)
  11. User agent (cs(User-Agent))
  12. Stato del protocollo (sc-status)
  13. Sottostato del protocollo (sc-substatus)
  14. Stato Win32 (sc-win32-status)
  15. Byte inviati (sc-bytes)
  16. Byte ricevuti (cs-bytes)
  17. Tempo impiegato (time-taken)

Modello 5: Contesto del sito con metriche complete (alternativo)

Questo pattern è funzionalmente identico ai pattern 3 e 4.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Nome servizio (s-sitename)
  4. Indirizzo IP del server (s-ip)
  5. Metodo (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Query URI (cs-uri-query)
  8. Porta server (s-port)
  9. User Name (cs-username)
  10. Indirizzo IP client (c-ip)
  11. User agent (cs(User-Agent))
  12. Stato del protocollo (sc-status)
  13. Sottostato del protocollo (sc-substatus)
  14. Stato Win32 (sc-win32-status)
  15. Byte inviati (sc-bytes)
  16. Byte ricevuti (cs-bytes)
  17. Tempo impiegato (time-taken)

Pattern 6: TLS-aware con stato secondario e prestazioni

Utilizza questo pattern quando devi monitorare le versioni del protocollo HTTP/HTTPS (HTTP/1.1, HTTP/2, HTTP/3) per l'analisi della sicurezza o la risoluzione dei problemi di TLS.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Indirizzo IP del server (s-ip)
  4. Metodo (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Query URI (cs-uri-query)
  7. Porta server (s-port)
  8. User Name (cs-username)
  9. Indirizzo IP client (c-ip)
  10. Versione del protocollo (cs-version)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Stato del protocollo (sc-status)
  14. Sottostato del protocollo (sc-substatus)
  15. Stato Win32 (sc-win32-status)
  16. Tempo impiegato (time-taken)

Modello 7: TLS-aware senza metriche sul rendimento

Utilizza questo pattern quando: come il pattern 6, ma non hai bisogno delle metriche relative al tempo impiegato.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Indirizzo IP del server (s-ip)
  4. Metodo (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Query URI (cs-uri-query)
  7. Porta server (s-port)
  8. User Name (cs-username)
  9. Indirizzo IP client (c-ip)
  10. Versione del protocollo (cs-version)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Stato del protocollo (sc-status)
  14. Sottostato del protocollo (sc-substatus)
  15. Stato Win32 (sc-win32-status)

Pattern 8: Minimo con prestazioni

Utilizza questo pattern quando hai bisogno di una registrazione minima con metriche di rendimento, ma non ti interessano stringhe di query, referrer o versioni del protocollo.

Attiva questi campi nell'ordine esatto:

  1. Data (data)
  2. Ora (ora)
  3. Indirizzo IP del server (s-ip)
  4. Metodo (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Porta server (s-port)
  7. User Name (cs-username)
  8. Indirizzo IP client (c-ip)
  9. User agent (cs(User-Agent))
  10. Stato del protocollo (sc-status)
  11. Sottostato del protocollo (sc-substatus)
  12. Stato Win32 (sc-win32-status)
  13. Tempo impiegato (time-taken)

Guida alla selezione del pattern

Per la maggior parte dei deployment, utilizza il pattern 1 o il pattern 3.

  • Pattern 1: ideale per implementazioni incentrate sulla sicurezza con più siti (include referrer, stringa di query, nome del sito).
  • Pattern 3:ideale per ambienti di produzione che richiedono metriche complete (include stato secondario, errori Win32, larghezza di banda, tempistiche, nome del sito).
  • Pattern 6/7: utilizza questo pattern se devi monitorare le versioni del protocollo HTTP (adozione di HTTP/2, risoluzione dei problemi di TLS).
  • Pattern 2/8: utilizzalo per la registrazione minima con i dettagli degli errori.

Applica configurazione

  1. Fai clic su Ok per chiudere la finestra di dialogo Campi di registrazione W3C.
  2. Verifica il percorso della directory in cui verranno scritti i log.
    • Valore predefinito: %SystemDrive%\inetpub\logs\LogFiles
  3. In Rotazione dei file di log, seleziona Giornaliera (opzione consigliata per l'importazione di Google SecOps).
  4. Fai clic su Applica nel riquadro Azioni.

Verifica la registrazione IIS

  1. Genera traffico di test verso il tuo sito IIS aprendo una pagina web in un browser.
  2. Vai alla directory dei log: C:\inetpub\logs\LogFiles\W3SVC1\
  3. Apri il file di log più recente (ad esempio u_ex251020.log) in Blocco note.
  4. Verifica che la riga #Fields: contenga tutti i campi che hai attivato.

    • Riga di esempio #Fields::

      #Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
      
    • Voce di log di esempio:

      2025-10-20 14:23:15 Default_Web_Site SERVER01 192.168.1.10 GET /index.html - 80 - 203.0.113.45 Mozilla/5.0+(Windows+NT+10.0) - 200 0 0 1234 567 125
      

Installa l'agente Bindplane

Installa l'agente Bindplane sul server Windows seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

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

Risorse aggiuntive per l'installazione

Configura l'agente Bindplane per importare i log IIS e inviarli a Google SecOps

Arresta il servizio Bindplane

  • Prima di modificare il file di configurazione, arresta il servizio:

    Stop-Service "observIQ OpenTelemetry Collector"
    

Modifica il file di configurazione

  1. Individua il file config.yaml.
    • Percorso predefinito: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. Apri il file utilizzando un editor di testo (ad esempio Blocco note, VS Code o Notepad++) come amministratore.
  3. Sostituisci l'intero contenuto con la seguente configurazione:

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
      normalizesums:
      batch:
    
    exporters:
      chronicle/iis:
        endpoint: malachiteingestion-pa.googleapis.com
        creds: 'C:\SecOps\ingestion-auth.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<CUSTOMER_ID>'
        compression: gzip
    
    service:
      pipelines:
        logs/iis:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters:
            - chronicle/iis
    
    • Sostituisci i seguenti segnaposto:
      • creds:: percorso del file di autenticazione dell'importazione (ad esempio, C:\SecOps\ingestion-auth.json).
      • customer_id:: il tuo ID cliente Google SecOps effettivo dalla sezione Recupera l'ID cliente Google SecOps.

Riavvia l'agente Bindplane per applicare le modifiche

  • Dopo aver salvato il file config.yaml, riavvia il servizio Bindplane:

    Start-Service "observIQ OpenTelemetry Collector"
    
  • Verifica che il servizio sia in esecuzione:

    Get-Service "observIQ OpenTelemetry Collector"
    
  • Output previsto:

    Status   Name                               DisplayName
    ------   ----                               -----------
    Running  observiq-otel-collector            observIQ OpenTelemetry Collector
    

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 le 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.
descrizione 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 in formato 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 vecchio valore 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.
Tag 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.