Coletar dados do Microsoft Windows AD

Compatível com:

Este documento inclui as seguintes informações:

  • Arquitetura de implantação e etapas de instalação, além de qualquer configuração necessária que produza registros com suporte do analisador do Google Security Operations para eventos do Microsoft Windows Active Directory. Para uma visão geral das Operações de segurança do Google Ingestão de dados, consulte Ingestão de dados para as Operações de segurança do Google.
  • Informações sobre como o analisador mapeia campos no registro original para os campos do modelo de dados unificado do Google Security Operations.

Com base na arquitetura de implantação, configure o agente BindPlane ou o NXLog para ingerir registros do Microsoft Windows Active Directory nas Operações de segurança do Google. Recomendamos que você use o agente do BindPlane para encaminhar os registros do Windows Active Directory para as Operações de segurança do Google.

As informações neste documento se aplicam ao analisador com o rótulo de ingestão WINDOWS_AD. O rótulo de transferência identifica qual analisador normaliza os dados de registro brutos para o formato estruturado do UDM.

Antes de começar

Antes de configurar o agente BindPlane ou o agente NXLog, conclua as seguintes tarefas:

Configurar servidores do Microsoft Windows AD

  1. Em cada servidor Microsoft Windows Active Directory, crie e configure script do PowerShell para salvar os dados de registro em um arquivo de saída. O agente do BindPlane ou NXLog lê o arquivo de saída.

    # Set the location where the log file will be written
    $OUTPUT_FILENAME="<Path_of_the_output_file>"
    
    If (Test-Path -Path $OUTPUT_FILENAME) { Remove-Item -path $OUTPUT_FILENAME -ErrorAction SilentlyContinue}
    
    # USER_CONTEXT: Gets all Active Directory users and their properties.
    Get-ADUser -Filter * -properties samAccountName | % { Get-ADUser $_.SamAccountName -properties * | ConvertTo-JSON -compress | Out-File -encoding utf8 $OUTPUT_FILENAME -Append }
    
    # ASSET_CONTEXT: Gets all Active Directory assets and their properties.
    Get-ADComputer -Filter * -properties samAccountName | % { Get-ADComputer $_.SamAccountName -properties * | ConvertTo-JSON -compress | Out-File -encoding utf8 $OUTPUT_FILENAME -Append }
    
  2. Substitua o seguinte :

    • Substitua o valor de $OUTPUT_FILENAME pela localização do arquivo de saída.
    • Armazene os dados no formato JSON.
    • Defina a codificação como UTF-8.
    • Use o parâmetro -Filter, em vez do parâmetro -LDAPFilter, ao chamar os cmdlets Get-ADUser e Get-ADComputer.
  3. Crie uma tarefa recorrente que execute o script para buscar e gravar dados no arquivo de saída.

    1. Abra o aplicativo Agendador de tarefas.
    2. Clique em Criar tarefa.
    3. Digite um nome e uma descrição para a tarefa.
    4. Marque a caixa de seleção Executar com privilégios mais altos para confirmar todos os dados são recuperados.
    5. Na guia Gatilhos, defina quando você quer repetir a tarefa.
    6. Na guia Ação, adicione uma nova ação e informe o caminho do arquivo em que o script está armazenado.

Analisar os dispositivos e as versões compatíveis

O Microsoft Windows Server é lançado com as seguintes edições: Foundation, Essentials, Standard e Datacenter. O esquema de eventos dos registros gerados por cada edição não é diferente.

O Analisador de operações de segurança do Google é compatível com os registros das seguintes versões do servidor Microsoft Windows:

  • Microsoft Windows Server 2019
  • Microsoft Windows Server 2016
  • Microsoft Windows Server 2012

O analisador Google Security Operations oferece suporte a logs coletados pelo NXLog Community Edition ou Enterprise Edition.

Analisar os tipos de registro aceitos

O analisador das Operações de segurança do Google analisará e normalizará dados recuperados do Contexto do usuário e o Contexto do recurso. Ele aceita registros gerados com texto em inglês, mas não registros gerados em outros idiomas.

Configurar o agente do BindPlane

Recomendamos que você use o agente BindPlane para encaminhar os registros do Active Directory do Windows para as operações de segurança do Google.

Após a instalação, o serviço do agente do BindPlane aparece como o serviço observIQ na lista de serviços do Windows.

  1. Instale o agente do BindPlane em cada servidor do Windows Active Directory. Para mais informações sobre a instalação do agente do BindPlane, consulte as instruções de instalação do agente do BindPlane.
  2. Crie um arquivo de configuração para o agente do BindPlane com o conteúdo a seguir.

    receivers:
      filelog:
        include: [ `FILE_PATH` ]
        operators:
          - type: json_parser
        start_at: beginning
      windowseventlog/activedirectoryservice:
        channel: Directory Service
        raw: true
    processors:
      batch:
    
    exporters:
      chronicle/activedirectory:
        endpoint: https://malachiteingestion-pa.googleapis.com
        creds: '{
        "type": "service_account",
        "project_id": "malachite-projectname",
        "private_key_id": `PRIVATE_KEY_ID`,
        "private_key": `PRIVATE_KEY`,
        "client_email":"`SERVICE_ACCOUNT_NAME`@malachite-`PROJECT_ID`.iam.gserviceaccount.com",
        "client_id": `CLIENT_ID`,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/`SERVICSERVICE_ACCOUNT_NAME`%40malachite-`PROJECT_ID`.iam.gserviceaccount.com",
        "universe_domain": "googleapis.com"
        }'
      log_type: 'WINDOWS_AD'
      override_log_type: false
      raw_log_field: body
      customer_id: `CUSTOMER_ID`
    
    service:
      pipelines:
        logs/ads:
          receivers:
            - filelog
            - windowseventlog/activedirectoryservice
          processors: [batch]
          exporters: [chronicle/activedirectory]
    
  3. Substitua o seguinte :

    • FILE_PATH pelo caminho do arquivo em que a saída do script do PowerShell mencionado em Configurar servidores do Microsoft Windows AD foi armazenada.

    • PRIVATE_KEY_ID, PRIVATE_KEY SERVICSERVICE_ACCOUNT_NAME,PROJECT_ID, CLIENT_ID e CUSTOMER_ID com os respectivos valores do arquivo JSON da conta de serviço, que pode ser feito o download no Google Cloud. Para mais informações sobre chaves de conta de serviço, consulte Criar e excluir conta de serviço serviço.

  4. Para iniciar o serviço de agente do observIQ, selecione Services > Extended > o serviço observIQ > start.

Configurar o NXLog

O diagrama a seguir mostra uma arquitetura em que os agentes do NXLog são instalados para coletar e enviar eventos do Microsoft Windows ao Google Security Operations. Compare essas informações com seu ambiente para garantir que esses componentes estejam instalados. Sua implantação pode ser diferente dessa arquitetura e pode ser mais complexa.

Ingestão do encaminhador NXLog.

Se você usar o agente NXLog em vez do agente do BindPlane, verifique o seguinte:

  • Um script do PowerShell é criado e configurado em cada Microsoft Windows Server que executa o Active Directory para coletar dados de USER_CONTEXT e ASSET_CONTEXT. Para mais informações, consulte Configurar servidores do Microsoft Windows AD.
  • O NXLog é instalado em cada servidor Microsoft Windows AD para enviar dados para a rede central Microsoft Windows Server ou Linux.
  • O encaminhador das Operações de segurança do Google é instalado no servidor central Microsoft Windows Server ou Linux para encaminhar dados de registro para as Operações de segurança do Google.

Configurar o NXLog

  1. Instale o agente NXLog em cada coletor executado no servidor Windows Active Directory. Esse aplicativo encaminha registros para o servidor central do Microsoft Windows ou Linux. Para mais informações, consulte a documentação do NXLog.
  2. Crie um arquivo de configuração para cada instância do NXLog. Use o módulo im_file do NXLog para ler o arquivo e analisar as linhas em campos. Use om_tcp para encaminhar dados ao servidor central do Microsoft Windows ou Linux.

    Confira a seguir um exemplo de configuração do NXLog. Substituir <hostname> e <port> valores com informações sobre a central de destino do Microsoft Windows ou Linux Servidor. Na seção <Input in_adcontext> e na propriedade File, adicione o do arquivo de registro de saída gravado pelo script do PowerShell. Sempre definir DirCheckInterval e PollInterval. Se nada for definido, o NXLog pesquisa arquivos a cada segundo.

    define ROOT C:\Program Files\nxlog
    define ADCONTEXT_OUTPUT_DESTINATION_ADDRESS <hostname>
    define ADCONTEXT_OUTPUT_DESTINATION_PORT <port>
    
    Moduledir   %ROOT%\modules
    CacheDir    %ROOT%\data
    Pidfile     %ROOT%\data\nxlog.pid
    SpoolDir    %ROOT%\data
    LogFile     %ROOT%\data\nxlog.log
    
    <Input in_adcontext>
        Module im_file
        File "<Path_of_the_output_file>"
        DirCheckInterval 3600
        PollInterval 3600
    </Input>
    
    <Output out_chronicle_adcontext>
        Module  om_tcp
        Host    %ADCONTEXT_OUTPUT_DESTINATION_ADDRESS%
        Port    %ADCONTEXT_OUTPUT_DESTINATION_PORT%
    </Output>
    
    <Route ad_context_to_chronicle>
        Path in_adcontext => out_chronicle_adcontext
    </Route>
    
  3. Inicie o serviço NXLog em cada sistema.

Configurar o encaminhador em um servidor central

Para informações sobre como instalar e configurar o encaminhador no Linux, consulte Instalar e configurar o encaminhador no Linux. Para informações sobre como instalar e configurar o forwarder no Microsoft Windows, consulte Instalar e configurar o forwarder no Microsoft Windows.

  1. Configure o sistema com o fuso horário UTC.
  2. Instale o encaminhador de Operações de segurança do Google no servidor Microsoft Windows ou Linux central.
  3. Configure o encaminhador das Operações de segurança do Google para enviar registros às Operações de segurança do Google. Veja a seguir um exemplo de configuração do encaminhador:

      - syslog:
          common:
            enabled: true
            data_type: WINDOWS_AD
            batch_n_seconds: 10
            batch_n_bytes: 1048576
          tcp_address: 0.0.0.0:10518
          connection_timeout_sec: 60
    

Referência de mapeamento de campo: campos de registro do dispositivo para campos de UDM

Esta seção descreve como o analisador mapeia campos de registro originais para campos do modelo de dados unificado.

Registros de contexto do usuário

Campo NXLog Campo UDM
GivenName entity.entity.user.first_name
Surname entity.entity.user.last_name
SamAccountName entity.entity.user.userid
SID.Value entity.entity.user.windows_sid
ObjectClass If the value is user,
entity.metadata.entity_type is set to USER
ObjectGuid If the ObjectGuid log field value is not empty, then the ObjectGuid log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the objectGUID log field value is not empty, then the objectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the ObjectGUID log field value is not empty, then the ObjectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
objectGUID If the ObjectGuid log field value is not empty, then the ObjectGuid log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the objectGUID log field value is not empty, then the objectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the ObjectGUID log field value is not empty, then the ObjectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
ObjectGUID If the ObjectGuid log field value is not empty, then the ObjectGuid log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the objectGUID log field value is not empty, then the objectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
Else, If the ObjectGUID log field value is not empty, then the ObjectGUID log field is mapped to the entity.entity.user.product_object_id UDM field.
AccountExpirationDate entity.entity.user.account_expiration_time
badPwdCount entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
CanonicalName entity.entity.administrative_domain
City entity.entity.user.personal_address.city
Company entity.entity.user.company_name
Country entity.entity.user.personal_address.country_or_region
Department entity.entity.user.department
Description entity.metadata.description
DisplayName entity.entity.user.user_display_name
EmailAddress entity.entity.user.email_addresses
EmployeeID entity.entity.user.employee_id
HomeDirectory entity.entity.file.full_path
HomePage entity.entity.url
HomePhone entity.entity.user.phone_numbers
LastBadPasswordAttempt entity.entity.user.last_bad_password_attempt_time
lastLogoff entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
lastLogon entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
LastLogonDate entity.entity.user.last_login_time
Manager Values for GUID, SAMAccountname, SID all mapped to different UDM fields:
- SID is stored in manager.windows_sid
- Distinguished name (i.e. value in first CN) is stored in manager.user_display_name
- GUID,SamAccountName is stored in manager.userid
MemberOf The following fields in the first occurrence of CN are set:
entity.relations.entity.group.group_display_name
entity.relations.entity_type set to GROUP
entity.relations.relationship set t0 MEMBER
entity.relations.direction set to UNIDIRECTIONAL
MobilePhone entity.entity.user.phone_numbers
Office entity.entity.user.office_address.name
PasswordExpired entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
PasswordLastSet entity.entity.user.last_password_change_time
PasswordNeverExpires entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
PasswordNotRequired entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
PrimaryGroup Following fields are set:
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type set to GROUP
- entity.relations.relationship set to MEMBER
- entity.relations.direction set to UNIDIRECTIONAL
ServicePrincipalNames entity.entity.user.attribute.label.key and entity.entity.user.attribute.label.value
State entity.entity.user.personal_address.state
StreetAddress entity.entity.user.personal_address.name
Title entity.entity.user.title
whenCreated entity.user.attribute.creation_time
AccountLockoutTime entity.entity.user.account_lockout_time

Registros de contexto do recurso

Campo NXLog Campo UDM
DNSHostName entity.entity.asset.hostname
SamAccountName entity.entity.asset.asset_id
SID.Value entity.entity.user.windows_sid
ObjectClass If the value is computer, entity.metadata.entity_type set to ASSET
ObjectGuid If the ObjectGuid log field value is not empty, then the ObjectGuid log field is mapped to the entity.entity.asset.product_object_id UDM field.
Else, If the ObjectGUID log field value is not empty, then the ObjectGUID log field is mapped to the entity.entity.asset.product_object_id UDM field.
ObjectGUID If the ObjectGuid log field value is not empty, then the ObjectGuid log field is mapped to the entity.entity.asset.product_object_id UDM field.
Else, If the ObjectGUID log field value is not empty, then the ObjectGUID log field is mapped to the entity.entity.asset.product_object_id UDM field.
AccountExpirationDate entity.entity.user.account_expiration_time
badPwdCount entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
CanonicalName entity.entity.administrative_domain
countryCode entity.entity.asset.location.country_or_region
Description entity.entity.metadata.description
HomePage entity.entity.url
IPv4Address entity.entity.asset.ip
IPv6Address entity.entity.asset.ip
LastBadPasswordAttempt entity.entity.user.last_bad_password_attempt_time
lastLogoff entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
lastLogon entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
LastLogonDate entity.entity.user.last_login_time
Location entity.entity.asset.location.name
ManagedBy The following fields are set:

entity.entity.user.user_display_name
entity.relations.entity_type set to USER
entity.relations.relationship set to ADMINISTERS
entity.relations.direction set to UNIDIRECTIONAL
ObjectCategory entity.entity.asset.category
OperatingSystem If the name contains Windows, entity.entity.asset.platform_software.platform field is set to WINDOWS.
OperatingSystemServicePack entity.entity.asset.platform_software.platform_patch_level
OperatingSystemVersion The field entity.entity.asset.platform_software.platform_version is set to %{OperatingSystem} - %{OperatingSystemVersion}
PasswordExpired entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
PasswordLastSet entity.entity.user.last_password_change_time
PasswordNeverExpires entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
PasswordNotRequired entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
PrimaryGroup The following fields are set:
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type set to GROUP
- entity.relations.relationship set to MEMBER
- entity.relations.direction set to UNIDIRECTIONAL
ServicePrincipalNames entity.entity.asset.attribute.label.key and entity.entity.asset.attribute.label.value
whenChanged entity.entity.asset.attribute.last_update_time
whenCreated entity.entity.asset.attribute.creation_time
AccountLockoutTime entity.entity.user.account_lockout_time