Collecter les données Microsoft Windows AD

Ce document inclut les informations suivantes:

  • Architecture de déploiement et étapes d'installation, ainsi que la configuration requise pour produire des journaux compatibles avec l'analyseur Chronicle pour les événements Microsoft Windows Active Directory. Pour en savoir plus sur l'ingestion de données Chronicle, consultez la section Ingestion de données vers Chronicle.
  • Informations sur la façon dont l'analyseur mappe les champs du journal d'origine avec les champs du modèle de données unifié Chronicle.

Les informations contenues dans ce document s'appliquent à l'analyseur portant le libellé d'ingestion WINDOWS_AD. Le libellé d'ingestion identifie l'analyseur qui normalise les données de journal brutes au format UDM structuré.

Avant de commencer

Ce schéma illustre les composants de base recommandés dans une architecture de déploiement pour collecter et envoyer des événements Microsoft Windows à Chronicle. Comparez ces informations avec votre environnement pour vous assurer que ces composants sont installés. Chaque déploiement client sera différent de cette représentation et pourra être plus complexe. Les éléments suivants sont obligatoires:

  • Tous les systèmes de l'architecture de déploiement sont configurés avec le fuseau horaire UTC.
  • Le script PowerShell est créé et configuré sur chaque serveur Microsoft Windows AD pour collecter les données USER_CONTEXT et ASSET_CONTEXT.
  • NXLog est installé sur chaque serveur Microsoft Windows AD pour envoyer des données au serveur Microsoft Windows ou Linux central.
  • Le redirecteur Chronicle est installé sur le serveur Microsoft Windows ou Linux central pour transférer les données des journaux vers Chronicle.

    Architecture de déploiement

Vérifier les versions et appareils compatibles

L'analyseur Chronicle est compatible avec les journaux des versions suivantes du serveur Microsoft Windows. Microsoft Windows Server est publié avec les éditions suivantes: Foundation, Essentials, Standard et Datacenter. Le schéma d'événement de journaux généré par chaque édition ne diffère pas.

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

L'analyseur Chronicle est compatible avec les journaux collectés par NXLog Community ou Enterprise Edition.

Examiner les types de journaux compatibles

L'analyseur Chronicle analyse et normalise les données extraites du contexte utilisateur et du contexte de l'élément. Cette fonctionnalité est compatible avec les journaux générés en anglais et ne l'est pas.

Configurer les serveurs Microsoft Windows AD

Procédure de configuration des serveurs Microsoft Windows AD dans l'architecture de déploiement:

  1. Configurez tous les systèmes avec le fuseau horaire UTC.
  2. Sur chaque serveur Microsoft Windows Active Directory, créez et configurez un script PowerShell pour collecter les données des journaux dans un fichier de sortie. NXLog lit le fichier de sortie et envoie des données au serveur Microsoft Windows ou Linux central.
  3. Créez le script Powershell. Consultez l'exemple ci-dessous. Remplacez la valeur de $OUTPUT_FILENAME par l'emplacement où le fichier de sortie doit être écrit. Ce fichier sera lu par NXLog. Les données doivent être stockées au format JSON. Définissez l'encodage sur utf8. Utilisez le paramètre -Filter au lieu du paramètre -LDAPFilter lorsque vous appelez les cmdlets Get-ADUser et Get-ADComputer.

    # 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. Créez une tâche récurrente qui exécute le script permettant de récupérer et d'écrire des données dans le fichier de sortie.

    1. Ouvrez l'application Planificateur de tâches.
    2. Cliquez sur "Créer une tâche" dans le panneau de droite.
    3. Saisissez le nom et la description de la tâche.
    4. Cochez la case"Exécuter avec le niveau d'accès le plus élevé"pour vous assurer que toutes les données sont récupérées.créer une tâche ;

    5. Dans l'onglet "Déclencheurs", définissez la date à laquelle vous souhaitez répéter la tâche.

    6. Dans l'onglet "Action", ajoutez une action et indiquez le chemin d'accès au fichier dans lequel le script est stocké.Créer une programmation

  5. Installez l'agent NXLog sur chaque serveur Microsoft Windows Active Directory. Cette application transfère les journaux vers le serveur Microsoft Windows ou Linux central. Suivez la documentation NXLog.

  6. Créez un fichier de configuration pour chaque instance NXLog. Utilisez le module NimLog im_file pour lire le fichier et analyser les lignes en champs. Utilisez le module om_tcp pour transférer des données vers le serveur Microsoft Windows ou Linux central.

    Voici un exemple de configuration NXLog. Remplacez les valeurs <hostname> et <port> par des informations sur le serveur central de destination Microsoft Windows ou Linux. Dans la section <Input in_adcontext> et la propriété File, ajoutez le chemin d'accès au fichier journal de sortie écrit par le script Powershell. Définissez toujours DirCheckInterval et PollInterval. Si ces éléments ne sont pas définis, NXLog interroge les fichiers toutes les secondes.

    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. Démarrez le service NXLog dans chaque système.

Configurer le serveur Microsoft Windows ou Linux central

Pour plus d'informations sur l'installation et la configuration du redirecteur, consultez les pages Installer et configurer le redirecteur sous Linux ou Installer et configurer le redirecteur sous Microsoft Windows.

  1. Configurez le système avec le fuseau horaire UTC.
  2. Installez le redirecteur Chronicle sur le serveur Microsoft Windows ou Linux central.
  3. Configurez le redirecteur Chronicle pour envoyer les journaux à Chronicle. Voici un exemple de configuration de redirecteur.

      - 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
    

Référence de mappage de champs: champs de journal de l'appareil vers champs UDM

Cette section décrit comment l'analyseur mappe les champs de journal d'origine avec les champs du modèle de données unifié.

Journaux de contexte utilisateur

Champ NXLog Champ UDM
GivenName entity.entity.user.first_name
Nom entity.entity.user.last_name
SamAccountName entity.entity.user.userid
Valeur SID entity.entity.user.windows_sid
Classe ObjectObject Si la valeur est"user",
entity-metadata.entity_type est défini sur USER.
Objet entity.entity.user.product_object_id
Date d'expiration du compte Stocké en tant que paire entity.entity.user.attribute.label.key/value.
badPwdCount Stocké en tant que paire entity.entity.user.attribute.label.key/value.
Nom canonique entity.enitity.administrator_domain
City (Ville) entity.entity.user.personal_address.city,
Company entity.entity.user.company_name
Country entity.entity.user.personal_address.country_or_region :
Département entity.entity.user.service
Description entity.metadata.description (description de métadonnées d'entité)
DisplayName entity.entity.user.user_display_name.
EmailAddress entity.entity.user.email_addresses.
ID d'employé entity.entity.user.Employee_id
Répertoire d'accueil entity.entity.file.full_path
Page d'accueil entity.entity.url
Téléphone principal entity.entity.user.phone_numbers
Dernière tentative de mot de passe incorrect Stocké en tant que paire entity.entity.user.attribute.label.key/value.
LastLogoff Stocké en tant que paire entity.entity.user.attribute.label.key/value.
dernière inscription Stocké en tant que paire entity.entity.user.attribute.label.key/value.
DateDuDateLogon Stocké en tant que paire entity.entity.user.attribute.label.key/value.
Responsable Les valeurs du GUID, du SAMAccountname et du SID sont toutes mappées avec différents champs UDM :
- Le SID est stocké dans manager.windows_sid
- Le nom distinctif (soit la valeur dans le premier nom CN) est stocké dans manager.user_display_name
- GUID,SamAccountName est stocké dans manager.userid
MembreDe Les champs suivants de la première occurrence de CN sont définis:
entity.relations.entity.group.group_display_name
entity.relations.entity_type défini sur GROUP
entity.relations.relationship set t0 MEMBER
entity.relations.direction définie sur UNIDIRECTIONAL
Téléphones mobiles entity.entity.user.phone_numbers
Office entity.entity.user.office_address.name
Mot de passe expiré Stocké en tant que paire entity.entity.user.attribute.label.key/value.
PasswordLastSet Stocké en tant que paire entity.entity.user.attribute.label.key/value.
Mot de passeJamais Stocké en tant que paire entity.entity.user.attribute.label.key/value.
Mot de passeNotRequired Stocké en tant que paire entity.entity.user.attribute.label.key/value.
GroupePrincipal Les champs suivants sont définis :
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type défini sur GROUP
- entity.relations.relationship défini sur MEMBER
- entity.relations.direction définie sur UNIDIRECTIONAL
ServicePrincipalNames Stocké en tant que paire entity.entity.user.attribute.label.key/value.
État entity.entity.user.personal_address.state.
Adresse postale entity.entity.user.personal_address.name
Titre entity.entity.user.title
whenCreated entity.user.attribute.creation_time

Journaux du contexte de l'élément

Champ NXLog Champ UDM
Nom d'hôte DNS entity.entity.asset.hostname
SamAccountName entity.entity.asset.asset_id
Valeur SID entity.entity.user.windows_sid
Classe ObjectObject Si la valeur est "computer", l'entité, métadonnées.entité_type est définie sur ASSET.
Objet entity.entity.asset.product_object_id
Date d'expiration du compte entity.entity.asset.attribute.label.key/valeur
badPwdCount entity.entity.asset.attribute.label.key/valeur
Nom canonique entity.entity.administrator_domain
CodePays entity.entity.asset.location.country_or_region :
Description entity.entity.metadata.description
Page d'accueil entity.entity.url
Adresse IPv4 entity.entity.asset.ip
Adresse IPv6 entity.entity.asset.ip
Dernière tentative de mot de passe incorrect Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
LastLogoff Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
dernière inscription Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
DateDuDateLogon Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
Emplacement entity.entity.asset.location.name
ManagedBy Les champs suivants sont définis :

entity.entity.user.user_display_name
entity.relations.entity_type défini sur USER
entity.relations.relationship défini sur ADMINISTERS
entity.relations.direction définie sur UNIDIRECTIONAL
Objet entity.entity.asset.category
OperatingSystem Si le nom contient "Windows", le champ "entity.entity.asset.platform_software.platform" est défini sur "WINDOWS".
OperatingSystemServicePack entity.entity.asset.platform_software.platform_patch_level
OperatingSystemVersion Le champEntity.entity.asset.platform_software.platform_version est défini sur {OperatingSystem}– OperatingOperatingSystemVersion}
Mot de passe expiré Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
PasswordLastSet Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
Mot de passeJamais Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
Mot de passeNotRequired Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
GroupePrincipal Les champs suivants sont définis :
- entity.relations.entity.group.group_display_name
- entity.relations.entity_type défini sur GROUP
- entity.relations.relationship défini sur MEMBER
- entity.relations.direction définie sur UNIDIRECTIONAL
ServicePrincipalNames Stocké en tant que paire entity.entity.asset.attribute.label.key/value.
quandModifié entity.entity.asset.attribute.last_update_time
whenCreated entity.entity.asset.attribute.creation_time