Raccogliere dati Microsoft Windows AD

Questo documento include le seguenti informazioni:

  • Architettura di deployment e passaggi di installazione, oltre a eventuali configurazioni necessarie che generano log supportati dall'analizzatore sintattico Chronicle per gli eventi di Microsoft Windows Active Directory. Per una panoramica dell'importazione dei dati di Chronicle, vedi Importazione di dati in Chronicle.
  • Informazioni su come l'analizzatore sintattico mappa i campi nel log originale ai campi Chronicle Unified Data Model.

Le informazioni contenute in questo documento si applicano all'analizzatore sintattico con l'etichetta di importazione WINDOWS_AD. L'etichetta di importazione identifica quale analizzatore sintattico normalizza i dati di log non elaborati in formato UDM strutturato.

Prima di iniziare

Questo diagramma illustra i componenti di base consigliati in un'architettura di deployment per raccogliere e inviare eventi di Microsoft Windows a Chronicle. Confronta queste informazioni con il tuo ambiente per assicurarti che questi componenti siano installati. L'implementazione di ciascun cliente sarà diversa da quella della rappresentazione e potrebbe essere più complessa. È obbligatorio:

  • Tutti i sistemi nell'architettura di deployment sono configurati con il fuso orario UTC.
  • Lo script di PowerShell viene creato e configurato su ogni server Microsoft Windows AD per raccogliere i dati USER_CONTEXT e ASSET_CONTEXT.
  • NXLog è installato su ogni server Microsoft Windows AD per inviare dati al server Microsoft Windows o Linux centrale.
  • L'inoltro Chronicle è installato sul server centrale Microsoft Windows o Linux per inoltrare i dati di log a Chronicle.

    Architettura di deployment

Esaminare i dispositivi e le versioni supportati

L'analizzatore sintattico di Chronicle supporta i log delle seguenti versioni di server Microsoft Windows. Microsoft Windows Server è disponibile con le seguenti versioni: Foundation, Essentials, Standard e Datacenter. Lo schema di eventi dei log generati da ogni edizione non cambia.

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

L'analizzatore sintattico Chronicle supporta i log raccolti dalla community NXLog o da Enterprise Edition.

Esamina i tipi di log supportati

L'analizzatore sintattico Chronicle analizza e normalizza i dati recuperati da Contesto utente e da Contesto asset. Supporta i log generati con testo in lingua inglese e non è supportato per quelli generati in lingue diverse dall'inglese.

Configura i server AD di Microsoft Windows

Procedura per configurare i server Microsoft Windows AD nell'architettura di deployment:

  1. Configura tutti i sistemi che hanno il fuso orario UTC.
  2. Su ogni server Microsoft Windows Active Directory, crea e configura uno script di PowerShell per raccogliere i dati del log in un file di output. NXLog legge il file di output e invia i dati al server Microsoft Windows o Linux centrale.
  3. Crea lo script di PowerShell. Vedi il seguente esempio. Modifica il valore di $OUTPUT_FILENAME nella posizione in cui deve essere scritto il file di output. Questo file verrà letto da NXLog. I dati devono essere archiviati in formato JSON. Imposta la codifica su utf8. Quando chiami i cmdlet Get-ADUser e Get-ADComputer, utilizza il parametro -Filter anziché il parametro -LDAPFilter.

    # 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 }
    
  4. Creare un'attività ricorrente che esegua lo script per recuperare e scrivere dati nel file di output.

    1. Apri l'applicazione Task Scheduler.
    2. Fai clic su "Crea attività" nel riquadro a destra.
    3. Inserisci il nome e la descrizione dell'attività,
    4. Seleziona la casella di controllo"Esegui con privilegi più elevati". Per assicurarti che tutti i dati vengano recuperati. Creare un'attività

    5. Nella scheda "Attivatori", definisci quando vuoi ripetere l'attività.

    6. Nella scheda"Azione", aggiungi una nuova azione e specifica il percorso del file in cui è archiviato lo script. Crea una pianificazione

  5. Installa l'agente NXLog su ciascun server Microsoft Windows Active Directory. Questa applicazione inoltra i log al server Microsoft Windows o Linux centrale. Segui la documentazione di NXLog.

  6. Crea un file di configurazione per ogni istanza NXLog. Utilizza il modulo NXLog im_file per leggere dal file e analizzare le righe in campi. Utilizza il modulo om_tcp per inoltrare i dati al server Microsoft Windows o Linux centrale.

    Ecco un esempio di configurazione NXLog. Sostituisci i valori <hostname> e <port> con informazioni sul server Microsoft Windows o Linux centrale di destinazione. Nella sezione <Input in_adcontext> e nella proprietà File, aggiungi il percorso del file di log di output scritto dallo script di PowerShell. Imposta sempre DirCheckInterval e PollInterval. Se non sono definiti, NXLog esegue il polling dei file ogni secondo.

    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>
    
  7. Avviare il servizio NXLog in ciascun sistema.

Configurare il server centrale di Microsoft Windows o Linux

Per informazioni sull'installazione e sulla configurazione dello strumento di forwarding, consulta Installare e configurare lo strumento di forwarding su Linux o Installare e configurare lo strumento di forwarding su Microsoft Windows.

  1. Configura il sistema con il fuso orario UTC.
  2. Installa lo strumento per l'inoltro di Chronicle sul server centrale Microsoft Windows o Linux.
  3. Configura lo strumento per l'inoltro di Chronicle per inviare i log a Chronicle. Ecco un esempio di configurazione dell'inoltro.

      - 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
    

Riferimento per la mappatura dei campi: campi del log dispositivo ai campi UDM

Questa sezione descrive il modo in cui l'analizzatore sintattico associa i campi di log originali ai campi di modelli di dati unificati.

Log del contesto utente

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 entity.entity.user.product_object_id
AccountExpirationDate Stored as an entity.entity.user.attribute.label.key/value pair.
badPwdCount Stored as an entity.entity.user.attribute.label.key/value pair.
CanonicalName entity.enitity.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 Stored as an entity.entity.user.attribute.label.key/value pair.
lastLogoff Stored as an entity.entity.user.attribute.label.key/value pair.
lastLogon Stored as an entity.entity.user.attribute.label.key/value pair.
LastLogonDate Stored as an entity.entity.user.attribute.label.key/value pair.
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 Stored as an entity.entity.user.attribute.label.key/value pair.
PasswordLastSet Stored as an entity.entity.user.attribute.label.key/value pair.
PasswordNeverExpires Stored as an entity.entity.user.attribute.label.key/value pair.
PasswordNotRequired Stored as an entity.entity.user.attribute.label.key/value pair.
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 Stored as an entity.entity.user.attribute.label.key/value pair.
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

Log di contesto asset

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 entity.entity.asset.product_object_id
AccountExpirationDate entity.entity.asset.attribute.label.key/value
badPwdCount entity.entity.asset.attribute.label.key/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 Stored as an entity.entity.asset.attribute.label.key/value pair.
lastLogoff Stored as an entity.entity.asset.attribute.label.key/value pair.
lastLogon Stored as an entity.entity.asset.attribute.label.key/value pair.
LastLogonDate Stored as an entity.entity.asset.attribute.label.key/value pair.
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 Stored as an entity.entity.asset.attribute.label.key/value pair.
PasswordLastSet Stored as an entity.entity.asset.attribute.label.key/value pair.
PasswordNeverExpires Stored as an entity.entity.asset.attribute.label.key/value pair.
PasswordNotRequired Stored as an entity.entity.asset.attribute.label.key/value pair.
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 Stored as an entity.entity.asset.attribute.label.key/value pair.
whenChanged entity.entity.asset.attribute.last_update_time
whenCreated entity.entity.asset.attribute.creation_time