Outlook Kerberos Authenticatie Voor Exchange Verbindingen

💼 Management Samenvatting

Het inschakelen van Kerberos authenticatie voor Outlook-Exchange verbindingen zorgt voor een moderne, veilige authenticatiemethode die bescherming biedt tegen pass-the-hash aanvallen, credential theft en man-in-the-middle attacks die mogelijk zijn met het verouderde NTLM protocol.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
7/10
Implementatie
16u (tech: 8u)
Van toepassing op:
Microsoft Office 365 ProPlus
Microsoft Outlook 2016
Microsoft Outlook 2019
Microsoft Outlook 2021
Microsoft 365 Apps
Exchange Server 2016
Exchange Server 2019
Exchange Online

NTLM (NT LAN Manager) is een verouderd authenticatieprotocol met bekende beveiligingszwakheden. NTLM is kwetsbaar voor: **Pass-the-Hash aanvallen**: Aanvallers kunnen gestolen password hashes direct gebruiken zonder het wachtwoord te kraken. **Relay attacks**: NTLM authenticatie kan worden doorgestuurd naar andere systemen. **Geen mutual authentication**: De client verifieert niet de identiteit van de server, wat MITM-aanvallen mogelijk maakt. **Zwakkere encryptie**: NTLM gebruikt verouderde cryptografische algoritmes. **Geen single sign-on**: Gebruikers moeten vaker inloggen. Kerberos daarentegen biedt: **Ticket-based authenticatie**: Geen wachtwoorden over het netwerk. **Mutual authentication**: Zowel client als server verifiëren elkaar. **Sterke encryptie**: Moderne cryptografische standaarden (AES256). **single sign-on**: Naadloze gebruikerservaring binnen het domein. **Time-limited tickets**: Tickets verlopen automatisch, wat het risico van misbruik beperkt. **Centralized key distribution**: Active Directory KDC beheert alle authenticatie. Voor compliance met moderne security frameworks (BIO, ISO 27001, NIS2) en om te voldoen aan zero-trust principes, is het essentieel om af te stappen van NTLM en over te gaan op Kerberos authenticatie.

PowerShell Modules Vereist
Primary API: Registry / groep beleid
Connection: Lokale registry toegang of groep beleid Management
Required Modules: Windows PowerShell 5.1 of hoger

Implementatie

Deze beveiligingsmaatregel configureert de registry-instelling 'kerberosauthexchange' op waarde 1 in het Outlook Security-pad. Dit dwingt Outlook af om Kerberos te gebruiken voor authenticatie met Exchange Server in plaats van NTLM. De instelling wordt toegepast via het registry-pad HKCU:\Software\beleidsregels\Microsoft\Office\16.0\OUTLOOK\Security en is van toepassing op Office 2016 en nieuwer (inclusief Microsoft 365 Apps). Deze configuratie vereist dat de Exchange Server environment correct is geconfigureerd met Service Principal Names (SPNs) in Active Directory. Zonder correcte SPN-configuratie zal de Kerberos authenticatie falen en kunnen gebruikers geen verbinding maken met Exchange.

Vereisten

Voor het implementeren van Kerberos authenticatie voor Outlook-Exchange verbindingen zijn de volgende vereisten van toepassing:

  1. Microsoft Office 2016 of nieuwer (inclusief Microsoft 365 Apps voor Enterprise)
  2. Exchange Server 2016 of nieuwer, of Exchange Online
  3. Active Directory omgeving met correcte DNS-configuratie
  4. Service Principal Names (SPNs) correct geregistreerd in Active Directory voor Exchange services
  5. Administrator-rechten voor het wijzigen van registry-instellingen of groep beleid configuratie
  6. Windows PowerShell 5.1 of hoger voor geautomatiseerde implementatie
  7. Toegang tot het HKCU of HKLM registry hive (afhankelijk van user- of machine-level implementatie)
  8. Bij gebruik van groep beleid: toegang tot groep beleid Management Console (GPMC)
  9. Netwerktoegang van clients naar Domain Controllers voor Kerberos ticket requests (TCP/UDP 88)
  10. Gesynchroniseerde systeemtijd tussen clients en Domain Controllers (maximaal 5 minuten verschil)
  11. Optioneel: configuratiebeheer tool zoals Microsoft Intune of SCCM voor grootschalige uitrol

**Kritieke voorwaarde - SPN Configuratie:**

  1. Verifieer dat Exchange SPNs correct zijn geregistreerd met: setspn -L
  2. Vereiste SPNs voor Exchange: http/, http/, exchangeMDB/, exchangeRFR/
  3. Bij gebruik van load balancers: SPNs moeten geregistreerd zijn voor de load balancer FQDN
  4. Duplicate SPNs moeten worden opgelost (detecteren met: setspn -X)

Implementatie

De implementatie van Kerberos authenticatie voor Outlook-Exchange vereist een gefaseerde aanpak om service onderbreking te voorkomen:

**FASE 1: Voorbereidende Controles (VERPLICHT)**

  1. Verifieer SPN-configuratie op Exchange servers met PowerShell: setspn -L
  2. Test Kerberos authenticatie handmatig: klist purge, start Outlook, klist tickets (moet Exchange SPNs tonen)
  3. Controleer DNS-resolutie: nslookup moet correct oplossen
  4. Verifieer tijdsynchronisatie: w32tm /query /status (max 5 min verschil)
  5. Controleer netwerk connectiviteit naar DC's: Test-NetConnection -Port 88
  6. Backup huidige registry settings voordat wijzigingen worden doorgevoerd

**FASE 2: Pilot Implementatie**

Gebruik PowerShell-script kerberos-auth-exchange.ps1 (functie Invoke-Remediation) – PowerShell script voor het configureren van Kerberos authenticatie voor Outlook-Exchange verbindingen. Ondersteunt monitoring, remediatie en revert-functies..

**Pilot Implementatie Stappen:**

  1. Selecteer een pilot groep van 10-20 gebruikers uit verschillende afdelingen
  2. Voer het remediatie-script uit op pilot machines: .\kerberos-auth-exchange.ps1 -Remediation
  3. Gebruik -WhatIf om de impact te simuleren: .\kerberos-auth-exchange.ps1 -Remediation -WhatIf
  4. Herstart Outlook op pilot machines
  5. Verifieer Kerberos tickets: klist tickets (moet krbtgt en Exchange SPNs tonen)
  6. Monitor pilot gebruikers gedurende 1 week voor connectivity issues
  7. Verzamel feedback en documenteer eventuele problemen

**FASE 3: Productie Rollout**

**Methode 1: groep beleid (Aanbevolen voor Enterprise)**

  1. Open groep beleid Management Console (gpmc.msc)
  2. Creëer een nieuwe GPO of edit een bestaande Office GPO
  3. Navigeer naar: Computer Configuration > Preferences > Windows Settings > Registry
  4. Voeg toe: HKCU\Software\beleidsregels\Microsoft\Office\16.0\OUTLOOK\Security
  5. Value name: kerberosauthexchange, Type: REG_DWORD, Value: 1
  6. Configureer Item-Level Targeting om specifieke groepen te targeten
  7. Link GPO aan OUs met een phased approach (bijv. per afdeling/locatie)
  8. Gebruik GPO loopback processing indien nodig voor shared computers
  9. Test met gpresult /h report.html op een testmachine
  10. Voer gpupdate /force uit op pilot machines
  11. Monitor groep beleid resultaten via GPMC reporting

**Methode 2: Microsoft Intune (Cloud-beheerde devices)**

  1. Log in op Microsoft Intune Admin Center (endpoint.microsoft.com)
  2. Navigeer naar Devices > Configuration profiles > Maak profile
  3. Platform: Windows 10 en later, Profile type: Settings catalog
  4. Voeg toe: Microsoft Outlook 2016 > Security > Kerberos Authentication voor Exchange
  5. Configureer met waarde: ingeschakeld (1)
  6. Assign aan device groeps met staged rollout (eerst test groep, dan productie)
  7. Monitor deployment status in Intune dashboard
  8. Gebruik Intune compliance beleidsregels om de configuratie te verifiëren
  9. Configureer remediation scripts voor automatische fix bij non-compliance

**FASE 4: Verificatie en Validatie**

  1. Verifieer registry-instelling op steekproef van machines
  2. Controleer Kerberos tickets op random clients: klist tickets
  3. Monitor Exchange IIS logt voor Kerberos auth (Negotiate header)
  4. Check voor NTLM fallback in Event logt (Security Event ID 4624, Logon Type 3)
  5. Verifieer dat er geen SPN-gerelateerde errors zijn (Event ID 11, Kerberos)
  6. Test Outlook connectivity vanuit verschillende netwerk locaties
  7. Verzamel metrics: aantal successful Kerberos logins vs NTLM fallbacks

Monitoring en Controle

Continue monitoring van Kerberos authenticatie is essentieel om te waarborgen dat NTLM niet wordt gebruikt als fallback:

Gebruik PowerShell-script kerberos-auth-exchange.ps1 (functie Invoke-Monitoring) – Het monitoring-script controleert of de registry-instelling correct is geconfigureerd en rapporteert de compliance-status..

**Monitoring Strategieën:**

  1. **Registry Monitoring**: Periodieke controle van de kerberosauthexchange registry waarde via PowerShell scripts of GPO reporting
  2. **Kerberos Ticket Monitoring**: Gebruik klist.exe op willekeurige clients om te verifiëren dat Exchange SPNs aanwezig zijn in de ticket cache
  3. **Event loggen Monitoring**: monitoren Windows Security logt (Event ID 4768 voor Kerberos TGT requests, 4769 voor Service Ticket requests)
  4. **Exchange Server Logs**: Analyseer IIS logt op Exchange servers voor authenticatiemethoden (Kerberos vs NTLM)
  5. **Network Monitoring**: monitoren netwerkverkeer naar Domain Controllers (port 88) voor Kerberos authenticatie activiteit
  6. **SIEM Integration**: Integreer Kerberos authentication events in Security Information en Event Management systemen
  7. **Compliance Dashboards**: Creëer dashboards in Intune/SCCM met realtime compliance percentages

**Key Performance Indicators (KPIs):**

  1. Percentage devices met correcte registry configuratie (target: 100%)
  2. Ratio Kerberos vs NTLM authenticaties op Exchange (target: >95% Kerberos)
  3. Aantal failed Kerberos authentications per dag (target: <1% van totaal)
  4. Gemiddelde tijd voor ticket acquisitie (baseline: <200ms)
  5. Aantal SPN-gerelateerde errors per week (target: 0)
  6. Gebruikers rapportage van connectivity issues (target: <0.1%)

Remediatie en Troubleshooting

Wanneer monitoring non-compliance of Kerberos authentication failures detecteert:

Gebruik PowerShell-script kerberos-auth-exchange.ps1 (functie Invoke-Remediation) – Het remediatie-script past automatisch de benodigde registry-instelling toe en verifieert vervolgens de correcte configuratie..

**Veelvoorkomende Problemen en Oplossingen:**

  1. **Probleem**: Outlook kan geen verbinding maken na het inschakelen van Kerberos. **Oplossing**: Verifieer SPN-configuratie met setspn -L. Zorg dat http/ en exchangeMDB/ SPNs geregistreerd zijn.
  2. **Probleem**: Kerberos tickets worden niet aangemaakt. **Oplossing**: Controleer netwerk connectiviteit naar DC (port 88). Verifieer dat de client lid is van het domein.
  3. **Probleem**: NTLM fallback blijft optreden. **Oplossing**: Verifieer dat de registry waarde correct is ingesteld (DWORD 1). Check voor conflicterende GPOs met gpresult.
  4. **Probleem**: Intermitterende authentication failures. **Oplossing**: Controleer tijdsynchronisatie tussen client en DC. Max toegestane skew is 5 minuten.
  5. **Probleem**: Duplicate SPN errors in Event Log. **Oplossing**: Identificeer duplicaten met setspn -X. Verwijder duplicaten en registreer SPNs opnieuw.
  6. **Probleem**: Gebruikers krijgen credential prompts. **Oplossing**: Verifieer dat Exchange URL's in Local Intranet zone staan in Internet Explorer settings.
  7. **Probleem**: Kerberos werkt niet via VPN. **Oplossing**: Zorg dat VPN clients toegang hebben tot DC's (port 88). Configureer split-tunnel indien nodig.

Compliance en Auditing

Deze beveiligingsmaatregel ondersteunt compliance met meerdere security frameworks en regelgeving:

**DISA STIG Compliance:**

  1. Control ID: O365-OU-000001
  2. STIG versie: Microsoft Office 365 ProPlus v3r3
  3. Severity: Category II (Medium)
  4. Compliance vereiste: Kerberos authenticatie moet worden gebruikt voor Exchange verbindingen
  5. Rationale: NTLM is kwetsbaar voor pass-the-hash en relay attacks

**Framework Mapping:**

  1. **BIO (Baseline Informatiebeveiliging Overheid)**: U.09.4.2 - Gebruikersauthenticatie. Kerberos als modern authenticatieprotocol ondersteunt sterke authenticatie-eisen.
  2. **ISO 27001:2022**: A.5.15 - Toegangsbeveiliging. Kerberos biedt mutual authentication en beschermt tegen man-in-the-middle attacks.
  3. **NIS2 Richtlijn**: Artikel 21(2)(c) - Sterke authenticatiemechanismen. Kerberos voldoet aan moderne authenticatie-eisen.
  4. **CIS Controls**: control 4.7 - gebruiken of veilige authentication protocols. Kerberos wordt aanbevolen boven NTLM.
  5. **NIST SP 800-63B**: Authenticator Assurance Level 2 (AAL2). Kerberos voldoet aan requirements voor cryptografisch sterke authenticatie.

**audit bewijs:**

  1. Registry export van HKCU:\Software\beleidsregels\Microsoft\Office\16.0\OUTLOOK\Security met kerberosauthexchange waarde
  2. groep beleid configuration screenshots en GPO XML exports
  3. Intune beleid configuration exports en compliance reports
  4. Windows Event logt met successful Kerberos authentications (Event ID 4768, 4769)
  5. Exchange IIS logt toont Negotiate authentication in plaats van NTLM
  6. Klist output van steekproef machines met Exchange SPNs in ticket cache
  7. SPN configuratie documentatie: setspn -L output voor Exchange accounts
  8. compliance monitoring reports met percentage Kerberos vs NTLM usage
  9. Change management tickets voor implementatie en remediatie acties
  10. Periodic audit logt (maandelijks of kwartaallijks) met compliance metrics

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
# Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Revert { Write-Host "Reverting O365-OU-000001: kerberos auth exchange " -ForegroundColor Yellow try { if ($WhatIf) { Write-Host " [WhatIf] Would remove registry value" -ForegroundColor Cyan return $true } $valueName = "kerberosauthexchange" if (Test-Path $RegistryPath) { Remove-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue Write-Host " Removed registry value: $valueName" -ForegroundColor Green } return $true } catch { Write-Host " Error during revert: # Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } elseif ($Revert) { $result = Invoke-Revert exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: [-Monitoring] [-Remediation] [-Revert] [-WhatIf]" -ForegroundColor Yellow } } catch { Write-Host "Script execution error: # Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Revert { Write-Host "Reverting O365-OU-000001: kerberos auth exchange " -ForegroundColor Yellow try { if ($WhatIf) { Write-Host " [WhatIf] Would remove registry value" -ForegroundColor Cyan return $true } $valueName = "kerberosauthexchange" if (Test-Path $RegistryPath) { Remove-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue Write-Host " Removed registry value: $valueName" -ForegroundColor Green } return $true } catch { Write-Host " Error during revert: # Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: .\kerberos-auth-exchange.ps1 [-Monitoring] [-Remediation]" -ForegroundColor Yellow Write-Host " -Monitoring: Check current compliance status" -ForegroundColor White Write-Host " -Remediation: Apply recommended configuration" -ForegroundColor White } " -ForegroundColor Red return $false } } # Main execution try { if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: .\kerberos-auth-exchange.ps1 [-Monitoring] [-Remediation]" -ForegroundColor Yellow Write-Host " -Monitoring: Check current compliance status" -ForegroundColor White Write-Host " -Remediation: Apply recommended configuration" -ForegroundColor White } " -ForegroundColor Red exit 1 } " -ForegroundColor Red return $false } } # Main execution try { if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } elseif ($Revert) { $result = Invoke-Revert exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: [-Monitoring] [-Remediation] [-Revert] [-WhatIf]" -ForegroundColor Yellow } } catch { Write-Host "Script execution error: # Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Revert { Write-Host "Reverting O365-OU-000001: kerberos auth exchange " -ForegroundColor Yellow try { if ($WhatIf) { Write-Host " [WhatIf] Would remove registry value" -ForegroundColor Cyan return $true } $valueName = "kerberosauthexchange" if (Test-Path $RegistryPath) { Remove-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue Write-Host " Removed registry value: $valueName" -ForegroundColor Green } return $true } catch { Write-Host " Error during revert: # Control: O365-OU-000001 - kerberos auth exchange #Requires -Version 5.1 # DISA STIG Microsoft Office 365 ProPlus v3r3 param( [string]$RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\OUTLOOK\Security", [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) function Invoke-Monitoring { Write-Host "Monitoring O365-OU-000001: kerberos auth exchange" -ForegroundColor Green try { $valueName = "kerberosauthexchange" $expectedValue = 1 if (-not (Test-Path $RegistryPath)) { Write-Host "✗ Registry path does not exist: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $valueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$valueName -eq $expectedValue) { Write-Host "✓ Control compliant: $valueName = $expectedValue" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$valueName } else { "Not Set" } Write-Host "✗ Control non-compliant: $valueName = $actualValue (Expected: $expectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "✗ Error checking registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating O365-OU-000001: kerberos auth exchange" -ForegroundColor Yellow try { if (-not (Test-Path $RegistryPath)) { Write-Host "Creating registry path: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } $valueName = "kerberosauthexchange" $expectedValue = 1 Set-ItemProperty -Path $RegistryPath -Name $valueName -Value $expectedValue -Type DWord -Force Write-Host "✓ Registry value set successfully: $valueName = $expectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 $complianceResult = Invoke-Monitoring return $complianceResult } catch { Write-Host "✗ Error configuring registry setting: $($_.Exception.Message)" -ForegroundColor Red return $false } } if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: .\kerberos-auth-exchange.ps1 [-Monitoring] [-Remediation]" -ForegroundColor Yellow Write-Host " -Monitoring: Check current compliance status" -ForegroundColor White Write-Host " -Remediation: Apply recommended configuration" -ForegroundColor White } " -ForegroundColor Red return $false } } # Main execution try { if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Usage: .\kerberos-auth-exchange.ps1 [-Monitoring] [-Remediation]" -ForegroundColor Yellow Write-Host " -Monitoring: Check current compliance status" -ForegroundColor White Write-Host " -Remediation: Apply recommended configuration" -ForegroundColor White } " -ForegroundColor Red exit 1 }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Kerberos authenticatie blijft Outlook gebruik maken van NTLM, een verouderd protocol met ernstige beveiligingslekken. NTLM is kwetsbaar voor pass-the-hash attacks waarbij aanvallers gestolen credential hashes kunnen gebruiken zonder het werkelijke wachtwoord. Dit kan leiden tot: **Ongeautoriseerde toegang tot e-mail**: Aanvallers kunnen inbox, agenda en contacten inzien. **Business Email Compromise (BEC)**: Criminelen kunnen namens executives e-mails versturen voor fraude. **Lateral movement**: Van Outlook naar andere systemen via NTLM relay attacks. **Compliance schendingen**: DISA STIG, NIS2 en ISO 27001 vereisen moderne authenticatie. **Reputatieschade**: datalekes leiden tot verlies van klantvertrouwen. De implementatie van Kerberos elimineert deze risico's door gebruik te maken van ticket-based authenticatie, mutual authentication en sterke encryptie. Dit is een fundamentele security control die past binnen zero-trust architectuur en moderne identiteitsbeheer best practices.

Management Samenvatting

Schakel Kerberos authenticatie in voor Outlook-Exchange verbindingen om af te stappen van het onveilige NTLM protocol. Kerberos biedt bescherming tegen pass-the-hash, credential theft en man-in-the-middle attacks. Vereist correcte SPN-configuratie in Active Directory. Implementatie via groep beleid of Intune. Kritiek voor compliance met DISA STIG, BIO, ISO 27001 en NIS2. Implementatietijd: 16 uur inclusief pilot en rollout.