Die Logfiles unseres Servers sind der Dreh- und Angelpunkt einer Analyse, wenn es zu Problemen kommt. Unter einem Windows Server ist die Auswertung der Protokolle aber häufig umständlich. Mit der PowerShell deines Windows-Servers verarbeitest du die Log-Einträge direkt in der Konsole oder in deinen Analyse-Scripten.
Welche Log file- bzw. Protokoll-Dateien gibt es auf einem Windows Server?
Die Log-Einträge auf deinem Windows Server werden in unterschiedliche Protokoll-Dateien eingetragen. Es gibt fünf Kategorien. Die wichtigsten drei sind sind die folgenden systemeigenen Windows-Protokolle:
- Das Anwendungsprotokoll
- Das Securityprotokoll
- Das Systemprotokoll
Daneben kannst du selbst weitere Protokolldateien erstellen, in denen bestimmte Log-Einträge abgespeichert werden sollen.
Wie du siehst, ist es sehr schwer hier den Überblick zu behalten. Viele Administratoren von Servern mit Microsoft Windows Betriebssystemen vernachlässigen daher häufig den regelmäßigen Check ihrer Log-Dateien. Das kann unter Umständen zu einem Sicherheitsproblem werden.
Mit Hilfe von regelmäßigen Logfile-Auswertungen kannst du nicht nur Fehleranalysen durchführen und so zum Beispiel Skript-Fehler, fehlerhafte Prozesse, Shutdowns, Reboots etc. diagnostizieren, du kannst auch sicherheitsrelevante Ereignisse, wie unberechtigte Login-Versuche per Remote Desktop schneller entdecken.
Selbstverständlich lassen sich die Log-Einträge z.B. mit Skripten gezielt über die Kommandozeile auswerten. Eine komfortable Möglichkeit dafür bietet dir die Windows PowerShell. Denn bei der Windows PowerShell handelt es sich um ein Framework, das speziell für die Automatisierung, Konfiguration und Verwaltung von Windows-Systemen entwickelt wurde. Die zentralen Bestandteile sind ein Interpreter für die Kommandozeile sowie eine Skript-Sprache.
Mit Cmdlets kannst du die neusten Log-Einträge anzeigen lassen
Der Zugriff auf die System- und Anwendungsprotokolle gelingt dir in der Windows PowerShell mit dem Cmdlet „Get-EventLog“.
MSH-Befehle heißen Commandlets oder kurz: Cmdlets und enthalten immer drei Teile:
- Ein Verb
- Ein Substantiv
- Einen Parameter
Wenn du beispielsweise nur die letzten Einträge aus einem bestimmten Protokoll anzeigen möchtest, verwendest du folgende Kommando-Syntax:
Get-Eventlog [LogName] –Newst [Anzahl]
Ersetzen [LogName] durch ein Ereignisprotokoll (z.B. „System“ oder „Application“) und [Anzahl] durch die Anzahl der Log-Einträge. Wenn du beispielsweise die neusten fünf Einträge aus dem System-Logfile abfragen möchtest, nutze folgenden Befehl:
Get-EventLog System -Newest 5
Wenn du nicht nur die letzten Beiträge sehen möchtest, sondern alle Beiträge ab einem bestimmten Zeitpunkt (z.B. nach Auftreten eines Fehlers), verwendest du den Zeit-Parameter „-After“. Folgendes Kommando zeigt beispielsweise alle Einträge in das System-Log an, die nach 11:00 Uhr aufgetreten sind:
Get-EventLog System –After 11:00:00
Nützliche Ereignis-IDs aus dem Systemprotokoll
Ereignis-ID | Protokolliert wird: |
6005 | dass der Ereignisprotokollierdienst gestartet wurde |
6006 | dass das System fehlerfrei heruntergefahren wurde |
6008 | dass das System fehlerhaft heruntergefahren wurde |
6009 | diese ID wird bei jedem Start protokolliert und zeigt die Betriebssystemversion, die Build-Nummer, das Service-Pack-Level und sonstige relevante Systeminformationen an |
4625 | Fehlerhafte RDP Anmeldung |
4647 | Windows Abmeldung nicht abbrechen |
4768 | Anfrage TGT |
1074 | Shutdown |
6008 | Bluescreen (The previous shutdown was unexpected) |
Befehl | Beschreibung |
wevtutil qe system /rd:true /f:text /q:*[System[(EventID=1074)]] | Listet die "Shutdowns" in Textform auf |
wevtutil qe system /rd:true /f:text /q:*[System[(EventID=1074)]] | Listet die "Shutdowns" auf |
wevtutil qe System /f:text /q:"*[Security[(EventID=4624)]] | Listet korrekte und fehlerhafte RDP Anmeldungen auf |
wevtutil qe System /f:text /q:"*[Security[(EventID=4625)]] | geeignet um RDP Bruteforce zu erkennen |
wevtutil qe Security /c:10 /rd:true /f:text | Listet die letzten 10 Sicherheitsmeldungen auf |
wevtutil qe Security /f:text /q:"*[Security[(EventID=4768)]] | Anfrage TGT auflisten |
wevtutil qe system /c:10 /rd:true /f:text | Listet die letzten 10 System-Ereignisse auf |
wevtutil qe security /c:10 /rd:true /f:text | Listet die letzten 10 Sicherheits-Ereignisse auf |
powershell -c "& " | PowerShell listet alle Sicherheitsmeldungen auf |
get-eventlog -logname Application -newest 50 | where-object { $_.entrytype -eq „error“ } | Listet die letzten 50 Fehler unter Anwendungen auf |
powershell -c "& ;}" | PowerShell listet alle Sicherheitsmeldungen auf |
wevtutil qe security /c:1000 /rd:true /f:text|findstr 4625 | Listet die letzten 100 fehlerhafte RDP Anmeldungen auf |
Hinweis:
Bei der Formulierung von Cmdlets brauchst du die Groß-und-Kleinschreibung nicht beachten, sie spielt keine Rolle.
Das Dateiformat von Protokollen
Protokolldateien auf Windows-Systemen sind in der Regel nicht nur unübersichtlich, sondern es gibt auch unterschiedliche Datei-Formate. Während bei älteren Windows-Versionen das EVT-Format zum Einsatz kam, liegen die Protokoll-Dateien von aktuellen Windows-Versionen im EVTX-Format vor.
Für die Konvertierung und Auslesen steht dir das Konvertierungs-Tool wevtutil.exe zur Verfügung. Wenn du das Tool wevtutil.exe ausführen möchtest, solltest du allerdings über fortgeschrittene Kenntnisse in der Administration von Windows-Betriebssystemen verfügen!
MMC (Microsoft Management Console) - die Lösung für Einsteiger und Fortgeschrittene
Für alle, die sich noch nicht so gut in der Administration ihres Windows Servers auskennen, hat Microsoft eine alternative Lösung: die Microsoft Management Console oder kurz: MMC, eine grafische Benutzeroberfläche zur Verwaltung deines Windows-Servers.
Um die MMC von Microsoft aufzurufen, gehe wie folgt vor:
- Öffnen mit der Tastaturkombination [Windows]+R das Ausführen-Fenster
- Gib nun mmc ein
- Nun erhältst du eine Verwaltungskonsole, die du selbst mit Snap-Ins - ganz nach deinen Bedürfnissen - einrichten kannst.
- Unter "Datei" findest du den Menüpunkt Snap-In hinzufügen/entfernen. Wenn du deine Protokoll-Dateien checken möchtest, brauchst du lediglich das Snap-In Ereignisanzeige zu starten. Wähle das Snap-In aus und füge es der Ansicht hinzu.
- Klicke auf Windows-Protokolle und öffne den entsprechenden Protokoll-Ordner, z.B. System. Nun erhältst du eine Übersicht aller Log-Dateien. Log-Dateien, die Warnhinweise oder Fehler enthalten sind mit einem entsprechenden Icon gekennzeichnet.
- Die Protokolldateien sind so noch sehr unübersichtlich und eine Analyse dementsprechend zeitaufwändig. Deshalb solltest du eine Benutzerdefinierte Ansicht erstellen und die Filterfunktionen nutzen. Hier kannst du mit einem Klick definieren, welche Art von Fehlermeldungen du angezeigt bekommen möchtest, welche Log-Dateien analysiert werden sollen uvm.
Wie du siehst, ist die Log-File-Analyse mit dem MMC für Einsteiger und Fortgeschritten sehr viel einfacher und komfortabler als der professionelle Log-File-Check via Windows PowerShell.
Weitere Informationen zur Microsoft PowerShell und Commandlets findest du hier:
- Wikipedia - PowerShell
- msdn.microsoft.com - Cmdlet Overview
- GitHub, Inc. - PowerShell
- It-Visions.de: Erklärung des Begriffs: Commandlet (Cmdlet)
Bildnachweis: Fotolia, Lizenz: GoDaddy