​​​Exchange AD Split Permissions uden fortrydelser​

On-premises Exchange Server-installationer er stadig udbredte, også i organisationer, der har flyttet alle postkasser til skyen. De har fortsat vidtrækkende rettigheder i Active Directory, og derfor findes der som regel en oplagt angrebsvej til at kompromittere hele AD’et og dermed store dele af virksomhedens IT. Skiftet til den såkaldte »AD split permissions«-model fjerner de kritiske rettigheder, og jeg har udviklet en løsning, der fjerner de ulemper, som hidtil har forhindret udbredelsen.

​​​Exchange AD Split Permissions uden fortrydelser​

TLDR: hvad hvis vi fjerner ulemperne?

Jeg har fundet en måde at tildele AD- og RBAC-rettighederne igen der, hvor Exchange-brugerne, grupperne, kontakterne og så videre ligger. Dermed skal hverken administratorer eller identity management-systemer lægge om, og netop det har efter min erfaring været årsagen til, at de fleste virksomheder aldrig fik det implementeret. Samtidig beholder vi sikkerhedsgevinsten mod lateral movement og domænekompromittering.

Active Directory

Det opnås 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-cmdletter

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

Hvorfor er det vigtigt (nu)?

Emnet er stort set blevet overset eller ignoreret, siden det blev introduceret med Exchange 2010 SP1. Men standardmodellen med delte rettigheder udgør en betydelig sikkerhedsrisiko for overtagelse af Active Directory. Kombineret med at Exchange gennem de seneste år har været berygtet for remote exploits, er det på tide at handle.
Problemet stammer fra privilegier, der tildeles i 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

Permissions

Kun bestemte højt privilegerede Tier0-brugere og -grupper er beskyttet af AdminSDHolder-processen (attributten admincount=1), og i mange miljøer findes der ubeskyttede brugere eller grupper, som kan give mulighed for at kompromittere domænet og/eller skoven eller i det mindste forvolde alvorlig skade.

Fremtrædende eksempler:

  • Entra Connect Sync-kontoen, når der bruges PWHashSync
  • Standardgrupper
  • Ubeskyttede brugerdefinerede grupper eller admin-/servicekonti
    • Skriverettigheder på GPO’er (der anvendes på domænecontrollere)
    • Håndtering af adgang til AD-backups, backupserver, PKI-skabeloner, hypervisor, ...

Det er meget svært med tilbagevirkende kraft at inddæmme alle disse nuværende og fremtidige potentielle veje. For den brugerdefinerede OU _ADM kan du deaktivere ACL-nedarvning, men de fleste standardobjekter må ikke flyttes fra standard-OU’en Builtin eller containeren Users og forbliver sårbare.
Det er langt bedre at fjerne de vidtrækkende 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 er der ingen, der gør det?

Da split permissions ikke fandtes før Exchange 2010 SP1, havde alle på det tidspunkt affundet sig med situationen, og det ser ud til, at sikkerhedsafdelingerne ikke fik presset det igennem, da muligheden endelig var der.
Det ville også 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.

Cmdletter, der ikke længere er tilgængelige eller virker:
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å omlægning:

  • New-Mailbox (hvor Exchange skriver til AD) ville blive:
    • New-ADUser (hvor adm.jdoe skriver til AD)
    • Enable-Mailbox
  • Add-ADPermission for SendAs-rettigheder skulle udføres via Active Directory Users and Computers under fanen Security og krævede ofte yderligere AD-rettigheder til almindelige administratorer.

Vis mig no-regrets-løsningen

Ansvarsfraskrivelse: Læs og forstå de følgende links og artikler fuldt ud, afprøv først i et testmiljø, og sørg for, at AD-backups er aktuelle, og at der er etableret recovery-procedurer.

Kortlæg den nuværende brug

Du bør først undersøge, hvilke af de berørte cmdletter der er i brug 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 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 cmdletter:
$CSVs=Import-Csv -Path $CsvPath -Delimiter ";"$CSVs|group Caller$CSVs|group CmdletNameAnalyze the CSV for where AD permissions will be needed. Potentially optimize by moving all Exchange relevant groups into dedicated OUs.

Aktivér split permissions-modellen

Følg anvisningerne under “Switch to Active Directory split permissions” i Configure Exchange Server for split permissions | Microsoft Learn (IKKE RBAC split permissions)
Kort fortalt fjerner det de farlige rettigheder fra gruppen “Exchange Windows Permissions” og fjerner samtidig Exchange som gruppemedlem.
Setup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /PrepareAD /ActiveDirectorySplitPermissions:true
Brug blot dette for at rulle tilbage: /ActiveDirectorySplitPermissions:false

Tildel AD-rettigheder

Opret en brugerdefineret AD-gruppe, og gør Exchange-serverne til medlemmer.
tilpas OU-stien først!
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"

genstart Exchange-serverne, for at rettigheder via gruppen kan træde i kraft
Jeg har lavet et script, der gør det nemt at delegere AD-rettighederne pr. use case.

INFO: Uden disse rettigheder vil Exchange-serveren modtage fejlen “INSUFF_ACCESS_RIGHTS” fra AD.

Download Add-ExchangeADSplitPermissionOnOU.ps1 fra glueckkanja GitHub
Det kan tildele følgende PermissionTypes:

  • CreateUserAndContact
    • Create/delete, ResetPassword og WriteAllProperties for Users og Contacts
    • Exchange-cmdletter: New-Mailbox, New-RemoteMailbox, New-MailUser, New-MailContact og de tilsvarende Remove-*
  • GroupManage
    • Create/Delete Groups, Modify Member
    • Exchange-cmdletter: New-DistributionGroup, Remove-DistributionGroup, Add-DistributionGroupMember, Update-DistributionGroupMember, Remove-DistributionGroupMember
    • Yderligere use cases: brugere, der administrerer de DistributionGroups, de ejer, via https:///EAC
  • UserSendAs
    • Modfiy AD Permissions on Users
    • Exchange-cmdlet: Add-ADPermission
  • GroupSendAs
    • Modfiy AD Permissions on Groups
    • 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

f.eks.
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 cmdletterne 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 cmdletterne New-Mailbox, New-RemoteMailbox, New-MailContact, Remove-... 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 mange flere med denne vejledning tager det vigtige skridt og sikrer deres Active Directory mod kompromittering via Exchange. Jeg er endnu ikke stødt på problemer, hverken da jeg implementerede Exchange AD split permissions-modellen eller ved den omlægning, artiklen her beskriver, hos vores kunder.

Jeg håber, at Microsoft implementerer en indbygget måde at opnå denne granulære, OU-baserede tilgang på i stedet for den nuværende alt eller intet, så den kan blive udbredt.

Da AD Tiering ligger mig meget på sinde: Log desuden ikke på Exchange-servere med Domain Admin-konti (eller nogen anden Tier0-konto), men behandl dem som Tier1 fra nu af, og implementér AD Tiering hurtigst muligt. Som første skridt anbefaler jeg værktøjer som PingCastle eller Purple Knight til at vurdere jeres AD-sikkerhed og control paths.

Lignende indlæg