Einblicke in (Security)-Themen ausm tiefen Wald

Monat: Juli 2024

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.

Freischaltung von authentifiziertem SMTP in Microsoft Exchange für einzelne Mailboxen

Wer auf Microsoft Exchange setzt, der nutzt in der Regel die Clients wie Outlook, um ein- und ausgehende Mails zu verarbeiten. Es gibt aber auch durchaus Dienste oder Anwendungen, die gerne Mails verschicken würden, aber nur die offenen Protokolle wie SMTP (Auth) sprechen. Dann steht man vor dem Dilemma, dass man das Protokoll freischalten will/muss, aber dies nicht für die gesamte Domäne/Tenant machen möchte.

Hier hilft die Möglichkeit das Protokoll auf Mailbox-Ebene zu setzen, denn das ist möglich. Aber: wer jetzt glaubt mit logischem Denken ins Exchange Admin Center Portal zu navigieren und dort die Option zu finden, der wird erstaunt sein, denn dort gibt es diese Option nicht:

Hier muss man in das Admin Center von Microsoft 365 direkt gehen (Bereich Active Users), dort findet sich die gleiche Möglichkeit zur Einstellung, allerdings diesmal mit der zusätzlichen Option “Authenticated SMTP”:

Zugänge mit Passwörtern auslesen

Auf der CMD Konsole lassen sich mit dem Befehl CMDKEY alle unter Windows gespeicherten Zugänge und Kennwörter auslesen.

Folgendes Beispiel verdeutlicht dies:

cmdkey /list | Select-String 'Target: TERMSRV' | ForEach-Object { cmdkey /delete:($_ -split ' ')[-1] }

Hiermit werden alle Zugänge gelöscht, die dem Kriterium TERMSRV entsprechen.

Zum Probieren einfach einmal den Befehl

cmdkey /list

alleine ausführen.

Microsoft Viva Dienste wie Insights, Learning oder Digest für alle Benutzer abschalten

Man ist es ja mittlerweile gewohnt, dass neue Dienste aus dem Hause MS direkt angeschaltet werden, also ohne Opt-In. Das führt dann meist zu Verdruss bei Nutzern, die wiederum ihren Frust dann an der IT Abteilung auslassen 😉

Wenn beispielsweise jemand in Outlook auf eine E-Mail einen Like abgibt (ja irgendwo ist das möglich), dann erhält man später als Absender der besagten E-Mail eine E-Mail von Microsoft mit dem Subject “Täglicher Reaktionsdigest”. Diese Art der Benachrichtigung lässt sich nur per Benutzer einzeln abschalten. Oder halt mittels PowerShell wie folgt:

Set-MyAnalyticsFeatureConfig –Identity john@example.org -PrivacyMode opt-out

Um dies für alle Benutzer in Form einer Schleife (ForEach Loop) umzusetzen, schreibt man Folgendes:

Get-Mailbox -ResultSize Unlimited | ForEach-Object {
Set-MyAnalyticsFeatureConfig -Identity $_.PrimarySmtpAddress -Feature digest-email -IsEnabled $false
}

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.

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