Recolha registos do Microsoft IIS
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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- 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
- Clique em Iniciar.
- Escreva
inetmgre prima Enter. - É aberta a janela Internet Information Services (IIS) Manager.
Método alternativo:
- Prima tecla Windows + R.
- Escreva
inetmgre prima Enter.
Navegue para a configuração de registo
- No painel Ligações, expanda o nome do servidor.
- Para configurar o registo ao nível do servidor (recomendado):
- Clique no nome do servidor ao nível da raiz.
- Para configurar o registo específico do site:
- Expanda Sites e, de seguida, clique no site específico (por exemplo, Default Web Site).
- Na vista de funcionalidades, clique duas vezes em Registo.
Selecione o formato de registo alargado do W3C
- Na página Registo, na secção Ficheiro de registo:
- No menu pendente Formato, selecione W3C.
- 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:
Padrão 1: contexto do site completo com string de consulta (recomendado para a maioria das implementaçõ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:
- 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)
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:
- Data (data)
- Hora (hora)
- Endereço IP do servidor (s-ip)
- Método (cs-method)
- URI Stem (cs-uri-stem)
- 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)
Padrão 3: contexto do site com métricas completas (recomendado para produção)
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:
- 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))
- Estado do protocolo (sc-status)
- Subestado do protocolo (sc-substatus)
- Estado do Win32 (sc-win32-status)
- Bytes enviados (sc-bytes)
- Bytes recebidos (cs-bytes)
- 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:
- 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))
- Estado do protocolo (sc-status)
- Subestado do protocolo (sc-substatus)
- Estado do Win32 (sc-win32-status)
- Bytes enviados (sc-bytes)
- Bytes recebidos (cs-bytes)
- 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:
- 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))
- Estado do protocolo (sc-status)
- Subestado do protocolo (sc-substatus)
- Estado do Win32 (sc-win32-status)
- Bytes enviados (sc-bytes)
- Bytes recebidos (cs-bytes)
- 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:
- 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)
- 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)
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:
- 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)
- 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)
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:
- Data (data)
- Hora (hora)
- Endereço IP do servidor (s-ip)
- Método (cs-method)
- URI Stem (cs-uri-stem)
- 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)
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
- Clique em OK para fechar a caixa de diálogo Campos de registo W3C.
- Valide o caminho da diretoria onde os registos vão ser escritos.
- Predefinição:
%SystemDrive%\inetpub\logs\LogFiles
- Predefinição:
- Em Substituição de ficheiros de registo, selecione Diariamente (recomendado para o carregamento do Google SecOps).
- Clique em Aplicar no painel Ações.
Valide o registo do IIS
- Gere tráfego de teste para o seu site do IIS abrindo uma página Web num navegador.
- Navegue para o diretório de registos:
C:\inetpub\logs\LogFiles\W3SVC1\ - Abra o ficheiro de registo mais recente (por exemplo,
u_ex251020.log) no Bloco de notas. 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-takenExemplo 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
- Abra a Linha de comandos ou o PowerShell como administrador.
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
- Para ver opções de instalação adicionais, consulte este guia de instalação.
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
- Localize o ficheiro
config.yaml.- Caminho predefinido:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
- Caminho predefinido:
- Abra o ficheiro com um editor de texto (por exemplo, o Bloco de notas, o VS Code ou o Notepad++) como administrador.
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.
- Substitua os seguintes marcadores de posição:
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.