Recolha registos do Microsoft IIS

Suportado em:

Este guia explica como pode carregar registos dos Serviços de Informação da Internet (IIS) da Microsoft para o Google Security Operations através do Bindplane.

Antes de começar

Certifique-se de que cumpre os seguintes pré-requisitos:

  • Uma instância do Google SecOps
  • Um Windows Server 2016 ou posterior com o IIS instalado
  • Acesso administrativo ao servidor IIS
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente Bindplane

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Configure o registo alargado W3C do IIS

Abra o Gestor do IIS

  1. Clique em Iniciar.
  2. Escreva inetmgr e prima Enter.
  3. É aberta a janela Internet Information Services (IIS) Manager.

Método alternativo:

  1. Prima tecla Windows + R.
  2. Escreva inetmgr e prima Enter.
  1. No painel Ligações, expanda o nome do servidor.
  2. Para configurar o registo ao nível do servidor (recomendado):
    • Clique no nome do servidor ao nível da raiz.
  3. Para configurar o registo específico do site:
    • Expanda Sites e, de seguida, clique no site específico (por exemplo, Default Web Site).
  4. Na vista de funcionalidades, clique duas vezes em Registo.

Selecione o formato de registo alargado do W3C

  1. Na página Registo, na secção Ficheiro de registo:
    • No menu pendente Formato, selecione W3C.
  2. Clique no botão Selecionar campos.

Configure campos de registo W3C

Na caixa de diálogo Campos de registo W3C, selecione os campos de acordo com um dos seguintes padrões:

Use este padrão quando precisar do contexto completo do pedido, incluindo o referenciador e as strings de consulta para análise de segurança, e alojar vários sites num servidor.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Consulta URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de utilizador (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. Agente do utilizador (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado do protocolo (sc-status)
  14. Bytes enviados (sc-bytes)
  15. Bytes recebidos (cs-bytes)

Padrão 2: básico com subestado e desempenho

Use este padrão quando precisar de códigos de erro detalhados (substatus, Win32 status) e pedir a hora para resolução de problemas.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Porta do servidor (s-port)
  7. Nome de utilizador (cs-username)
  8. Endereço IP do cliente (c-ip)
  9. Agente do utilizador (cs(User-Agent))
  10. Referer (cs(Referer))
  11. Estado do protocolo (sc-status)
  12. Subestado do protocolo (sc-substatus)
  13. Estado do Win32 (sc-win32-status)
  14. Tempo gasto (time-taken)

Use este padrão quando precisar de registos abrangentes com identificação do site, erros detalhados, métricas de largura de banda e dados de desempenho.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Consulta URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de utilizador (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. Agente do utilizador (cs(User-Agent))
  12. Estado do protocolo (sc-status)
  13. Subestado do protocolo (sc-substatus)
  14. Estado do Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recebidos (cs-bytes)
  17. Tempo gasto (time-taken)

Padrão 4: vários sites com contexto completo

Este padrão é funcionalmente idêntico ao padrão 3.

Use este padrão se tiver vários sites e precisar de observabilidade total.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Consulta URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de utilizador (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. Agente do utilizador (cs(User-Agent))
  12. Estado do protocolo (sc-status)
  13. Subestado do protocolo (sc-substatus)
  14. Estado do Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recebidos (cs-bytes)
  17. Tempo gasto (time-taken)

Padrão 5: contexto do site com métricas completas (alternativo)

Este padrão é funcionalmente idêntico aos padrões 3 e 4.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. URI Stem (cs-uri-stem)
  7. Consulta URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de utilizador (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. Agente do utilizador (cs(User-Agent))
  12. Estado do protocolo (sc-status)
  13. Subestado do protocolo (sc-substatus)
  14. Estado do Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recebidos (cs-bytes)
  17. Tempo gasto (time-taken)

Padrão 6: TLS-aware com substatus e desempenho

Use este padrão quando precisar de acompanhar as versões do protocolo HTTP/HTTPS (HTTP/1.1, HTTP/2, HTTP/3) para análise de segurança ou resolução de problemas de TLS.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Consulta URI (cs-uri-query)
  7. Porta do servidor (s-port)
  8. Nome de utilizador (cs-username)
  9. Endereço IP do cliente (c-ip)
  10. Versão do protocolo (cs-version)
  11. Agente do utilizador (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado do protocolo (sc-status)
  14. Subestado do protocolo (sc-substatus)
  15. Estado do Win32 (sc-win32-status)
  16. Tempo gasto (time-taken)

Padrão 7: reconhecimento de TLS sem métricas de desempenho

Use este padrão quando: igual ao padrão 6, mas não precisa de métricas de tempo gasto.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Consulta URI (cs-uri-query)
  7. Porta do servidor (s-port)
  8. Nome de utilizador (cs-username)
  9. Endereço IP do cliente (c-ip)
  10. Versão do protocolo (cs-version)
  11. Agente do utilizador (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Estado do protocolo (sc-status)
  14. Subestado do protocolo (sc-substatus)
  15. Estado do Win32 (sc-win32-status)

Padrão 8: minimalista com desempenho

Use este padrão quando precisar de registo mínimo com métricas de desempenho, mas não se importar com strings de consulta, referenciadores ou versões de protocolo.

Ative estes campos nesta ordem exata:

  1. Data (data)
  2. Hora (hora)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. URI Stem (cs-uri-stem)
  6. Porta do servidor (s-port)
  7. Nome de utilizador (cs-username)
  8. Endereço IP do cliente (c-ip)
  9. Agente do utilizador (cs(User-Agent))
  10. Estado do protocolo (sc-status)
  11. Subestado do protocolo (sc-substatus)
  12. Estado do Win32 (sc-win32-status)
  13. Tempo gasto (time-taken)

Orientações para a seleção de padrões

Para a maioria das implementações, use o padrão 1 ou o padrão 3.

  • Padrão 1: ideal para implementações focadas na segurança com vários sites (inclui o referenciador, a string de consulta e o nome do site).
  • Padrão 3: ideal para ambientes de produção que precisam de métricas abrangentes (inclui substatus, erros Win32, largura de banda, tempo e nome do site).
  • Padrão 6/7: use se precisar de acompanhar as versões do protocolo HTTP (adoção do HTTP/2, resolução de problemas de TLS).
  • Padrão 2/8: use para registo mínimo com detalhes de erros.

Aplicar configuração

  1. Clique em OK para fechar a caixa de diálogo Campos de registo W3C.
  2. Valide o caminho da diretoria onde os registos vão ser escritos.
    • Predefinição: %SystemDrive%\inetpub\logs\LogFiles
  3. Em Substituição de ficheiros de registo, selecione Diariamente (recomendado para o carregamento do Google SecOps).
  4. Clique em Aplicar no painel Ações.

Valide o registo do IIS

  1. Gere tráfego de teste para o seu site do IIS abrindo uma página Web num navegador.
  2. Navegue para o diretório de registos: C:\inetpub\logs\LogFiles\W3SVC1\
  3. Abra o ficheiro de registo mais recente (por exemplo, u_ex251020.log) no Bloco de notas.
  4. Verifique se a linha #Fields: contém todos os campos que ativou.

    • Exemplo de linha #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
      
    • Exemplo de entrada de registo:

      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
      

Instale o agente do Bindplane

Instale o agente do Bindplane no seu servidor Windows de acordo com as seguintes instruções.

Instalação de janelas

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

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

Recursos de instalação adicionais

Configure o agente Bindplane para carregar registos do IIS e enviá-los para o Google SecOps

Pare o serviço Bindplane

  • Antes de editar o ficheiro de configuração, pare o serviço:

    Stop-Service "observIQ OpenTelemetry Collector"
    

Edite o ficheiro de configuração

  1. Localize o ficheiro config.yaml.
    • Caminho predefinido: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. Abra o ficheiro com um editor de texto (por exemplo, o Bloco de notas, o VS Code ou o Notepad++) como administrador.
  3. Substitua todo o conteúdo pela seguinte configuração:

    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
    
    • Substitua os seguintes marcadores de posição:
      • creds: - Caminho para o ficheiro de autenticação do carregamento (por exemplo, C:\SecOps\ingestion-auth.json).
      • customer_id: – O seu ID de cliente do Google SecOps real da secção Obtenha o ID de cliente do Google SecOps.

Reinicie o agente do Bindplane para aplicar as alterações

  • Depois de guardar o ficheiro config.yaml, reinicie o serviço Bindplane:

    Start-Service "observIQ OpenTelemetry Collector"
    
  • Verifique se o serviço está em execução:

    Get-Service "observIQ OpenTelemetry Collector"
    
  • Resultado esperado:

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

Tabela de mapeamento da UDM

Campo de registo Mapeamento do UDM Lógica
@timestamp metadata.event_timestamp A data/hora do evento, conforme registado no registo não processado.
@version metadata.product_version A versão do servidor IIS.
AgentDevice additional.fields.AgentDevice.value.string_value O dispositivo que gerou o registo.
AgentLogFile additional.fields.AgentLogFile.value.string_value O nome do ficheiro de registo.
ASP.NET_SessionId network.session_id O ID da sessão do utilizador.
c-ip principal.ip O endereço IP do cliente.
Canal security_result.about.resource.attribute.labels.Channel.value O canal onde o evento foi registado.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value O ID do canal onde o evento foi registado.
Computador target.hostname O nome do anfitrião da máquina de destino.
cs-bytes network.received_bytes O número de bytes recebidos do cliente.
cs-host principal.hostname, principal.asset.hostname O nome do anfitrião do cliente.
cs-method network.http.method O método HTTP usado pelo cliente.
cs-uri-query target.url A string de consulta do URL pedido pelo cliente.
cs-uri-stem target.url O caminho do URL pedido pelo cliente.
cs-username principal.user.user_display_name O nome de utilizador do cliente.
cs-version network.tls.version_protocol A versão HTTP usada pelo cliente.
cs(Cookie) Usado para extrair informações de cookies.
cs(Referer) network.http.referral_url O URL que referenciou o cliente para a página atual.
cs(User-Agent) network.http.user_agent O agente do utilizador do cliente.
csbyte network.received_bytes O número de bytes recebidos do cliente.
cshost principal.hostname, principal.asset.hostname O nome do anfitrião do cliente.
csip principal.ip, principal.asset.ip O endereço IP do cliente.
csmethod network.http.method O método HTTP usado pelo cliente.
csreferer network.http.referral_url O URL que referenciou o cliente para a página atual.
csuseragent network.http.user_agent O agente do utilizador do cliente.
csusername principal.user.user_display_name O nome de utilizador do cliente.
csversion network.tls.version_protocol A versão HTTP usada pelo cliente.
data Usado para criar a data/hora do evento se a data/hora do registo não processado for inválida.
descrição security_result.description Uma descrição do evento.
devicename target.hostname O nome do anfitrião da máquina de destino.
dst_ip target.ip, target.asset.ip O endereço IP da máquina de destino.
dst_port target.port O número da porta da máquina de destino.
duração A duração do pedido em milissegundos.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value A hora em que o evento foi colocado na fila em UTC.
EventID metadata.product_log_id O ID do evento.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value A hora em que o evento foi processado em UTC.
EventTime metadata.event_timestamp A data/hora do evento.
EventType metadata.product_event_type O tipo de evento.
file_path target.file.full_path O caminho completo do ficheiro envolvido no evento.
FilterId security_result.about.resource.attribute.labels.FilterId.value O ID do filtro.
FilterKey security_result.about.resource.attribute.labels.FilterKey.value A chave do filtro.
FilterName security_result.about.resource.attribute.labels.FilterName.value O nome do filtro.
FilterType security_result.about.resource.attribute.labels.FilterType.value O tipo de filtro.
anfitrião target.hostname O nome do anfitrião da máquina de destino.
host.architecture principal.asset.hardware.cpu_platform A arquitetura da máquina anfitriã.
host.geo.name additional.fields.geo_name.value.string_value A localização geográfica da máquina anfitriã.
host.hostname target.hostname, target.asset.hostname O nome do anfitrião da máquina anfitriã.
host.id observer.asset_id O ID da máquina anfitriã.
host.ip principal.ip, principal.asset.ip O endereço IP da máquina anfitriã.
host.mac principal.mac O endereço MAC da máquina anfitriã.
host.os.build additional.fields.os_build.value.string_value O número de compilação do sistema operativo na máquina anfitriã.
host.os.kernel principal.platform_patch_level A versão do kernel do sistema operativo na máquina anfitriã.
host.os.name additional.fields.os_name.value.string_value O nome do sistema operativo na máquina anfitriã.
host.os.platform principal.platform A plataforma do sistema operativo na máquina anfitriã.
host.os.version principal.platform_version A versão do sistema operativo na máquina anfitriã.
http_method network.http.method O método HTTP usado pelo cliente.
http_response network.http.response_code O código de resposta HTTP.
http_status_code network.http.response_code O código de estado HTTP da resposta.
http_substatus additional.fields.sc_substatus.value.string_value O código de subestado HTTP da resposta.
instância additional.fields.instance.value.string_value O ID da instância da tarefa.
intermediary_devicename intermediary.hostname, intermediary.asset.hostname O nome do anfitrião do dispositivo intermediário.
json_message A mensagem de registo não processada no formato JSON.
kv_fields Usado para extrair pares de chave-valor da mensagem de registo não processada.
LayerKey security_result.about.resource.attribute.labels.LayerKey.value A chave da camada.
LayerName security_result.about.resource.attribute.labels.LayerName.value O nome da camada.
LayerId security_result.about.resource.attribute.labels.LayerId.value O ID da camada.
log.file.path target.file.full_path O caminho completo do ficheiro de registo.
log.offset metadata.product_log_id O desvio do evento no ficheiro de registo.
logstash.collect.host observer.hostname O nome do anfitrião do computador que recolheu o registo.
logstash.process.host intermediary.hostname O nome do anfitrião da máquina que processou o registo.
logstash_json_message A mensagem de registo não processada no formato JSON.
mensagem security_result.description A mensagem de registo não processada.
ministério additional.fields.ministry.value.string_value O ministério associado ao evento.
nome O nome da entidade.
NewValue additional.fields.NewValue.value.string_value O novo valor da definição de configuração.
OldValue additional.fields.OldValue.value.string_value O valor antigo da definição de configuração.
porta principal.port O número da porta do cliente.
priority_code O código de prioridade da mensagem syslog.
ProcessID principal.process.pid O ID do processo que gerou o evento.
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value O GUID do fornecedor.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value A chave do fornecedor.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value O nome do fornecedor.
referrer_url network.http.referral_url O URL que referenciou o cliente para a página atual.
request_url target.url O URL pedido pelo cliente.
s-computername target.hostname O nome do anfitrião da máquina de destino.
s-ip target.ip, target.asset.ip O endereço IP da máquina de destino.
s-port target.port O número da porta da máquina de destino.
s-sitename additional.fields.sitename.value.string_value O nome do site.
sc-bytes network.sent_bytes O número de bytes enviados para o cliente.
sc-status network.http.response_code O código de estado HTTP da resposta.
sc-substatus additional.fields.sc_substatus.value.string_value O código de subestado HTTP da resposta.
sc-win32-status O código de estado do Windows da resposta.
scbyte network.sent_bytes O número de bytes enviados para o cliente.
scstatus network.http.response_code O código de estado HTTP da resposta.
gravidade security_result.severity A gravidade do evento.
service.type additional.fields.service_type.value.string_value O tipo de serviço.
sIP principal.ip, principal.asset.ip O endereço IP do cliente.
sPort principal.port O número da porta do cliente.
sSiteName additional.fields.sitename.value.string_value O nome do site.
src_ip principal.ip, principal.asset.ip, observer.ip O endereço IP do cliente.
src_port principal.port O número da porta do cliente.
sysdate A data e a hora da mensagem syslog.
syslog_facility security_result.severity_details A facilidade da mensagem syslog.
syslog_pri A prioridade da mensagem syslog.
syslog_severity security_result.severity_details A gravidade da mensagem syslog.
syslog_severity_code O código de gravidade da mensagem syslog.
etiquetas security_result.rule_name Etiquetas associadas ao evento.
tarefa additional.fields.task.value.string_value O nome da tarefa.
tempo Usado para criar a data/hora do evento se a data/hora do registo não processado for inválida.
tempo gasto A duração do pedido em milissegundos.
uri_query target.url A string de consulta do URL pedido pelo cliente.
user_agent network.http.user_agent O agente do utilizador do cliente.
Nome de utilizador target.user.userid O nome de utilizador do utilizador.
UserSid target.user.windows_sid O SID do Windows do utilizador.
Peso security_result.about.resource.attribute.labels.Weight.value O peso do filtro.
win32_status O código de estado do Windows da resposta.
xforwardedfor O cabeçalho X-Forwarded-For, que contém uma lista de endereços IP separados por vírgulas.
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"

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.