lcer00
Goto Top

Eventlogarchivierung mit Powershell DSC

article-picture

Ziel des Tutorials ist es, einen praktischen Einstieg in die Desired State Configuration mittels Powershell DSC zu geben. Die Eventlog-Archivierung ist dabei eher Nebensache. Deshalb habe ich hier auch keine Best-Practice-Überlegungen zur Eventlogarchivierung angestellt.

back-to-topSzenario, Aufgabenstellung und Eingrenzung
Man stelle sich also folgendes Szenario vor:
  • Die Eventlogs der Domänencontroller sollen archiviert werden. Die nennen wir dann mal standort1-dc4.meine.domaene.de, standort1-dc3.meine.domaene.de, 'standort2-dc3.meine.domaene.de', 'standort3-dc3.meine.domaene.de'
  • Die archivierten eventlogs sollen automatisiert von einem "Archivserver" eingesammelt werden (Pull-Verfahren). Natürlich kann man auch per Push arbeiten, das ist hier aber nicht Thema.
  • Wir verwenden das DSC Push-Verfahren. Man kann euch einen Pull-Server bereitstellen, das ist aber auch ein anderes Thema.

Folgende Sicherheitsgruppen wurden zuvor angelegt:
  • G-T0Administratoren - die Administratoren der Domänencontroller
  • G-T0aAdministratoren - die Eventlog-Leseberechtigen Administratoren
  • G-T0LogCollectorServer - die Server, auf die die archivierten Eventlogs kopiert werden sollen

back-to-topDSC-Configurationsaufgaben
In diesem Beispiel wird mit Hilfe von DSC-Resoucen sichergestellt, dass
  • eine Rolle auf dem Server installiert ist
  • bestimmte Verzeichnsse vorhanden sind
  • deren NTFS-Berechtigungen stimmen
  • bestimmte Freigaben mit den korrekten Berechtigungen exisiteren
  • ein bestimmter Scheduled Task existiert.

back-to-topBereitgestellte Ressourcen der DSC Community
Ohne die geht es nicht oft nicht sinnvoll. Die eingebauten Microsoft Powershell DSC Ressourcen erlauben grundlegende Dinge - etwa das Installieren von Serverrollen. Es fehlen jedoch Funktionen z.B. zu Freigaben, NTFS-Berechtigungen etc. Hier stellt die DSC Community ( https://dsccommunity.org/ ) gepflegte Redouten in einem Guthub-Repository zur Verfügung.
Wenn man eine Funktion sucht, die man bei Microsoft nicht findet, wird man hier meist fündig.

back-to-topWichtige Links zum Thema

back-to-topSonstiges
Nicht eingehen werde ich auf
  • wie man Powershell und den Paketmanager aktualisiert
  • Sicherheitsüberlegungen im Active-Directory, insbesondere den DCs, den verwendeten Verzeichnissen, Sicherheitseinstellungen und Verfahren
  • wie man GPOs erstellt und zuordnet
  • allgemeiner Powershell-Syntax
  • wie man WSMAN und Remote-Powershell richtig und sicher konfiguriert - (Für Fortgeschrittene und Interessierte sei hier aber auf das dsccommunity-Modul WSManDsc verwiesen: https://github.com/dsccommunity/WSManDsc/wiki )

back-to-topVorbereitungen

back-to-topEventlog-Archivierung aktivieren
Zunächst benötigt man eine GPO zum Aktivieren der Eventlog-Archivierung. Für jedes zu archivierende Eventlog müssen zwei Einträge aktiviert werden. Achtung: die deutschen Beschreibungen der GPOs sind etwas verwirrend.

Durch diese Einstellung wird das Protokoll, wenn es voll ist eine Protokolldatei im dem Präfix "Archive-" kopiert. man findet sie dann unter C:\Windows\System32\winevt\Logs\

back-to-topErforderliche Module installieren
Auf den beteiligten Rechnern (die Zielrechner und der Rechner, von dem aus die DSC gepusht wird) müssen dann die passenden Powershell-Module installiert werden:
Wenn man will, kann man zuvor das Repository PSGallery als Vertrauenswürdig einstufen (Set-PSRepository). Dann gibt es keine Nachfragen beim Aufruf von Install-Module.

back-to-topDas DSC-Script


Das eigentliche Skript enthält zwei Bereiche. Zunächst wird die eigentliche DSC-Konfiguration (Configuration) beschrieben. Dann wird diese Konfiguration auf die Zielrechner angewendet. Kurz zusammengefasst passiert folgendes:
  1. ein Konfigurations-Objekt wird erstellt
  2. die Zielrechner (Nodes) werden definiert
  3. DomainControllerConfig erstellt eine.mof Datei für jeden node
  4. Start-DscConfiguration führt (remote per CIM-Session auf dem Ziel-node) die eigentliche DCS Konfiguration aus.


Wenn man versucht, die DSC-Configuration mit sinnvollen Bezeichnern zu erstellen, bekommt man nebenbei einen schön lesbaren Code. Einige Bemerkungen zur Konfiguration:
back-to-topNTFS-Rechte
https://github.com/dsccommunity/cNtfsAccessControl
Hier muss man die Namen der FileSystemRights Enum verwenden (https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontro ..) Es empfiehlt sich, das Ergebnis im Explorer im Reiter Sicherheit zu kontrollieren! Für Lese&Schreibzugriff beispielweise genügt "Write" natürlich nicht.

back-to-topScheduledTask
siehe https://github.com/dsccommunity/ComputerManagementDsc/wiki/ScheduledTask
Gibt man keine Credentials (ExecuteAsCredential) an, wird das Lokale System verwendet.

back-to-topWas macht Start-DscConfiguration?
nun, es startet einen DSC-"Konfigurationlauf" face-smile Dazu sucht es im angegebenen Pfad (-Path) eine passende Konfigurationsdatei (computername.mof) aus. Über -CimSession wird das Ganze auf dem Remote-Rechner ausgeführt. Im -Path liegen die Konfigraionsdateien für alle Nodes. Es wird aber immer nur die passende Datei verwendet. Auch wenn die hostnamen in den meisten Situationen Genüge würde ich der Vollständigkeit und Sicherheit halber immer den FQDN des Nodes verwenden (also DomainControllerConfig -TargetNode full.qualified.domain.name.tld). Dann werden die mof-Dateien auch so benannt.

back-to-topZum Schluss: Eventlogs einsammeln

Zum Schluss braucht man noch ein Skript, um die Eventlogs einzusammeln. Das hat jetzt nichts mit DSC zu tun, fehlt aber noch, damit das Ganze rund ist. Das Skript lässt man dann per geplantem Task regelmäßig laufen.


back-to-topSchlussbemerkung

Viel Spaß beim basteln. So wie hier beschrieben wird man das kaum 1:1 umsetzen aber man hat per DSC die Mittel zur Hand, auch komplexe Konfigurationsaufgabe umzusetzen.

Content-Key: 1464094977

Url: https://administrator.de/contentid/1464094977

Printed on: February 8, 2023 at 12:02 o'clock