Coletar registros do Microsoft IIS

Compatível com:

Neste guia, explicamos como ingerir registros dos Serviços de Informações da Internet (IIS) da Microsoft no Google Security Operations usando o Bindplane.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Um Windows Server 2016 ou mais recente com o IIS instalado
  • Acesso administrativo ao servidor IIS
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Configurar o registro estendido W3C do IIS

Abra o Gerenciador do IIS

  1. Clique em Iniciar.
  2. Digite inetmgr e pressione Enter.
  3. A janela Gerenciador dos Serviços de Informações da Internet (IIS) é aberta.

Método alternativo:

  1. Pressione tecla Windows + R.
  2. Digite inetmgr e pressione Enter.
  1. No painel Conexões, expanda o nome do servidor.
  2. Para configurar o registro em log em todo o servidor (recomendado):
    • Clique no nome do servidor no nível raiz.
  3. Para configurar o registro específico do site:
    • Expanda Sites e clique no site específico (por exemplo, Site padrão).
  4. Na Visualização de recursos, clique duas vezes em Logging.

Selecionar o formato de registro estendido W3C

  1. Na página Logging, na seção Arquivo de registro:
    • No menu suspenso Formato, selecione W3C.
  2. Clique no botão Selecionar campos.

Configurar campos de geração de registros W3C

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

Use esse padrão quando precisar do contexto completo da solicitação, incluindo referenciador e strings de consulta para análise de segurança, e hospedar vários sites em um servidor.

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. Radical do URI (cs-uri-stem)
  7. Consulta de URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de usuário (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Status do protocolo (sc-status)
  14. Bytes enviados (sc-bytes)
  15. Bytes recebidos (cs-bytes)

Padrão 2: básico com substatus e performance

Use esse padrão quando precisar de códigos de erro detalhados (substatus, status do Win32) e de tempo de solicitação para solução de problemas.

Ative estes campos na ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. Radical do URI (cs-uri-stem)
  6. Porta do servidor (s-port)
  7. Nome de usuário (cs-username)
  8. Endereço IP do cliente (c-ip)
  9. User agent (cs(User-Agent))
  10. Referer (cs(Referer))
  11. Status do protocolo (sc-status)
  12. Substatus do protocolo (sc-substatus)
  13. Status do Win32 (sc-win32-status)
  14. Tempo gasto (time-taken)

Use esse padrão quando precisar de um registro abrangente com identificação do site, erros detalhados, métricas de largura de banda e dados de desempenho.

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. Radical do URI (cs-uri-stem)
  7. Consulta de URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de usuário (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. User agent (cs(User-Agent))
  12. Status do protocolo (sc-status)
  13. Substatus do protocolo (sc-substatus)
  14. Status 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

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

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

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. Radical do URI (cs-uri-stem)
  7. Consulta de URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de usuário (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. User agent (cs(User-Agent))
  12. Status do protocolo (sc-status)
  13. Substatus do protocolo (sc-substatus)
  14. Status 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)

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

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Nome do serviço (s-sitename)
  4. Endereço IP do servidor (s-ip)
  5. Método (cs-method)
  6. Radical do URI (cs-uri-stem)
  7. Consulta de URI (cs-uri-query)
  8. Porta do servidor (s-port)
  9. Nome de usuário (cs-username)
  10. Endereço IP do cliente (c-ip)
  11. User agent (cs(User-Agent))
  12. Status do protocolo (sc-status)
  13. Substatus do protocolo (sc-substatus)
  14. Status do Win32 (sc-win32-status)
  15. Bytes enviados (sc-bytes)
  16. Bytes recebidos (cs-bytes)
  17. Tempo gasto (time-taken)

Padrão 6: compatível com TLS com substatus e desempenho

Use esse padrão quando precisar rastrear versões de protocolo HTTP/HTTPS (HTTP/1.1, HTTP/2, HTTP/3) para análise de segurança ou solução de problemas de TLS.

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. Radical do URI (cs-uri-stem)
  6. Consulta de URI (cs-uri-query)
  7. Porta do servidor (s-port)
  8. Nome de usuário (cs-username)
  9. Endereço IP do cliente (c-ip)
  10. Versão do protocolo (cs-version)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Status do protocolo (sc-status)
  14. Substatus do protocolo (sc-substatus)
  15. Status do Win32 (sc-win32-status)
  16. Tempo gasto (time-taken)

Padrão 7: compatível com TLS sem métricas de performance

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

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. Radical do URI (cs-uri-stem)
  6. Consulta de URI (cs-uri-query)
  7. Porta do servidor (s-port)
  8. Nome de usuário (cs-username)
  9. Endereço IP do cliente (c-ip)
  10. Versão do protocolo (cs-version)
  11. User agent (cs(User-Agent))
  12. Referer (cs(Referer))
  13. Status do protocolo (sc-status)
  14. Substatus do protocolo (sc-substatus)
  15. Status do Win32 (sc-win32-status)

Padrão 8: mínimo com desempenho

Use esse padrão quando precisar de um registro mínimo com métricas de performance, mas não se importar com strings de consulta, referenciadores ou versões de protocolo.

Ative estes campos nesta ordem exata:

  1. Date (data)
  2. Tempo (tempo)
  3. Endereço IP do servidor (s-ip)
  4. Método (cs-method)
  5. Radical do URI (cs-uri-stem)
  6. Porta do servidor (s-port)
  7. Nome de usuário (cs-username)
  8. Endereço IP do cliente (c-ip)
  9. User agent (cs(User-Agent))
  10. Status do protocolo (sc-status)
  11. Substatus do protocolo (sc-substatus)
  12. Status do Win32 (sc-win32-status)
  13. Tempo gasto (time-taken)

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

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

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

Aplicar configuração

  1. Clique em OK para fechar a caixa de diálogo Campos de registro do W3C.
  2. Verifique o caminho do Diretório em que os registros serão gravados.
    • Padrão: %SystemDrive%\inetpub\logs\LogFiles
  3. Em Substituição de arquivo de registro, selecione Diária (recomendado para ingestão do Google SecOps).
  4. Clique em Aplicar no painel Ações.

Verificar o registro do IIS

  1. Gere tráfego de teste para seu site do IIS abrindo uma página da Web em um navegador.
  2. Navegue até o diretório de registros: C:\inetpub\logs\LogFiles\W3SVC1\
  3. Abra o arquivo de registro mais recente (por exemplo, u_ex251020.log) no Bloco de Notas.
  4. Verifique se a linha #Fields: contém todos os campos que você 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 registro:

      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
      

Instalar o agente do BindPlane

Instale o agente do BindPlane no servidor Windows de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o prompt de comando ou o PowerShell como administrador.
  2. Execute este comando:

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

Outros recursos de instalação

Configurar o agente do Bindplane para ingerir registros do IIS e enviar ao Google SecOps

Interromper o serviço do Bindplane

  • Antes de editar o arquivo de configuração, interrompa o serviço:

    Stop-Service "observIQ OpenTelemetry Collector"
    

Editar o arquivo de configuração

  1. Localize o arquivo config.yaml.
    • Caminho padrão: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. Abra o arquivo usando um editor de texto (por exemplo, Bloco de Notas, VS Code ou 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 arquivo de autenticação de ingestão (por exemplo, C:\SecOps\ingestion-auth.json).
      • customer_id:: seu ID de cliente do Google SecOps na seção Receber ID de cliente do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Depois de salvar o arquivo 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"
    
  • Saída esperada:

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

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
@timestamp metadata.event_timestamp O carimbo de data/hora do evento conforme registrado no log bruto.
@version metadata.product_version A versão do servidor IIS.
AgentDevice additional.fields.AgentDevice.value.string_value O dispositivo que gerou o registro.
AgentLogFile additional.fields.AgentLogFile.value.string_value O nome do arquivo de registro.
ASP.NET_SessionId network.session_id O ID da sessão do usuário.
c-ip principal.ip O endereço IP do cliente.
Canal security_result.about.resource.attribute.labels.Channel.value O canal em que o evento foi registrado.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value O ID do canal em que o evento foi registrado.
Computador target.hostname O nome do host 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 host 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 solicitado pelo cliente.
cs-uri-stem target.url O caminho do URL solicitado pelo cliente.
cs-username principal.user.user_display_name O nome de usuário 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 encaminhou o cliente para a página atual.
cs(User-Agent) network.http.user_agent O user agent do cliente.
csbyte network.received_bytes O número de bytes recebidos do cliente.
cshost principal.hostname, principal.asset.hostname O nome do host 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 encaminhou o cliente para a página atual.
csuseragent network.http.user_agent O user agent do cliente.
csusername principal.user.user_display_name O nome de usuário do cliente.
csversion network.tls.version_protocol A versão HTTP usada pelo cliente.
data Usado para construir o carimbo de data/hora do evento se o carimbo de data/hora do registro bruto for inválido.
descrição security_result.description Uma descrição do evento.
devicename target.hostname O nome do host 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.
duration A duração da solicitação em milissegundos.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value O horário em que o evento foi enfileirado em UTC.
EventID metadata.product_log_id O ID do evento.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value O horário em que o evento foi processado em UTC.
EventTime metadata.event_timestamp O carimbo de data/hora do evento.
EventType metadata.product_event_type O tipo do evento.
file_path target.file.full_path O caminho completo do arquivo 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 do filtro.
host target.hostname O nome do host da máquina de destino.
host.architecture principal.asset.hardware.cpu_platform A arquitetura da máquina host.
host.geo.name additional.fields.geo_name.value.string_value A localização geográfica da máquina host.
host.hostname target.hostname, target.asset.hostname O nome do host da máquina host.
host.id observer.asset_id O ID da máquina host.
host.ip principal.ip, principal.asset.ip O endereço IP da máquina host.
host.mac principal.mac O endereço MAC da máquina host.
host.os.build additional.fields.os_build.value.string_value O número da versão do sistema operacional na máquina host.
host.os.kernel principal.platform_patch_level A versão do kernel do sistema operacional na máquina host.
host.os.name additional.fields.os_name.value.string_value O nome do sistema operacional na máquina host.
host.os.platform principal.platform A plataforma do sistema operacional na máquina host.
host.os.version principal.platform_version A versão do sistema operacional na máquina host.
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 status HTTP da resposta.
http_substatus additional.fields.sc_substatus.value.string_value O código de substatus 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 host do dispositivo intermediário.
json_message A mensagem de registro bruta no formato JSON.
kv_fields Usado para extrair pares de chave-valor da mensagem de registro bruta.
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 arquivo de registro.
log.offset metadata.product_log_id O deslocamento do evento no arquivo de registro.
logstash.collect.host observer.hostname O nome do host da máquina que coletou o registro.
logstash.process.host intermediary.hostname O nome do host da máquina que processou o registro.
logstash_json_message A mensagem de registro bruta no formato JSON.
mensagem security_result.description A mensagem de registro bruta.
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 configuração.
OldValue additional.fields.OldValue.value.string_value O valor antigo da 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 provedor.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value A chave do provedor.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value O nome do provedor.
referrer_url network.http.referral_url O URL que encaminhou o cliente para a página atual.
request_url target.url O URL solicitado pelo cliente.
s-computername target.hostname O nome do host 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 ao cliente.
sc-status network.http.response_code O código de status HTTP da resposta.
sc-substatus additional.fields.sc_substatus.value.string_value O código de substatus HTTP da resposta.
sc-win32-status O código de status do Windows da resposta.
scbyte network.sent_bytes O número de bytes enviados ao cliente.
scstatus network.http.response_code O código de status 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 do 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 do syslog.
syslog_severity_code O código de gravidade da mensagem syslog.
tags security_result.rule_name Tags associadas ao evento.
tarefa additional.fields.task.value.string_value O nome da tarefa.
tempo Usado para construir o carimbo de data/hora do evento se o carimbo de data/hora do registro bruto for inválido.
time-taken A duração da solicitação em milissegundos.
uri_query target.url A string de consulta do URL solicitado pelo cliente.
user_agent network.http.user_agent O user agent do cliente.
Nome de usuário target.user.userid O nome de usuário.
UserSid target.user.windows_sid O SID do Windows do usuário.
Peso security_result.about.resource.attribute.labels.Weight.value O peso do filtro.
win32_status O código de status 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 do Google SecOps.