Eventlog per Powershell remote auslesen und filtern

0

Wer eine größere Domänen Umgebung ohne SIEM betreibt, weiß wie Aufwendig es ist remote den Eventlog von mehreren Systemen auf das vorkommen eines bestimmten Log-Eintrages hin zu untersuchen.

Ein einfacherer Weg, wenn auch nicht ganz ohne Vorbedingungen, ist die verwendung der Powershell. Dazu muss auf dem abzufragenden Systeme jedoch PSRemoting aktiviert sein. Dies kann entweder auf dem Zielsystem selber erfolgen

Enable-PSRemoting -force

oder Remote mittels psexec.

psexec \[computer name]-u [admin account name]-p [admin account password]-h -d powershell.exe "enable-psremoting -force"

Ist die Aktivierung erfolgt, so kann mit dem Commandlet Get-Eventlog der Eventlog eines remote Systems abgefragt werden.

Import-Module ActiveDirectory
invoke-command {get-eventlog -LogName Security } -ComputerName Computername1

Für eine gezielte Eventlog-Suche bietet es sich an, die Eventlogs vorzufiltern:

Import-Module ActiveDirectory
invoke-command {get-eventlog -LogName Security -After (Get-Date).Adddays(-1) | where { $_.InstanceId -EQ 0 }} -ComputerName Computername1

Es ist natürlich auch möglich, alle DCs auf das vorkommen gewisser Eventlogs hin zu untersuchen. Unter Windows 2008 R2 dokumentiert zum Beispiel das Security-Event 4726 das Löschen eines AD-Objektes.

Import-Module ActiveDirectory
$PCList=Get-ADDomainController -Filter * | Select-Object name

foreach($name in $PCList)
{
   invoke-command {get-eventlog -LogName Security -After (Get-Date).Adddays(-1) | where { $_.InstanceId -EQ 4726 }} -ComputerName $PCList.name
}

Zum Testen kann so ein Befehl auch auf einen einzelnen Rechner bzw. Domain-Controller reduziert werden bis man sicher ist, dass die Filterung wie gewünscht funktioniert.

$PCList=Get-ADComputer -Filter *|where {$_.Name -eq "ABC***"} | Select-Object Name

$PCList=Get-ADDomainController -Filter * |where {$_.Name -eq "Server1"} | Select-Object Name

Sicherheit von PSRemoting

Bezüglich der Sicherheit von PSRemoting empfiehlt es sich die beiden verlinkten Seiten unter Links zu lesen, da PSRemoting gegen Domänen-Mitgleider anders Verhält als bei nicht Domänen Mitglieder.

"When using Kerberos authentication in a domain, Windows PowerShell knows that it can trust the other computer because the domain controller is capable of verifying that system’s identity. When not in a domain environment, Windows PowerShell has no way of knowing if the system you’re trying to connect to is a malicious system spoofing as a legitimate computer. […] Kerberos protocol will only work with computer names, so Windows PowerShell will default to NTLM authentication any time an IP address is used." (Quelle)

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

Antworten