Recolha registos do Microsoft IIS

Suportado em:

Este documento explica como carregar registos dos Microsoft Internet Information Services (IIS) 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 executar o agente 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 (por exemplo, C:\SecOps\ingestion-auth.json).

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

Tem de ativar os campos W3C corretos no IIS Manager para que o Google SecOps possa analisar os seus registos corretamente e as deteções funcionem de forma fiável.

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

Selecione o formato de registo alargado 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

IMPORTANTE: o analisador IIS do Google SecOps suporta 8 configurações de campos. Tem de ativar TODOS os campos de UM dos seguintes padrões. A ativação de campos diferentes ou a mistura de padrões provoca falhas de análise.

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

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

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Nome do serviço (s-sitename)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Bytes enviados (sc-bytes)
  • Bytes recebidos (cs-bytes)

Use este padrão quando: o seu formato a jusante inclui o contexto do site + a string de consulta e precisa de bytes enviados/recebidos, e a sua conduta espera as colunas "username" e "referer" (mesmo que os valores sejam -).

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

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

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

Padrão 3: básico com subestado, estado do Win32 e desempenho (com referenciador)

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do servidor (s-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

Use este padrão quando: igual ao padrão 2, mas a sua conduta inclui o Referer como uma coluna dedicada.

Padrão 4: TLS/Protocol-Version Aware com Referrer e desempenho

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Versão do protocolo (cs-version)
  • Agente do utilizador (cs(User-Agent))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)
  • Tempo gasto (time-taken)

Use este padrão quando: o formato a jusante regista explicitamente cs-version (por exemplo, HTTP/1.1) e inclui a data/hora, e também tem a porta do cliente como uma coluna dedicada.

Padrão 5: TLS/Protocol-Version Aware com Referrer (sem desempenho)

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Versão do protocolo (cs-version)
  • Agente do utilizador (cs(User-Agent))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)

Use este padrão quando: igual ao padrão 4, mas a sua conduta não inclui time-taken.

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Cookie (cs(Cookie))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)

Use este padrão quando: o formato a jusante espera que o cookie e o referenciador sejam colunas dedicadas.

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Referer (cs(Referer))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)

Use este padrão quando: o formato a jusante inclui o Referer, mas não inclui o Cookie/hora/bytes.

Ative estes campos nesta ordem exata:

  • Data (data)
  • Hora (hora)
  • Endereço IP do servidor (s-ip)
  • Método (cs-method)
  • URI Stem (cs-uri-stem)
  • Consulta URI (cs-uri-query)
  • Porta do cliente (c-port)
  • Nome de utilizador (cs-username)
  • Endereço IP do cliente (c-ip)
  • Agente do utilizador (cs(User-Agent))
  • Estado do protocolo (sc-status)
  • Subestado do protocolo (sc-substatus)
  • Estado do Win32 (sc-win32-status)

Use este padrão quando: o seu formato a jusante não inclui o Referer e só precisa do contexto do pedido principal, além dos códigos de estado.

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

Aplicar configuração

  1. Clique em OK para fechar a caixa de diálogo Campos de registo W3C.
  2. Verifique 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 (lado direito).

Valide o registo do IIS

Depois de configurar os campos W3C, verifique se o IIS está a escrever registos corretamente:

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

Exemplo para o padrão 3

Se configurou o Padrão 3 (básico com subestado, estado do Win32 e desempenho com referenciador), a linha #Fields: deve 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 registo:

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

Notas importantes:

  • Os campos vazios são representados por um hífen (-)
  • A ordem dos campos tem de corresponder exatamente ao cabeçalho #Fields:
  • A análise falha se os campos estiverem em falta, forem reordenados ou forem provenientes de vários padrões

Instale o agente do Bindplane

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

Instalação do Windows

  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

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, 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
    

Atualize os valores de configuração

Substitua os seguintes marcadores de posição:

  • creds: - Caminho para o ficheiro de autenticação do carregamento (por exemplo, C:\SecOps\ingestion-auth.json).
  • endpoint:: o seu ponto final regional.
  • 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

Para reiniciar o agente do Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

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