Coletar registros do Microsoft IIS

Compatível com:

Este documento explica 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 com segurança no sistema em que o Bindplane será instalado (por exemplo, C:\SecOps\ingestion-auth.json).

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

Você precisa ativar os campos W3C corretos no Gerenciador do IIS para que o Google SecOps possa analisar seus registros corretamente e as detecções funcionem de maneira confiável.

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 (lado esquerdo), 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 (painel central), clique duas vezes em Logging.

Selecione o formato de registro estendido do 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

IMPORTANTE:o analisador do IIS do Google SecOps é compatível com 8 configurações de campo. Você precisa ativar TODOS os campos de UM dos seguintes padrões. Ativar campos diferentes ou misturar padrões causa falhas de análise.

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

Padrão 1: contexto completo do site com string de consulta e bytes

Ative estes campos nesta ordem exata:

  • Date (data)
  • Hora (tempo)
  • Nome do serviço (s-sitename)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Bytes enviados (sc-bytes)
  • Bytes recebidos (cs-bytes)

Use esse padrão quando:o formato downstream incluir contexto do site + string de consulta e você precisar de bytes enviados/recebidos, e o pipeline esperar as colunas "username" e "referer" (mesmo que os valores sejam -).

Padrão 2: básico com substatus, status do Win32 e desempenho (sem referenciador)

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

Use este padrão quando:seu pipeline não inclui o referenciador, mas você precisa de códigos de erro e latência detalhados (time-taken).

Padrão 3: básico com substatus, status do Win32 e performance (com referenciador)

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

Use esse padrão quando:igual ao padrão 2, mas seu pipeline inclui o referenciador como uma coluna dedicada.

Padrão 4: TLS/versão do protocolo com referenciador e desempenho

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • Versão do protocolo (cs-version)
  • User agent (cs(User-Agent))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

Use esse padrão quando:seu formato downstream registrar explicitamente cs-version (por exemplo, HTTP/1.1) e inclui o tempo, e você também tem a porta do cliente como uma coluna dedicada.

Padrão 5: TLS/versão do protocolo com reconhecimento de referenciador (sem desempenho)

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • Versão do protocolo (cs-version)
  • User agent (cs(User-Agent))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)

Use esse padrão quando:igual ao padrão 4, mas o pipeline não inclui time-taken.

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Cookie (cs(Cookie))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)

Use esse padrão quando:o formato downstream espera Cookie e Referer como colunas dedicadas.

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Referer (cs(Referer))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)

Use esse padrão quando:seu formato downstream inclui "Referer", mas não inclui "Cookie/time/bytes".

Ative estes campos nesta ordem exata:

  • Date (data)
  • Tempo (tempo)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • Radical do URI (cs-uri-stem)
  • Consulta de URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de usuário (cs-username)
  • Endereço IP do cliente (c-ip)
  • User agent (cs(User-Agent))
  • Status do protocolo (sc-status)
  • Substatus do protocolo (sc-substatus)
  • Status do Win32 (sc-win32-status)

Use esse padrão quando:seu formato downstream não incluir o referenciador e você precisar apenas do contexto principal da solicitação mais códigos de status.

NÃO ative campos de vários padrões. O analisador espera uma dessas configurações exatas.

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 (lado direito).

Verificar o registro do IIS

Depois de configurar os campos do W3C, verifique se o IIS está gravando os registros corretamente:

  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\
    • Observação: W3SVC1 corresponde ao primeiro site (site da Web padrão). Para outros sites, o nome da pasta será W3SVC2, W3SVC3 etc.
  3. Abra o arquivo de registro mais recente (por exemplo, u_ex251217.log) no Bloco de Notas.
  4. Verifique se a linha #Fields: contém todos os campos que você ativou na ordem exata do padrão escolhido.

Exemplo para o padrão 3

Se você configurou o Padrão 3 (Básico com substatus, status do Win32 e performance com referenciador), a linha #Fields: será:

#Fields: date time 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 time-taken

Exemplo de entrada de registro:

2025-12-17 14:23:15 192.168.1.10 GET /index.html - 80 - 203.0.113.45 Mozilla/5.0+(Windows+NT+10.0) https://example.com/previous.html 200 0 0 125

Observações importantes:

  • Campos vazios são representados por um hífen (-).
  • A ordem dos campos precisa corresponder exatamente ao cabeçalho #Fields:.
  • O analisador vai falhar se os campos estiverem ausentes, reordenados ou forem de vários padrões.

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 enviá-los ao Google SecOps

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
    

Atualizar valores de configuração

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).
  • endpoint:: seu endpoint regional.
  • 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

Para reiniciar o agente do Bindplane em Windows, use o console Serviços ou insira o seguinte comando:

net stop observiq-otel-collector && net start observiq-otel-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 build 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.