Einblicke in (Security)-Themen ausm tiefen Wald

Kategorie: Active Directory

Suche und Vergleich von AD-Gruppenzugehörigkeiten und Nicht-Zugehörigkeiten

Oftmals hangelt man sich durch AD-Gruppen, um herauszufinden ob Einträge dort enthalten sind. Dabei kommt man immer wieder an seine Grenzen, wenn es darum geht, die Zugehörigkeiten zu einer Active Directory Gruppe ausschließen. Also zu prüfen, ob jemand in einer Gruppe explizit nicht enthalten ist.

Hierzu kann man sich mittels Powershell auch Listen bedienen, die in Programmiersprachen dann als Arrays verfügbar sind. Hier ist das Stichwort “hashmap”.

Als erste Maßnahme sollte man sich mit dem jeweiligen AD verbinden, wenn es AzureAD, bzw. jetzt EntraID, heißt:

Connect-AzureAD

Dann sucht man sich die AD-Gruppen IDs raus, die man prüfen will, bzw. definiert sie:

$groupids = @("Gruppen ID 1", "Gruppen ID 2") 

Nun definiert man seine Hash Map:

$userht = @{}

Und ruft dann alle Benutzer ab und pipet das Ergebnis dann an eine foreach-Schleife, die alle IDs der Benutzer in die Hash Map kippt:

Get-AzureADUser -all $true | foreach-object {$userht.Add($_.ObjectId,$_)}

Mit dem Zwischenschritt eines Counts sieht man die gesamte Anzahl wie folgt:

$userht.count

Nun geht man die Gruppen IDs einzeln durch und holt sich alle Benutzer, die in diesen Gruppen enthalten sind, und löscht einzeln mittels foreach die Benutzer aus der Hash Map raus.

ForEach($id in  $groupids){ 

Get-AzureADGroupMember -all $true -ObjectId $id | foreach-object { $userht.Remove($_.ObjectId) }

}

$userht.count

$userht.values > C:\temp\export.csv

Ergebnis sind dann alle Benutzer aus der ursprünglichen Abfrage minus der Mitglieder in den Vergleichsgruppen. Übrig sind also alle Einträge, die nicht in den Vergleichsgruppen enthalten sind.

Abgelaufene AD-Konten in Entra ID

Wer ein on-premise AD betreibt, das in die Cloud synct, also sich mit dem (früheren AzureAD) Entra ID verschmelzt, der sollte tunlichst darauf achten, dass abgelaufene Konten aus dem on-premise AD dann plötzlich wieder nutzbar sind im Entra ID.

Dieser Zusammenhang besteht, wenn das Attribut expiration-date gefüllt ist, aber der Account weiterhin auf “enabled” steht. Da es im Entra ID kein expiration-date gibt, werden also bei einem Sync-Vorgang geglaubte deaktivierte Konten “plötzlich” wieder aktiv.

Um hier eine Lösung zu finden, sollten per PowerShell alle Konten, die ein Ablaufdatum (expiration-date) in der Vergangenheit haben, tunlichst deaktiviert werden. Das geht wie folgt:

Search-ADAccount -AccountExpired -UsersOnly

Hiermit kann man sich die abgelaufenen Konten heraussuchen und manuell prüfen, ob diese weiterhin auf “enabled” stehen.

Ist man sich sicher, dass all diese Account auch deaktiviert werden können/sollten, dann pipt man das Ergebnis an den Befehl disable-adaccount, wie folgt:

Search-ADAccount -AccountExpired -UsersOnly | Disable-ADAccount

Man kann natürlich noch tiefergehend graben, indem man folgende Suche verwendet:

Get-ADUser -Filter {Enabled -eq $true} -properties AccountExpirationDate | Where-Object{$_.AccountExpirationDate -lt (Get-Date) -and $_.AccountExpirationDate -ne $null} | select-object SamAccountName, AccountExpirationDate

Auch hier kann man sich dann mittels Piping das Disablen hinten dran hängen.

An welchem DC Server bin ich angemeldet?

Die Anmeldung eines Clients am Active Directory findet sich in der Umgebungsvariable %logonserver% auf der Konsole:

echo %logonserver%

Präsentiert von WordPress & Theme erstellt von Anders Norén