
Salut Habr! Lisez sous cat comment accéder au journal de sécurité Windows sans privilèges d'administrateur. Ce ne sera pas le premier article sur Habré lié aux journaux Windows et probablement pas le plus original, mais à mon avis, j'ai passé trop de temps à chercher une solution simple pour lire les journaux en tant qu'utilisateur ordinaire, j'ai donc décidé de partager «ma réussite».
J'ai également dû comparer les performances des applets de commande Powershell avec les applets de commande 
Get-WinEvent et 
Get-EventLog .
Tout ce qui est sous la coupe est pertinent pour Windows Server 2008R2 / 2012R2, Windows 10 Pro (1809), je n'ai pas vérifié les autres versions, je pense que la situation est similaire avec les produits de 2016 et 2019.
Et donc, par défaut, l'utilisateur moyen n'a pas l'autorisation de lire les journaux de sécurité.
Lorsque vous essayez d'obtenir les journaux, vous obtenez une erreur.

Et via l' 
Observateur d'événements, l' accès sera également refusé.

SHOWTIME
Ajoutez l'utilisateur au groupe local de 
lecteurs de journaux d'événements .

Ensuite, nous accordons des autorisations de lecture à la branche de registre 
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .

Sans modifier les droits de cette branche de registre, vous ne pourrez pas lire les paramètres du journal de sécurité; en conséquence, vous ne pourrez pas trouver l'emplacement et le nom du fichier journal. 
Sécurité , c'est la seule section du service 
Eventlog qui n'hérite pas des droits d'accès de la racine.
Voici à quoi ressemblent les autorisations pour 
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog .

Vérifiez que les applets de commande 
Get-WinEvent et 
Get-EventLog fonctionnent!
Plus tard, revenons à comparer ces applets de commande ...

Gérer le journal d'audit et de sécurité
Si l'utilisateur doit disposer de droits pour effacer le journal, vous devrez modifier la stratégie de groupe. Un utilisateur ou un groupe d'utilisateurs doit ajouter 
des autorisations Gérer l'audit et le journal de sécurité .
Ce groupe se trouve ici 
Configuration ordinateur \ Paramètres Windows \ Paramètres de sécurité \ Stratégies locales \ Attribution des droits utilisateur .

Vous pouvez en savoir plus sur la 
gestion du journal d'audit et de sécurité ici.Ce paramètre de stratégie détermine quels utilisateurs peuvent spécifier les options d'audit d'accès aux objets pour les ressources individuelles telles que les fichiers, les objets Active Directory et les clés de registre. Ces objets spécifient leurs listes de contrôle d'accès système (SACL). Un utilisateur auquel ce droit d'utilisateur est attribué peut également afficher et effacer le journal de sécurité dans l'Observateur d'événements. Pour plus d'informations sur la stratégie d'audit d'accès aux objets, voir Auditer l'accès aux objets.
Nous vérifions, tout fonctionne comme promis, les journaux ont été nettoyés ...

Il n'y a aucune autre logique pour nettoyer les droits.
 Honnêtement, je ne peux pas proposer un scénario où l'utilisateur doit avoir le droit de nettoyer les journaux de sécurité, mais cette possibilité est présente.
Honnêtement, je ne peux pas proposer un scénario où l'utilisateur doit avoir le droit de nettoyer les journaux de sécurité, mais cette possibilité est présente.Get-WinEvent VS Get-EventLog
Il est temps de comparer ces deux applets de commande
Get-eventlogDescription:
L'applet de commande Get-EventLog obtient des événements et des journaux d'événements sur les ordinateurs locaux et distants.
Vous pouvez utiliser les paramètres et les valeurs de propriété de l'applet de commande pour rechercher des événements. Cette applet de commande obtient des événements qui correspondent aux valeurs de propriété spécifiées.
Les applets de commande qui contiennent le nom EventLog fonctionnent uniquement sur les journaux d'événements classiques. Pour obtenir des événements à partir des journaux qui utilisent la technologie du journal des événements Windows dans Windows Vista et les versions ultérieures de Windows, utilisez Get-WinEvent.
Get-WinEventDescription:
L'applet de commande Get-WinEvent obtient les événements des journaux d'événements, y compris les journaux classiques, tels que les journaux système et d'application, et les journaux d'événements générés par la technologie du journal des événements Windows introduite dans Windows Vista. Il obtient également des événements dans des fichiers journaux générés par le suivi des événements pour Windows (ETW).
Sans paramètres, une commande Get-WinEvent obtient tous les événements de tous les journaux des événements sur l'ordinateur. Pour interrompre la commande, appuyez sur CTRL + C.
Get-WinEvent répertorie également les journaux d'événements et les fournisseurs de journaux d'événements. Vous pouvez obtenir des événements à partir de journaux sélectionnés ou à partir de journaux générés par des fournisseurs d'événements sélectionnés. Et, vous pouvez combiner des événements de plusieurs sources dans une seule commande. Cette applet de commande vous permet de filtrer les événements à l'aide de requêtes XPath, de requêtes XML structurées et de requêtes de table de hachage simplifiées
Selon la description, 
Get-WinEvent peut fonctionner avec un grand nombre de magazines apparus dans 
WIndows Vista .
Pour plus de clarté, voici les listes avec lesquelles ces applets de commande fonctionnent 
; J'ai arrêté la sortie pour 
Get-WinEvent .

Mais il y a une chose, les performances sont importantes, comparez le temps d'exécution des requêtes.
 Le temps d'exécution de Get-WinEvent est
Le temps d'exécution de Get-WinEvent est tout simplement incroyable, faites attention au nombre d'entrées dans les 
journaux d'Application et de 
sécurité , le nombre d'événements est approximativement le même 3400-3600, mais la différence de temps d'exécution est presque 20 fois ...
Get-WinEvent passe 127 secondes contre 52 secondes à 
Get-EventLog pour lire les événements d' 
application .
Et échec et mat, 
Get-WinEvent passe 2020 secondes contre 45 secondes à 
Get-EventLog pour lire 
les événements de 
sécurité .
Si vous exécutez les mêmes commandes localement, tout ne semble pas si mal, mais même localement, 
Get-EventLog fonctionne avec les journaux de sécurité 50 fois plus rapidement que 
Get-WinEvent .

Et un autre exemple, déjà un peu plus significatif, de recevoir des événements avec le code 
4624 Un compte a été correctement connecté .

Que puis-je dire, les chiffres ne mentent pas ...
Accès non administrateur aux journaux des événements DC
Et en conclusion, j'ai laissé le sujet de l'accès aux journaux de sécurité sur le contrôleur de domaine.
Tout ce qui précède est également pertinent pour le contrôleur de domaine avec quelques modifications.
1 - Vous trouverez le groupe 
Lecteurs de journaux d'événements dans les objets 
Principes de sécurité intégrés .

En ajoutant un utilisateur à ce groupe, vous ne donnez des autorisations de lecture qu'aux contrôleurs de domaine.
Et n'oubliez pas que sur chacun des contrôleurs de domaine, vous devez autoriser la lecture de la branche de registre 
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security .
Voici un exemple, il n'y a aucune autorisation de lire le journal d'un serveur membre, si vous devez lire les journaux d'autres machines du domaine, utilisez des stratégies de groupe pour ajouter des utilisateurs ou des groupes d'utilisateurs aux groupes locaux de 
lecteurs de journaux d' 
événements .

2 - Pour ajouter des droits d'effacement des journaux, vous devez modifier la 
stratégie des contrôleurs de domaine par défaut .
3 - Pour permettre le lancement de tâches au nom de l'utilisateur sur le contrôleur de domaine, vous devez également modifier la 
stratégie des contrôleurs de domaine par défaut et donner à l'utilisateur 
des autorisations de 
connexion par lots .
4 - Soyez extrêmement prudent lors de la modification des politiques de domaine par défaut!
PS
Une courte liste de ressources qui m'a aidé:
À mon avis, des publications utiles sur Habr, dont les sujets se rapportent aux journaux Windows:
La fin