Coletar registros do Microsoft IIS
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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
- Clique em Iniciar.
- Digite
inetmgre pressione Enter. - A janela Gerenciador dos Serviços de Informações da Internet (IIS) é aberta.
Método alternativo:
- Pressione tecla Windows + R.
- Digite
inetmgre pressione Enter.
Acessar a configuração de geração de registros
- No painel Conexões, expanda o nome do servidor.
- Para configurar o registro em log em todo o servidor (recomendado):
- Clique no nome do servidor no nível raiz.
- Para configurar o registro específico do site:
- Expanda Sites e clique no site específico (por exemplo, Site padrão).
- Na Visualização de recursos, clique duas vezes em Logging.
Selecionar o formato de registro estendido W3C
- Na página Logging, na seção Arquivo de registro:
- No menu suspenso Formato, selecione W3C.
- 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:
Padrão 1: contexto completo do site com string de consulta (recomendado para a maioria das implantaçõ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:
- Date (data)
- Tempo (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)
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:
- Date (data)
- Tempo (tempo)
- Endereço IP do servidor (s-ip)
- Método (cs-method)
- Radical do URI (cs-uri-stem)
- 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)
Padrão 3: contexto do site com métricas completas (recomendado para produção)
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:
- Date (data)
- Tempo (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))
- Status do protocolo (sc-status)
- Substatus do protocolo (sc-substatus)
- Status 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
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:
- Date (data)
- Tempo (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))
- Status do protocolo (sc-status)
- Substatus do protocolo (sc-substatus)
- Status 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)
Esse padrão é funcionalmente idêntico aos padrões 3 e 4.
Ative estes campos nesta ordem exata:
- Date (data)
- Tempo (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))
- Status do protocolo (sc-status)
- Substatus do protocolo (sc-substatus)
- Status do Win32 (sc-win32-status)
- Bytes enviados (sc-bytes)
- Bytes recebidos (cs-bytes)
- 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:
- 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)
- 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)
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:
- 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)
- 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)
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:
- Date (data)
- Tempo (tempo)
- Endereço IP do servidor (s-ip)
- Método (cs-method)
- Radical do URI (cs-uri-stem)
- 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)
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
- Clique em OK para fechar a caixa de diálogo Campos de registro do W3C.
- Verifique o caminho do Diretório em que os registros serão gravados.
- Padrão:
%SystemDrive%\inetpub\logs\LogFiles
- Padrão:
- Em Substituição de arquivo de registro, selecione Diária (recomendado para ingestão do Google SecOps).
- Clique em Aplicar no painel Ações.
Verificar o registro do IIS
- Gere tráfego de teste para seu site do IIS abrindo uma página da Web em um navegador.
- Navegue até o diretório de registros:
C:\inetpub\logs\LogFiles\W3SVC1\ - Abra o arquivo de registro mais recente (por exemplo,
u_ex251020.log) no Bloco de Notas. 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-takenExemplo 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
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Outros recursos de instalação
- Para mais opções de instalação, consulte este guia 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
- Localize o arquivo
config.yaml.- Caminho padrão:
C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
- Caminho padrão:
- Abra o arquivo usando 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- 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.
- Substitua os seguintes marcadores de posição:
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.