web-dev-qa-db-fra.com

Filtrage des journaux de sécurité par utilisateur et type de connexion

On m'a demandé de savoir quand un utilisateur s'est connecté au système la semaine dernière. Maintenant, les journaux d'audit dans Windows devraient contenir toutes les informations dont j'ai besoin. Je pense que si je recherche l'ID d'événement 4624 (ouverture de session réussie) avec un utilisateur AD spécifique et le type d'ouverture de session 2 (ouverture de session interactive), il devrait me fournir les informations dont j'ai besoin, mais pour la durée de vie, je ne peux pas comprendre comment réellement filtrer le journal des événements pour obtenir ces informations. Est-il possible à l'intérieur de l'Observateur d'événements ou avez-vous besoin d'utiliser un outil externe pour l'analyser à ce niveau?

J'ai trouvé http://nerdsknowbest.blogspot.com.au/2013/03/filter-security-event-logs-by-user-in.html qui semblait faire partie de ce dont j'avais besoin. Je l'ai légèrement modifié pour ne me donner que les 7 derniers jours. Voici le XML que j'ai essayé.

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) &lt;= 604800000]]]</Select>
    <Select Path="Security">*[EventData[Data[@Name='Logon Type']='2']]</Select>
    <Select Path="Security">*[EventData[Data[@Name='subjectUsername']='Domain\Username']]</Select>
  </Query>
</QueryList>

Cela ne m'a donné que les 7 derniers jours, mais le reste n'a pas fonctionné.

Quelqu'un peut-il m'aider avec cela?

[~ # ~] modifier [~ # ~]

Grâce aux suggestions de Lucky Luke, j'ai progressé. Ce qui suit est ma requête actuelle, bien que comme je l'expliquerai, elle ne renvoie aucun résultat.

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
     *[System[(EventID='4624')]
     and
     System[TimeCreated[timediff(@SystemTime) &lt;= 604800000]]
     and
     EventData[Data[@Name='TargetUserName']='john.doe']
     and
     EventData[Data[@Name='LogonType']='2']
     ] 
    </Select>
  </Query>
</QueryList>

Comme je l'ai mentionné, cela ne renvoyait aucun résultat, donc je l'ai un peu dérangé. Je peux l'obtenir pour produire les résultats correctement jusqu'à ce que j'ajoute la ligne LogonType. Après cela, il ne renvoie aucun résultat. Une idée pourquoi cela pourrait être?

EDIT 2

J'ai mis à jour la ligne LogonType comme suit:

EventData[Data[@Name='LogonType'] and (Data='2' or Data='7')]

Cela devrait capturer les ouvertures de poste de travail ainsi que les déverrouillages de poste de travail, mais je n'ai toujours rien. Je le modifie ensuite pour rechercher d'autres types d'ouverture de session comme 3 ou 8 dont il trouve beaucoup. Cela m'amène à croire que la requête fonctionne correctement, mais pour une raison quelconque, il n'y a aucune entrée dans les journaux des événements avec un type d'ouverture de session égal à 2 et cela n'a aucun sens pour moi. Est-il possible de désactiver cela?

18
Trido

Vous êtes sur la bonne voie - l'une des erreurs dans votre requête est l'espace dans "Type d'ouverture de session", il devrait simplement s'agir de "Type d'ouverture de session".

J'ai collé une requête ci-dessous que je viens de vérifier les travaux. C'est un peu simplifié mais vous voyez l'idée. Il vous montre tous les 4624 événements avec le type d'ouverture de session 2, de l'utilisateur "john.doe".

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[
        EventData[Data[@Name='LogonType']='2']
        and
        EventData[Data[@Name='TargetUserName']='john.doe']
        and
        System[(EventID='4624')]
      ] 
    </Select>
  </Query>
</QueryList>

Vous pouvez en savoir plus sur les requêtes XML dans l'Observateur d'événements ici: http://blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filtering-in-the- windows-event-viewer.aspx .

Vous pouvez interroger les événements à partir de la ligne de commande avec wevtutil.exe: http://technet.Microsoft.com/en-us/magazine/dd310329.aspx .

18
Lucky Luke

J'ai trouvé cette question et j'ai dû faire un peu de travail pour analyser le contenu, à partir des réponses acceptées et des mises à jour des questions, pour obtenir une solution fonctionnelle. J'ai pensé publier une syntaxe de requête complète et fonctionnelle ici pour référence future:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[(EventID=4624)
    and
    TimeCreated[timediff(@SystemTime) &lt;= 2592000000]]
    and
    EventData[Data[@Name='TargetUserName'] and (Data='john.doe')]
    and
    EventData[Data[@Name='LogonType'] and (Data='10')]]
    </Select>
  </Query>
</QueryList>

La requête ci-dessus doit permettre de réduire les événements en fonction des paramètres suivants:

  • Événements dans le journal de sécurité.
  • Avec l'ID d'événement 6424
  • Se produisant au cours des 30 derniers jours.
  • Associé à l'utilisateur john.doe.
  • Avec LogonType 10.

Vous pouvez modifier les LogonTypes dans le filtre en modifiant (Data='10') dans le code ci-dessus. Par exemple, vous voudrez peut-être faire (Data='2') ou (Data='10' or Data='2').

1
Iszi