Exchange AD Split Permissions uden fortrydelse

Selv organisationer, der har flyttet alle deres postkasser til skyen, kører ofte stadig Exchange-servere on-premises, og dermed en undervurderet sikkerhedsrisiko for Active Directory. Modellen »AD Split Permissions« fratager Exchange de brede AD-rettigheder, som angribere kan udnytte til at kompromittere hele domænet. Indtil nu er udbredelsen først og fremmest strandet på de procesændringer, modellen pålægger administratorerne. Denne artikel viser, hvordan du kommer elegant over netop den forhindring: et script, der målrettet gentildeler de tabte AD-rettigheder, men kun på de relevante OU'er, så det vante admin-workflow bevares, mens du stadig får den fulde sikkerhedsgevinst.

Exchange AD Split Permissions uden fortrydelse

TLDR: hvad hvis vi fjerner ulemperne?

Jeg har fundet en måde at gentildele AD- og RBAC-rettigheder præcis dér, hvor Exchange-brugere, -grupper og -kontakter ligger, uden at det kræver ændringer for administratorer eller identity management-systemer. Efter min erfaring har netop den friktion været den primære blokering for de fleste virksomheder. Og vi beholder stadig sikkerhedsgevinsten mod lateral movement og domænekompromittering.

Active Directory

Det sker i tre trin:

  1. Implementér AD split permission-modellen
  2. Giv Exchange-serverne de tabte AD-rettigheder tilbage, men kun på de relevante OU'er
  3. Tildel Exchange RBAC for at genaktivere de manglende PowerShell-cmdlets

Alt sammen via Microsofts vejledning, AD-ACL'er eller Exchange RBAC-tildelinger.

En oplægsholder sidder foran en bærbar computer og forklarer et slide med titlen Step 1: Active Directory Permissions fra glueckkanja. Slidet gennemgår, hvordan man implementerer Microsoft Exchange AD Split Permissions, herunder PowerShell-kommandoer til at oprette en delegeringsgruppe (New-ADGroup, Add-ADGroupMember) og tildele rettigheder via scriptet Add-ExchangeADSplitPermissionOnOU.ps1.
Webcast: Exchange AD Split Permissions uden fortrydelse. En trin-for-trin-implementeringsguide

Hvorfor er det relevant (nu)?

Modellen er stort set blevet overset eller ignoreret, siden den kom med Exchange 2010 SP1. Men standardmodellen med delte rettigheder udgør en stor sikkerhedsrisiko for en overtagelse af Active Directory. Kombineret med at Exchange de seneste år har været berygtet for remote exploits, er det på tide at handle.

Problemet stammer fra rettigheder, der tildeles på roden af et domæne og nedarves gennem hele domænet.

  • ændre rettigheder på brugere og grupper (reelt fuld adgang)
  • ændre gruppemedlemmer
  • nulstille adgangskoder på brugere
  • oprette/slette brugere og grupper

Rettigheder

Kun visse højt privilegerede Tier 0-brugere og -grupper er beskyttet af AdminSDHolder-processen (attributten admincount=1), og i mange miljøer findes der ubeskyttede brugere eller grupper, som kan gøre det muligt at kompromittere domænet og/eller skoven eller i det mindste forvolde alvorlig skade.

Fremtrædende eksempler:

  • Entra Connect Sync-kontoen, når Password Hash Sync anvendes
  • Standardgrupper
  • Ubeskyttede brugerdefinerede grupper eller admin-/servicekonti
    • Skriverettigheder på GPO'er (som gælder for domænecontrollere)
    • Styring af adgang til AD-backups, backupserver, PKI-skabeloner, hypervisor, ...

Det er meget svært at inddæmme alle disse nuværende og fremtidige potentielle angrebsveje bagudrettet. For den brugerdefinerede _ADM-OU kan du slå ACL-nedarvning fra, men de fleste standardobjekter må ikke flyttes fra standard-OU'en Builtin eller containeren Users og forbliver dermed sårbare.

Det er langt bedre at fjerne de kraftfulde rettigheder fra roden, hvilket sker ved at implementere Active Directory split permissions-modellen. Configure Exchange Server for split permissions | Microsoft Learn

Og Microsoft er enig: “…encouraged to implement Active Directory split permissions” Active Directory Hardening Series - Part 7 – Implementing Least Privilege | Microsoft Community Hub

Men hvorfor gør ingen det?

Da split permissions ikke var tilgængelige før Exchange 2010 SP1, havde alle for længst accepteret status quo, og det ser ud til, at sikkerhedsteams ikke fik skubbet modellen igennem, da den først fandtes.

Og den ville have tvunget ændringer igennem i admin- og IDM-processer, som at oprette brugere eller distributionslister i AD først og derefter bruge Exchange til at “mail enable” dem.

Info: Følgende cmdlets vil ikke længere være tilgængelige eller fungere: Add-DistributionGroupMember, New-DistributionGroup, New-Mailbox, New-MailContact, New-MailUser, New-RemoteMailbox, Remove-DistributionGroup, Remove-DistributionGroupMember, Remove-Mailbox, Remove-MailContact, Remove-MailUser, Remove-RemoteMailbox, Update-DistributionGroupMember, Add-ADPermission, Remove-ADPermission

Eksempler på tilpasning:

  • New-Mailbox (hvor Exchange skriver til AD) ville blive:
    • New-ADUser (hvor adm.jdoe skriver til AD)
    • Enable-Mailbox
  • Add-ADPermission til SendAs-rettigheder ville skulle udføres via AD-brugere og -computere under fanen Sikkerhed, og det kræver ofte yderligere AD-rettigheder til almindelige administratorer.

Vis mig den her no-regrets-mulighed

Disclaimer: Læs og forstå de følgende links og artikler fuldt ud, afprøv det i et testmiljø først, og sørg for, at AD-backups er aktuelle, og at genoprettelsesprocedurer er på plads.

Kortlæg den nuværende brug

Du bør først undersøge, hvilke af de berørte cmdlets der bruges på hvilke OU'er:

$CsvPath = "C:\temp\SplitPermissionAdminAuditLog.csv"
$Cmdlets = "Add-ADPermission","Remove-ADPermission","New-DistributionGroup","Remove-DistributionGroup","Add-DistributionGroupMember","Update-DistributionGroupMember","Remove-DistributionGroupMember","New-Mailbox","Remove-Mailbox","New-RemoteMailbox","Remove-RemoteMailbox","New-MailUser","Remove-MailUser","New-MailContact","Remove-MailContact"
Search-AdminAuditLog -ResultSize 99000 -Cmdlets $Cmdlets | Select-Object RunDate,Caller,ObjectModified,CmdletName,@{Name='CmdletParameters';Expression={[string]::join(",", ($\_.CmdletParameters))}},succeeded,error | Export-Csv -Path $CsvPath -Delimiter ";" -Encoding Unicode -NoTypeInformation

Hurtig analyse af caller og cmdlets:

$CSVs = Import-Csv -Path $CsvPath -Delimiter ";"
$CSVs | Group-Object Caller
$CSVs | Group-Object CmdletName

Analysér CSV-filen for at finde ud af, hvor AD-rettighederne bliver nødvendige. Du kan eventuelt optimere ved at flytte alle Exchange-relevante grupper ind i dedikerede OU'er.

Aktivér split permissions-modellen

Følg Microsofts vejledning "Switch to Active Directory split permissions" i Configure Exchange Server for split permissions | Microsoft Learn(IKKE RBAC split permissions)

Kort fortalt fjerner den de farlige rettigheder fra gruppen "Exchange Windows Permissions" og fjerner samtidig Exchange som medlem af gruppen.

Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareAD /ActiveDirectorySplitPermissions:true
Info: For at rulle tilbage bruger du blot /ActiveDirectorySplitPermissions:false

Tildel AD-rettigheder

Opret en brugerdefineret AD-gruppe, og gør Exchange-serverne til medlemmer.

# adjust OU Path first!
New-ADGroup -Name "AD_Custom Exchange Split permissions replacement" -GroupCategory Security -GroupScope DomainLocal -Path "OU=Rights,OU=Groups,OU=T1,OU=_ADM,$((Get-ADDomain).DistinguishedName)" -Description "replaces the permissions lost by split permissions on relevant OUs"
Add-ADGroupMember "AD_Custom Exchange Split permissions replacement" -Members "Exchange Trusted Subsystem" # reboot Exchange servers for permissions via group to work

Jeg har lavet et script, der gør det nemt at delegere AD-rettighederne pr. use case.

Uden disse rettigheder ville Exchange-serveren få fejlen “INSUFF_ACCESS_RIGHTS” fra AD.

Download Add-ExchangeADSplitPermissionOnOU.ps1 fra glueckkanjas GitHub

Scriptet kan tildele følgende PermissionTypes:

CreateUserAndContact
Create/delete, ResetPassword og WriteAllProperties for brugere og kontakter
Exchange-cmdlets: `New-Mailbox`, `New-RemoteMailbox`, `New-MailUser`, `New-MailContact` og tilsvarende `Remove-*`

GroupManage
Opret/slet grupper, ændr medlemmer
Exchange-cmdlets: `New-DistributionGroup`, `Remove-DistributionGroup`, `Add-DistributionGroupMember`, `Update-DistributionGroupMember`, `Remove-DistributionGroupMember`
Desuden: brugere, der administrerer de DistributionGroups, de ejer, via EAC

UserSendAs
Ændr AD-rettigheder på brugere
Exchange-cmdlet: `Add-ADPermission`

GroupSendAs
Ændr AD-rettigheder på grupper
Exchange-cmdlet: `Add-ADPermission`

Sådan bruger du scriptet:

Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU <OU> -PermissionType <GroupManage|UserSendAs|GroupSendAs|CreateUserAndContact> -Trustee "AD_Custom Exchange Split permissions replacement" # For example
Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=ExchangeGroups,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType GroupManage -Trustee "AD_Custom Exchange Split permissions replacement" Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=ExchangeGroups,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType GroupSendAs -Trustee "AD_Custom Exchange Split permissions replacement" Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=Users,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType UserSendAs -Trustee "AD_Custom Exchange Split permissions replacement" Add-ExchangeADSplitPermissionOnOU.ps1 -TargetOU "OU=Users,OU=HQ,OU=Alderaan,$((Get-ADDomain).DistinguishedName)" -PermissionType CreateUserAndContact -Trustee "AD_Custom Exchange Split permissions replacement"

Tildel Exchange RBAC

Genaktivér parameteren -BypassSecurityGroupManagerCheck for cmdlet'erne Add-DistributionGroupMember og Remove-DistributionGroupMember:

New-RoleGroup -Name "SplitPermission Security Group Creation and Membership" -Roles "Security Group Creation and Membership" -Members "Organization Management","Recipient Management" -Description "Brings back -BypassSecurityGroupManagerCheck to Add-DistributionGroupMember, but also needs AD ACL for Exchange Server on target DLs"

Info: Ellers får du "-BypassSecurityGroupManagerCheck parameter is not available" eller "You don't have sufficient permissions. This operation can only be performed by a manager of the group"


Genaktivér New-Mailbox, New-RemoteMailbox, New-MailContact, Remove-... cmdlets med de nødvendige parametre:

New-RoleGroup -Name "SplitPermission Mail Recipient Creation" -Roles "Mail Recipient Creation" -Members "Organization Management","Recipient Management" -Description "Brings back New-Mailbox, New-RemoteMailbox, New-MailUser, New-MailContact and matching Remove-... cmdlets, but additionally Exchange needs AD ACL for Exchange Server on target OUs"

Konklusion

Jeg håber, at denne guide hjælper flere organisationer med at tage det vigtige skridt og sikre deres Active Directory mod kompromittering via Exchange. Med min erfaring fra implementeringer af Exchange AD Split Permissions-modellen hos flere kunder har jeg ikke stødt på problemer, og indførelsen er forløbet uden bump.

Jeg håber også, at Microsoft indfører en indbygget, OU-baseret tilgang til at opnå denne granularitet i stedet for den nuværende alt-eller-intet-model, hvilket ville gøre en bred udbredelse betydeligt lettere.

En bemærkning om AD Tiering: Log ikke på Exchange-servere med Domain Admin eller andre Tier 0-konti. Behandl Exchange-servere som Tier 1, og implementér AD Tiering hurtigst muligt. Som første skridt anbefaler jeg PingCastle eller Purple Knight til at vurdere jeres AD-sikkerhed og identificere control path-eksponeringer.

Lignende indlæg