
Hallo Habr! Lesen Sie unter cat, wie Sie ohne Administratorrechte auf das Windows-Sicherheitsprotokoll zugreifen können. Dies wird nicht der erste Artikel über Habr sein, der mit Windows-Protokollen verbunden ist, und wahrscheinlich nicht der originellste, aber meiner Meinung nach habe ich zu viel Zeit damit verbracht, nach einer einfachen Lösung für das Lesen von Protokollen als normaler Benutzer zu suchen, und deshalb beschlossen, die „Erfolgsgeschichte“ zu teilen.
Ich musste auch die Leistung von Powershell-Cmdlets mit
Get-WinEvent und
Get-EventLog vergleichen .
Alles, was unter dem Schnitt liegt, ist für Windows Server 2008R2 / 2012R2, Windows 10 Pro (1809) relevant. Ich habe es nicht auf anderen Versionen getestet. Ich denke, dass die Situation bei den Produkten von 2016 und 2019 ähnlich ist.
Daher hat der durchschnittliche Benutzer standardmäßig keine Berechtigung zum Lesen von Sicherheitsprotokollen.
Wenn Sie versuchen, die Protokolle abzurufen, wird eine Fehlermeldung angezeigt.

Durch die
Ereignisanzeige wird auch der Zugriff verweigert.

SHOWTIME
Fügen Sie den Benutzer der lokalen Gruppe "
Ereignisprotokollleser " hinzu.

Als Nächstes erteilen wir dem Registrierungszweig
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security Leseberechtigungen .

Ohne die Rechte an diesem Registrierungszweig zu ändern, können Sie die Parameter des Sicherheitsprotokolls nicht lesen. Dementsprechend können Sie den Speicherort und den Namen der Protokolldatei nicht ermitteln.
Sicherheit , dies ist der einzige Abschnitt des
Eventlog- Dienstes, der keine Zugriffsrechte vom Stamm erbt.
So sehen die Berechtigungen für
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog aus.

Überprüfen
Sie, ob die Cmdlets
Get-WinEvent und
Get-EventLog funktionieren!
Später zurück zum Vergleich dieser Cmdlets ...

Verwalten des Überwachungs- und Sicherheitsprotokolls
Wenn dem Benutzer Rechte zum Löschen des Protokolls gewährt werden müssen, müssen Sie die Gruppenrichtlinie bearbeiten. Ein Benutzer oder eine Gruppe von Benutzern muss
Berechtigungen zum
Verwalten von Überwachungs- und Sicherheitsprotokollen hinzufügen.
Diese Gruppe befindet sich hier
Computerkonfiguration \ Windows-Einstellungen \ Sicherheitseinstellungen \ Lokale Richtlinien \ Zuweisung von Benutzerrechten .

Weitere
Informationen zum Verwalten der Überwachung und des Sicherheitsprotokolls finden Sie hier.Diese Richtlinieneinstellung bestimmt, welche Benutzer Objektzugriffsüberwachungsoptionen für einzelne Ressourcen wie Dateien, Active Directory-Objekte und Registrierungsschlüssel angeben können. Diese Objekte geben ihre Systemzugriffssteuerungslisten (SACL) an. Ein Benutzer, dem dieses Benutzerrecht zugewiesen wurde, kann auch das Sicherheitsprotokoll in der Ereignisanzeige anzeigen und löschen. Weitere Informationen zur Objektzugriffsüberwachungsrichtlinie finden Sie unter Überwachungsobjektzugriff.
Wir überprüfen, alles funktioniert wie versprochen, die Protokolle wurden gereinigt ...

Es gibt keine anderen Logiken zum Reinigen von Rechten.
Ehrlich gesagt kann ich mir kein Szenario ausdenken, in dem dem Benutzer das Recht eingeräumt werden muss, die Sicherheitsprotokolle zu bereinigen, aber es gibt eine solche Möglichkeit.Get-WinEvent VS Get-EventLog
Es ist Zeit, diese beiden Cmdlets zu vergleichen
Get-eventlogBeschreibung:
Das Cmdlet Get-EventLog ruft Ereignisse und Ereignisprotokolle auf den lokalen und Remotecomputern ab.
Sie können die Parameter und Eigenschaftswerte des Cmdlets verwenden, um nach Ereignissen zu suchen. Dieses Cmdlet ruft Ereignisse ab, die den angegebenen Eigenschaftswerten entsprechen.
Die Cmdlets, die das EventLog-Substantiv enthalten, funktionieren nur in klassischen Ereignisprotokollen. Verwenden Sie Get-WinEvent, um Ereignisse aus Protokollen abzurufen, die die Windows-Ereignisprotokolltechnologie in Windows Vista und späteren Windows-Versionen verwenden.
Get-WinEventBeschreibung:
Das Cmdlet Get-WinEvent ruft Ereignisse aus Ereignisprotokollen ab, einschließlich klassischer Protokolle wie System- und Anwendungsprotokolle sowie der Ereignisprotokolle, die von der in Windows Vista eingeführten Windows-Ereignisprotokolltechnologie generiert werden. Es werden auch Ereignisse in Protokolldateien abgerufen, die von Event Tracing für Windows (ETW) generiert wurden.
Ohne Parameter ruft ein Get-WinEvent-Befehl alle Ereignisse aus allen Ereignisprotokollen auf dem Computer ab. Um den Befehl zu unterbrechen, drücken Sie STRG + C.
Get-WinEvent listet auch Ereignisprotokolle und Ereignisprotokollanbieter auf. Sie können Ereignisse aus ausgewählten Protokollen oder aus Protokollen abrufen, die von ausgewählten Ereignisanbietern erstellt wurden. Außerdem können Sie Ereignisse aus mehreren Quellen in einem einzigen Befehl kombinieren. Mit diesem Cmdlet können Sie Ereignisse mithilfe von XPath-Abfragen, strukturierten XML-Abfragen und vereinfachten Hash-Tabellenabfragen filtern
Laut der Beschreibung kann
Get-WinEvent mit einer großen Anzahl von Magazinen arbeiten, die in
Windows Vista erschienen sind .
Aus Gründen der Übersichtlichkeit sind hier die Listen aufgeführt, mit denen diese Cmdlets arbeiten
. Ich habe die Ausgabe für
Get-WinEvent gestoppt .

Aber es gibt eine Sache, Leistung ist wichtig, vergleichen Sie die Ausführungszeit der Abfrage.
Die Laufzeit von Get-WinEvent ist einfach unglaublich.
Achten Sie auf die Anzahl der Einträge in den
Applocation- und
Sicherheitsprotokollen . Die Anzahl der Ereignisse ist ungefähr gleich 3400-3600, aber der Laufzeitunterschied beträgt fast das 20-fache.
Get-WinEvent benötigt 127 Sekunden gegenüber 52 Sekunden
Get-EventLog , um
Anwendungsereignisse zu lesen.
Und Schachmatt,
Get-WinEvent verbringt 2020 Sekunden gegenüber 45 Sekunden
Get-EventLog , um
Sicherheitsereignisse zu lesen.
Wenn Sie dieselben Befehle lokal ausführen, sieht nicht alles so schlecht aus, aber auch lokal funktioniert
Get-EventLog 50-mal schneller mit Sicherheitsprotokollen als
Get-WinEvent .

Und ein weiteres, bereits etwas aussagekräftigeres Beispiel für den Empfang von Ereignissen mit dem Code
4624 Ein Konto wurde erfolgreich angemeldet .

Was soll ich sagen, die Zahlen lügen nicht ...
Nichtadministratorzugriff auf DC-Ereignisprotokolle
Abschließend habe ich das Thema Zugriff auf Sicherheitsprotokolle auf dem Domänencontroller verlassen.
All dies ist mit einigen Änderungen auch für den Domänencontroller relevant.
1 - Sie finden die Gruppe
Ereignisprotokollleser in den Objekten der integrierten
Sicherheitsprinzipale .

Durch Hinzufügen eines Benutzers zu dieser Gruppe erteilen Sie nur den Domänencontrollern Leseberechtigungen.
Vergessen Sie nicht, dass Sie auf jedem Domänencontroller Berechtigungen zum Lesen des Registrierungszweigs
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Security erteilen müssen .
In diesem Beispiel gibt es keine Berechtigung zum Lesen des Protokolls eines Mitgliedsservers. Wenn Sie die Protokolle von anderen Computern in der Domäne lesen müssen, verwenden Sie Gruppenrichtlinien, um Benutzer oder Benutzergruppen zu den lokalen
Ereignisprotokolllesergruppen hinzuzufügen.

2 - Um Rechte zum Löschen von Protokollen hinzuzufügen, müssen Sie die
Standardrichtlinie für Domänencontroller bearbeiten.
3 - Um das Starten von Aufgaben im Namen des Benutzers auf dem Domänencontroller zu aktivieren, müssen Sie auch die
Standardrichtlinie für Domänencontroller bearbeiten und dem Benutzer die Berechtigung "
Anmelden als Stapeljob" erteilen.
4 - Seien Sie äußerst vorsichtig, wenn Sie Standarddomänenrichtlinien bearbeiten!
PS
Eine kurze Liste von Ressourcen, die mir geholfen haben:
Meiner Meinung nach nützliche Veröffentlichungen zu Habr, deren Themen sich auf Windows-Protokolle beziehen:
Das Ende