Recolha registos do Microsoft IIS
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
- 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 (por exemplo,
C:\SecOps\ingestion-auth.json).
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
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
- 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 Configuração de registo
- No painel Ligações (lado esquerdo), 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 (painel central), clique duas vezes em Registo.
Selecione o formato de registo alargado 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
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.
Padrão 6: com cookie e referenciador (sem desempenho, sem 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))
- 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.
Padrão 7: mínimo com Referer (sem cookie, sem desempenho, sem 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))
- 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.
Padrão 8: mínimo sem Referer (sem cookie, sem desempenho, sem 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
- Clique em OK para fechar a caixa de diálogo Campos de registo W3C.
- Verifique 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 (lado direito).
Valide o registo do IIS
Depois de configurar os campos W3C, verifique se o IIS está a escrever registos corretamente:
- 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\- Nota:
W3SVC1corresponde ao primeiro site (Default Web Site). Para outros sites, o nome da pasta éW3SVC2,W3SVC3, etc.
- Nota:
- Abra o ficheiro de registo mais recente (por exemplo,
u_ex251217.log) no Bloco de notas. - 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
- 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
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, Bloco de notas, VS Code ou 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
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.