Einblicke in (Security)-Themen ausm tiefen Wald

Kategorie: Exchange Online

Absender in Exchange Shared Mailbox blockieren mittels PowerShell

Wer regelmäßig mit dem Outlook Client arbeitet und eine Exchange Mailbox dabei eingebunden hat, wird irgendwann auch mal mit einer Besonderheit konfrontiert werden.

Denn wenn man eine weitere Mailbox einbindet (beispielsweise für einen Vorgesetzten, also die Berechtigung “send on behalf”, “Senden im Namen von”) erhält, so wird man sich wundern, dass man keine Junk-Mail Konfigurationen für diese Mailbox vornehmen kann/darf.

Will man also beispielsweise Absender blockieren, so kann man dies zwar im Outlook Client mittels GUI vornehmen, dies gilt jedoch immer nur für die eigene Mailbox. Eine Pflege von gesperrten Absendern für eine “verwaltete” Mailbox geht nicht mehr über die GUI, sondern nur über zwei Wege: OWA (Outlook Web Exchange) oder PowerShell. Ich bevorzuge PowerShell. Und das geht dann recht komfortabel mit folgendem Befehl:

Connect-ExchangeOnline

Set-MailboxJunkEmailConfiguration "a.paradise@excample.com" -BlockedSendersAndDomains @{Add="spammer@bigpain.com"}

Natürlich kann man auch vertrauenswürdige Absender hinterlegen. Dazu tauscht man nur den Parameter aus, wie folgt:

Set-MailboxJunkEmailConfiguration "a.paradise@excample.com" -TrustedSendersAndDomains @{Add=”nopain.com”,”nice@nopain.com”}

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”:

Regeln von Mailboxen in Exchange Online

Wer sich schon einmal gewundert hat, dass es in der Verwaltung von Exchange Online Mailboxen trotz fehlender Dauerweiterleitungen dennoch Anomalien gibt, dem sei geholfen, einmal in die Regeln einer User-Mailbox selbst hineinzuschauen.

Das geht mittels Delegation natürlich problemlos, hat aber den Nachteil, dass man mitunter warten muss, bis Exchange Online das verdaut hat.

Schneller geht es, wenn man direkt mittels PowerShell in die Mailbox-Regeln des jeweiligen Users reinschaut. Das geht schnell und komfortabel wie folgt:

Zuerst listet man sich alle Regeln auf:

Get-InboxRule -Mailbox e.xample@domain.com

Dann nimmt man sich die ID der jeweiligen Regel und schaut in die Details:

Get-InboxRule –Mailbox e.xample@domain.com -Identity "464563436546544" | FL

Exchange Online – Quarantäne Mails löschen

Arbeitet man innerhalb von Microsofts Exchange Online mit der Quarantäne, so wird man recht schnell feststellen, wie mühselig die GUI reagiert, immer wieder Reloads durchführt und einem das Leben zur “Hölle” machen kann. Zudem stellt man fest, dass bei dem “Freilassen” von Mails (“release”), diese weiterhin dort angezeigt werden und somit ein Ansichtsfilter von Nöten ist, den man jedes Mal wieder aufs Neue einstellen muss.

Abhilfe schafft hier die Nutzung einiger PowerShell-Scripte, die man nach Belieben für seine Zwecke anpassen kann. Denk dran, die #-Zeilen sind nur Kommentare 😉

#Zunächst verbindet man sich mit Exchange Online

Connect-ExchangeOnline

#Nun holt man sich die freigelassenen Mails

Get-QuarantineMessage -ReleaseStatus Released

Nun muss man sich alle diese Mails, die als lange Liste in der Ausgabe erscheinen, in eine Variable packen und mittels Piping nur die IDs selektieren, wie folgt:

$ids = Get-QuarantineMessage -ReleaseStatus Released | select -ExpandProperty Identity

Das ist der Grundbefehl. An dieser Stelle kann man auch weitere Filter setzen, so dass man die Art der Mails weiter eingrenzt. Dies geschieht mit der Option:

-QuarantineTypes

Das sieht dann wie folgt aus:

$ids = Get-QuarantineMessage -QuarantineTypes Phish -ReleaseStatus Released | select -ExpandProperty Identity

Hier gibt es dann folgende Optionen:

Malware

Phish

Spam

HighConfPhish

Bulk

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