Coletar registros do Microsoft IIS
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
- 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 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
- 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
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
- 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 do Logging
- No painel Conexões (lado esquerdo), 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 (painel central), clique duas vezes em Logging.
Selecione o formato de registro estendido do 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
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.
Padrão 6: com cookie e referenciador (sem performance, sem 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))
- 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.
Padrão 7: mínimo com referenciador (sem cookie, sem desempenho, sem 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))
- 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".
Padrão 8: mínimo sem referenciador (sem cookie, sem performance, sem 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
- 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 (lado direito).
Verificar o registro do IIS
Depois de configurar os campos do W3C, verifique se o IIS está gravando os registros corretamente:
- 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\- Observação:
W3SVC1corresponde ao primeiro site (site da Web padrão). Para outros sites, o nome da pasta seráW3SVC2,W3SVC3etc.
- Observação:
- Abra o arquivo de registro mais recente (por exemplo,
u_ex251217.log) no Bloco de Notas. - 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
- 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 enviá-los ao Google SecOps
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
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.