Microsoft 365: Verplichte Multi-Factor Authenticatie Voor Alle Gebruikers

💼 Management Samenvatting

Multi-Factor Authentication (MFA) voor alle Microsoft 365-gebruikers is de meest effectieve beveiligingscontrole tegen account compromises, met een preventiepercentage van 99,9% volgens Microsoft's security onderzoek. MFA vormt een fundamentele Zero Trust-controle en is verplicht onder vrijwel alle moderne compliance-frameworks, waaronder de Nederlandse Baseline voor Veilige Cloud, NIS2, BIO en ISO 27001.

Aanbeveling
IMPLEMENT
Risico zonder
Kritiek
Risk Score
10/10
Implementatie
16u (tech: 4u)
Van toepassing op:
M365
Entra ID

Authenticatie die uitsluitend op wachtwoorden berust, is extreem kwetsbaar voor moderne aanvalsmethoden. Phishing-aanvallen, waarbij aanvallers gebruikers misleiden om hun credentials in te voeren op nepwebsites, zijn zeer succesvol met een gemiddeld slagingspercentage van 20-30% volgens security studies. Password spraying-aanvallen waarbij aanvallers veelgebruikte wachtwoorden proberen tegen vele accounts tegelijk, zijn effectief omdat gebruikers voorspelbare wachtwoorden kiezen zoals Welkom01 of Zomer2024. Credential stuffing met gelekte wachtwoorden uit data breaches van andere services (haveibeenpwned.com bevat miljarden gelekte credentials) is succesvol omdat mensen dezelfde wachtwoorden hergebruiken over meerdere services. Keyloggers en malware kunnen wachtwoorden stelen van gecompromitteerde machines zonder dat gebruikers het merken. Deze aanvallen resulteren in account takeover waarbij aanvallers volledige toegang krijgen tot email, SharePoint, Teams en andere M365-services, wat kan leiden tot business email compromise (BEC) fraude met gemiddelde schade van €100.000-500.000 per incident, data exfiltratie van gevoelige bedrijfsinformatie of klantgegevens, ransomware deployment via gecompromitteerde accounts, en reputatieschade. Multi-Factor Authentication elimineert 99,9% van deze risico's door een tweede factor toe te voegen die de aanvaller niet heeft: iets dat je hebt zoals een telefoon met Microsoft Authenticator app of een FIDO2 hardware security key, of iets dat je bent zoals een biometrische factor via Windows Hello for Business. Zelfs als een aanvaller het wachtwoord heeft gestolen via phishing, kan deze niet inloggen zonder de tweede factor, wat account takeover effectief voorkomt. Voor organisaties is MFA verplicht onder NIS2 Artikel 21 voor toegang tot kritieke systemen, BIO overheidsrichtlijn 09.04, ISO 27001 controle A.5.17 voor authentication information, en CIS Microsoft 365 Foundations Benchmark controle 1.1.5 Level 1.

PowerShell Modules Vereist
Primary API: Microsoft Graph API
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph.Identity.SignIns

Implementatie

Dit artikel beschrijft hoe u als CISO, security architect of Microsoft 365-beheerder verplichte Multi-Factor Authentication implementeert voor alle gebruikers in uw organisatie via Conditional Access policies. We behandelen de verschillende MFA-methoden die beschikbaar zijn, van phishing-resistente opties zoals FIDO2 security keys en Windows Hello for Business tot meer toegankelijke methoden zoals Microsoft Authenticator app met push notifications. Vervolgens werken we uit hoe u een Conditional Access policy configureert die MFA afdwingt voor alle gebruikers zonder uitzonderingen, behalve voor gedocumenteerde break-glass accounts. We bespreken de implementatiestrategie met een gefaseerde rollout: eerst report-only mode om de impact te monitoren, daarna geforceerde MFA-registratie, en tenslotte volledige afdwinging. Tot slot behandelen we governance-aspecten: hoe u periodiek controleert of alle gebruikers daadwerkelijk MFA gebruiken, hoe u nieuwe gebruikers onmiddellijk registreert, en hoe u dit aantoonbaar maakt voor audits en compliance-verificaties.

Risicoanalyse: Waarom wachtwoord-only authenticatie onvoldoende is

Het moderne dreigingslandschap heeft aangetoond dat wachtwoord-only authenticatie fundamenteel onveilig is. Aanvallers gebruiken geavanceerde technieken om wachtwoorden te stelen of te raden, waarbij ze profiteren van menselijke zwakheden en technische kwetsbaarheden. Phishing-aanvallen zijn geëvolueerd tot zeer geraffineerde campagnes die gebruikers misleiden om hun credentials in te voeren op valse Microsoft-aanmeldingspagina's. Deze aanvallen zijn bijzonder effectief omdat ze gebruikmaken van social engineering en visueel identieke websites die zelfs ervaren gebruikers kunnen misleiden. Password spraying-aanvallen proberen veelgebruikte wachtwoorden zoals Welkom01, Zomer2024 of organisatiespecifieke patronen tegen duizenden accounts tegelijk, waarbij aanvallers profiteren van het feit dat gebruikers voorspelbare wachtwoorden kiezen.

Credential stuffing vormt een ander groot risico: aanvallers gebruiken gelekte wachtwoorden uit data breaches van andere services (haveibeenpwned.com bevat miljarden gelekte credentials) en proberen deze tegen Microsoft 365-accounts, in de veronderstelling dat gebruikers dezelfde wachtwoorden hergebruiken op meerdere platforms. Keyloggers en malware kunnen wachtwoorden stelen van gecompromitteerde machines zonder dat gebruikers het merken, waardoor aanvallers toegang krijgen tot accounts zonder dat gebruikers zich bewust zijn van de compromittering. Brute force-aanvallen proberen systematisch alle mogelijke wachtwoordcombinaties, hoewel moderne systemen deze aanvallen meestal blokkeren na enkele mislukte pogingen.

De impact van een gecompromitteerd gebruikersaccount kan aanzienlijk zijn, zelfs voor accounts zonder beheerdersrechten. Aanvallers kunnen toegang krijgen tot gevoelige email-communicatie, bedrijfsdocumenten in SharePoint, Teams-conversaties met vertrouwelijke informatie, en andere Microsoft 365-services. Business Email Compromise (BEC) fraude is een veelvoorkomend gevolg, waarbij aanvallers zich voordoen als legitieme gebruikers om financiële transacties te initiëren of gevoelige informatie te verkrijgen. De gemiddelde schade per BEC-incident bedraagt €100.000 tot €500.000, met enkele gevallen die oplopen tot miljoenen euro's. Data exfiltratie kan leiden tot verlies van intellectueel eigendom, klantgegevens of andere vertrouwelijke informatie, wat kan resulteren in concurrentienadeel, reputatieschade en mogelijk AVG-boetes. Ransomware deployment via gecompromitteerde accounts kan leiden tot volledige uitval van bedrijfsprocessen en aanzienlijke herstelkosten.

Multi-Factor Authentication vormt de meest effectieve verdediging tegen deze dreigingen. MFA vereist dat gebruikers naast iets wat ze weten (wachtwoord) ook iets bewijzen wat ze hebben (zoals een telefoon met authenticator-app of een FIDO2 security key) of iets wat ze zijn (biometrische verificatie). Zelfs wanneer een aanvaller een wachtwoord heeft gestolen via phishing, password spraying of credential stuffing, kan hij of zij niet inloggen zonder toegang tot de tweede factor. Microsoft-onderzoek toont aan dat MFA 99,9% van de accountovernamepogingen blokkeert. Voor alle gebruikersaccounts is MFA daarom niet langer een optionele beveiligingsmaatregel, maar een absolute minimumvereiste die door vrijwel alle security frameworks en compliance-kaders wordt geëist, waaronder de Nederlandse Baseline voor Veilige Cloud, NIS2, BIO en ISO 27001.

Implementatie van verplichte MFA voor alle gebruikers via Conditional Access

De implementatie van verplichte MFA voor alle gebruikers begint met een inventarisatie van de huidige situatie. Controleer welke gebruikers al zijn geregistreerd voor MFA, welke MFA-methoden momenteel beschikbaar zijn, en of er al Conditional Access policies actief zijn die MFA afdwingen. Identificeer break-glass accounts voor noodgevallen die mogelijk moeten worden uitgesloten van de MFA-vereiste, maar documenteer deze uitzonderingen strikt en bescherm deze accounts met zeer sterke wachtwoorden en strikt beheer. Overweeg ook service accounts en applicatie-identiteiten: waar mogelijk moeten deze worden omgezet naar beheerde identiteiten of workload identities die certificate-based authenticatie ondersteunen, in plaats van wachtwoord-based authenticatie.

De primaire methode om MFA af te dwingen voor alle gebruikers is via Conditional Access policies in Entra ID. U maakt een specifiek Conditional Access-beleid dat alle gebruikers target (Users: All users), alle cloud-apps omvat (Cloud apps: All cloud apps), en als grant control 'Require multi-factor authentication' instelt. Deze policy moet worden ingesteld op 'enabled' status en mag geen uitzonderingen bevatten voor reguliere gebruikersaccounts, behalve voor gedocumenteerde break-glass accounts. Het is verstandig om de policy eerst in 'report-only' mode te activeren om de impact te monitoren voordat u deze volledig afdwingt. Gedurende deze periode kunt u sign-in logs analyseren om te zien hoeveel aanmeldingen MFA zouden triggeren, welke gebruikers mogelijk problemen zouden ondervinden, en of er legacy applicaties zijn die moderne authenticatie niet ondersteunen.

Voor de MFA-methode zijn verschillende opties beschikbaar, variërend in beveiligingsniveau en gebruikerservaring. Phishing-resistente MFA-methoden zoals FIDO2 security keys en Windows Hello for Business bieden de hoogste beveiliging en zijn bestand tegen geavanceerde phishing-aanvallen waarbij aanvallers MFA-prompts proberen te onderscheppen. Microsoft Authenticator app met push notifications en number matching biedt een goede balans tussen beveiliging en gebruikerservaring, en is ook phishing-resistent wanneer number matching is ingeschakeld. SMS en voice calls moeten worden vermeden omdat deze phishable zijn via SIM swapping of social engineering, en alleen als laatste redmiddel beschikbaar worden gehouden voor gebruikers zonder alternatieven. U configureert de gewenste MFA-methoden via Authentication methods policies in Entra ID, waarbij u prioriteit geeft aan phishing-resistente methoden.

De implementatie volgt een gefaseerde rollout-aanpak om business continuity te waarborgen en gebruikers de tijd te geven om zich aan te passen. Fase 1 bestaat uit het creëren van de Conditional Access policy in report-only mode, waarbij gedurende minimaal twee weken wordt gemonitord hoeveel sign-ins MFA zouden triggeren zonder daadwerkelijk te blokkeren. Fase 2 omvat het forceren van MFA-registratie: gebruikers worden bij hun volgende login verplicht om een MFA-methode te registreren voordat ze toegang krijgen tot Microsoft 365-services. Fase 3 bestaat uit het testen met pilot groups zoals het security team, IT-beheer en een representatieve business unit, waarbij hun ervaringen worden geëvalueerd voordat de organisatiebrede uitrol plaatsvindt. Fase 4 is de volledige activering waarbij de policy wordt ingesteld op 'enabled' mode en MFA universeel wordt afgedwongen voor alle gebruikers. Het doel is 100% MFA-registratie binnen 30 dagen met helpdesk support voor gebruikers die problemen ondervinden.

Governance, monitoring en continue verificatie

Verplichte MFA voor alle gebruikers is geen eenmalige configuratie, maar een doorlopend programma dat governance, monitoring en periodieke verificatie vereist. Het CISO-office of security team moet expliciete policies definiëren die vastleggen dat alle gebruikersaccounts MFA moeten gebruiken, zonder uitzonderingen behalve voor gedocumenteerde break-glass accounts. Deze policies moeten worden gecommuniceerd naar alle medewerkers, worden opgenomen in security awareness-trainingen, en moeten worden geïntegreerd in het onboarding-proces voor nieuwe medewerkers. Wijzigingen aan Conditional Access policies voor MFA moeten worden goedgekeurd via een change management-proces en moeten worden gedocumenteerd in configuratiemanagement-systemen.

Monitoring speelt een centrale rol in het verifiëren dat MFA daadwerkelijk wordt afgedwongen en gebruikt. Via sign-in logs in Entra ID kunt u zien welke gebruikers MFA hebben gebruikt bij hun aanmeldingen en welke aanmeldingen mogelijk MFA hebben omzeild. Automatische controles via PowerShell-scripts kunnen periodiek verifiëren of de Conditional Access policy voor MFA nog actief is, of alle gebruikers zijn geregistreerd voor MFA, en of er aanmeldingen zijn geweest zonder MFA. Deze scripts kunnen worden geïntegreerd in bestaande SIEM-systemen of compliance-dashboards voor continue monitoring. Daarnaast is het verstandig om periodiek handmatige controles uit te voeren waarbij u de lijst van gebruikers verifieert en controleert of iedereen daadwerkelijk MFA gebruikt. MFA-registratierapporten moeten wekelijks aan het security board worden gepresenteerd, waarbij afwijkingen binnen maximaal twee werkdagen worden hersteld.

Voor compliance en verantwoording is aantoonbaarheid essentieel. Documenteer daarom niet alleen de Conditional Access policy-configuratie, maar ook de rationale achter de keuzes, de lijst van gebruikers die onder de policy vallen, eventuele uitzonderingen met bijbehorende risico-afwegingen, en de resultaten van periodieke controles. Koppel de MFA-vereiste expliciet aan controls in de BIO, ISO 27001, CIS-benchmarks en NIS2, zodat u bij audits direct kunt aantonen welke maatregelen zijn genomen om gebruikersaccounts te beschermen. Bewaar audit evidence zoals exports van Conditional Access policies, rapportages van MFA-registratiestatus, en verslagen van monitoring-activiteiten gedurende minimaal zeven jaar. Op die manier wordt verplichte MFA voor alle gebruikers niet alleen een technische beveiligingsmaatregel, maar ook een stevig verankerd onderdeel van de bredere governance en compliance van de organisatie.

Technische monitoring met PowerShell

Gebruik PowerShell-script mfa-required-all-users.ps1 (functie Invoke-Monitoring) – Controleert of er een Conditional Access policy actief is die MFA afdwingt voor alle gebruikers en verifieert of alle gebruikers daadwerkelijk zijn geregistreerd voor MFA..

Operationele opvolging en remediatie

Gebruik PowerShell-script mfa-required-all-users.ps1 (functie Invoke-Remediation) – Biedt beheerteams een gestructureerde checklist en ondersteuning voor het implementeren van verplichte MFA voor alle gebruikers wanneer deze nog niet is geconfigureerd..

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
<# .SYNOPSIS MFA Verplicht voor Alle Gebruikers - Basisbeveiliging controleren .DESCRIPTION Controleert of in Microsoft Entra ID (Azure AD) verplichte multi-factor authenticatie (MFA) is afgedwongen voor alle gebruikersaccounts via Conditional Access policies. Het script verifieert: - Of er een Conditional Access policy actief is die MFA afdwingt voor alle gebruikers - Of alle gebruikers daadwerkelijk zijn geregistreerd voor MFA Het script voert GEEN automatische wijzigingen uit, maar geeft een duidelijk overzicht en exit-codes die gebruikt kunnen worden in geautomatiseerde controles of CI/CD-pijplijnen. .NOTES NL Baseline: Nederlandse Baseline voor Veilige Cloud Workload : Microsoft 365 / Entra ID Vereist : Microsoft.Graph PowerShell (Policy.Read.All, User.Read.All, Directory.Read.All) .EXAMPLE .\mfa-required-all-users.ps1 -Monitoring Controleert of MFA verplicht is voor alle gebruikersaccounts. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "MFA Verplicht voor Alle Gebruikers" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Invoke-Monitoring { <# .SYNOPSIS Controleert of MFA verplicht is voor alle gebruikersaccounts. .DESCRIPTION Valideert of er: - Minimaal één ingeschakelde Conditional Access policy is die MFA afdwingt voor alle gebruikers - Alle gebruikers zijn geregistreerd voor MFA De controle is bewust generiek gehouden zodat deze toepasbaar is op verschillende tenants, zonder exacte beleidsnamen te vereisen. #> try { Write-Host "[INFO] Verbinden met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes "Policy.Read.All", "User.Read.All", "Directory.Read.All" -ErrorAction Stop -NoWelcome Write-Host "[INFO] Ophalen Conditional Access policies..." -ForegroundColor Gray $policies = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" if (-not $policies.value) { Write-Host "[WARN] Er zijn geen Conditional Access policies gevonden in de tenant." -ForegroundColor Yellow Write-Host "[FAIL] NON-COMPLIANT - Geen Conditional Access policies geconfigureerd." -ForegroundColor Red exit 1 } $enabledPolicies = $policies.value | Where-Object { $_.state -eq 'enabled' } Write-Host "`n Totaal aantal policies : $($policies.value.Count)" -ForegroundColor Cyan Write-Host " Ingeschakelde policies : $($enabledPolicies.Count)" -ForegroundColor Cyan # Zoek naar policies die alle gebruikers targeten en MFA vereisen $allUsersMfaPolicies = @() foreach ($policy in $enabledPolicies) { $targetsAllUsers = $false $requiresMFA = $false # Check of policy alle gebruikers target if ($policy.conditions.users.includeUsers -contains 'All') { $targetsAllUsers = $true } # Check of policy MFA vereist if ($policy.grantControls -and $policy.grantControls.builtInControls -contains 'mfa') { $requiresMFA = $true } # Check of policy authentication strength vereist (wat ook MFA impliceert) if ($policy.grantControls -and $policy.grantControls.authenticationStrength) { $requiresMFA = $true } if ($targetsAllUsers -and $requiresMFA) { $allUsersMfaPolicies += $policy } } Write-Host "`n Beleidsregels voor MFA voor alle gebruikers:" -ForegroundColor Cyan if ($allUsersMfaPolicies.Count -gt 0) { Write-Host " [OK] MFA-beleid voor alle gebruikers gevonden:" -ForegroundColor Green foreach ($policy in $allUsersMfaPolicies) { Write-Host " - $($policy.displayName) (State: $($policy.state))" -ForegroundColor Gray } } else { Write-Host " [FAIL] Geen ingeschakeld Conditional Access-beleid gevonden dat MFA afdwingt voor alle gebruikers." -ForegroundColor Red } # Controleer MFA-registratiestatus van gebruikers Write-Host "`n[INFO] Controleren MFA-registratiestatus van gebruikers..." -ForegroundColor Gray # Haal alle gebruikers op (beperkt tot eerste 1000 voor performance) $users = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/users?`$top=1000&`$select=id,userPrincipalName,displayName" Write-Host " Totaal aantal gebruikers gevonden: $($users.value.Count)" -ForegroundColor Cyan if ($users.value.Count -eq 0) { Write-Host " [WARN] Geen gebruikers gevonden." -ForegroundColor Yellow } else { # Controleer MFA-status voor een steekproef van gebruikers (eerste 50 voor performance) $sampleSize = [Math]::Min(50, $users.value.Count) $sampleUsers = $users.value | Select-Object -First $sampleSize $mfaRegisteredCount = 0 $mfaNotRegistered = @() Write-Host " Controleren steekproef van $sampleSize gebruikers..." -ForegroundColor Gray foreach ($user in $sampleUsers) { try { $userAuthMethods = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/users/$($user.id)/authentication/methods" # Check of gebruiker MFA-methoden heeft geregistreerd $hasMfaMethod = $false if ($userAuthMethods.value) { foreach ($method in $userAuthMethods.value) { if ($method.'@odata.type' -in @('#microsoft.graph.microsoftAuthenticatorAuthenticationMethod', '#microsoft.graph.phoneAuthenticationMethod', '#microsoft.graph.fido2AuthenticationMethod', '#microsoft.graph.windowsHelloForBusinessAuthenticationMethod')) { $hasMfaMethod = $true break } } } if ($hasMfaMethod) { $mfaRegisteredCount++ } else { $mfaNotRegistered += $user } } catch { # Als we de MFA-status niet kunnen ophalen, tellen we dit als niet-geregistreerd $mfaNotRegistered += $user } } $mfaPercentage = if ($sampleUsers.Count -gt 0) { [Math]::Round(($mfaRegisteredCount / $sampleUsers.Count) * 100, 1) } else { 0 } Write-Host " Gebruikers met MFA geregistreerd: $mfaRegisteredCount / $($sampleUsers.Count) ($mfaPercentage%)" -ForegroundColor $(if ($mfaPercentage -ge 95) { 'Green' } elseif ($mfaPercentage -ge 80) { 'Yellow' } else { 'Red' }) if ($mfaNotRegistered.Count -gt 0) { Write-Host " [WARN] Gebruikers zonder MFA-registratie (eerste 10):" -ForegroundColor Yellow foreach ($user in ($mfaNotRegistered | Select-Object -First 10)) { Write-Host " - $($user.userPrincipalName) ($($user.displayName))" -ForegroundColor Gray } if ($mfaNotRegistered.Count -gt 10) { Write-Host " ... en $($mfaNotRegistered.Count - 10) meer" -ForegroundColor Gray } } } # Bepaal overall compliance $hasPolicy = $allUsersMfaPolicies.Count -gt 0 $highMfaAdoption = ($users.value.Count -eq 0) -or ($mfaPercentage -ge 95) if ($hasPolicy -and $highMfaAdoption) { Write-Host "`n[OK] COMPLIANT - MFA is verplicht voor alle gebruikers en de meeste gebruikers zijn geregistreerd." -ForegroundColor Green exit 0 } elseif ($hasPolicy -and -not $highMfaAdoption) { Write-Host "`n[WARN] PARTIALLY COMPLIANT - MFA-beleid is aanwezig, maar niet alle gebruikers zijn geregistreerd." -ForegroundColor Yellow Write-Host " Registreer alle gebruikers voor MFA om volledig compliant te zijn." -ForegroundColor Yellow exit 1 } else { Write-Host "`n[FAIL] NON-COMPLIANT - Geen Conditional Access policy gevonden die MFA afdwingt voor alle gebruikers." -ForegroundColor Red Write-Host " Configureer een Conditional Access policy die MFA vereist voor alle gebruikers." -ForegroundColor Yellow exit 1 } } catch { Write-Host "`n[FAIL] Fout tijdens controle: $_" -ForegroundColor Red Write-Host "Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Biedt beheerders een remediatiechecklist. .DESCRIPTION Voert zelf geen wijzigingen door, maar verwijst beheerders naar de monitoringuitvoer en beschrijft welke stappen nodig zijn om MFA verplicht te maken voor alle gebruikers. #> [CmdletBinding()] param() Write-Host "[INFO] Dit script voert geen automatische configuratiewijzigingen uit." -ForegroundColor Yellow Write-Host "[INFO] Gebruik de volgende checklist om MFA verplicht te maken voor alle gebruikers:" -ForegroundColor Cyan Write-Host "`n 1. Conditional Access Policy Configureren:" -ForegroundColor Gray Write-Host " - Ga naar Azure Portal > Entra ID > Security > Conditional Access" -ForegroundColor Gray Write-Host " - Maak een nieuwe policy: 'MFA Verplicht voor Alle Gebruikers'" -ForegroundColor Gray Write-Host " - Users: Selecteer 'All users' (exclude break-glass accounts indien nodig)" -ForegroundColor Gray Write-Host " - Cloud apps: Selecteer 'All cloud apps'" -ForegroundColor Gray Write-Host " - Grant: Selecteer 'Require multi-factor authentication'" -ForegroundColor Gray Write-Host " - State: Start met 'Report-only', monitor impact, activeer daarna" -ForegroundColor Gray Write-Host "`n 2. MFA Registratie voor Gebruikers:" -ForegroundColor Gray Write-Host " - Zorg dat alle gebruikers zijn geregistreerd voor MFA" -ForegroundColor Gray Write-Host " - Gebruik MFA-registratiecampagne om gebruikers automatisch uit te nodigen" -ForegroundColor Gray Write-Host " - Controleer periodiek of alle gebruikers MFA gebruiken" -ForegroundColor Gray Write-Host "`n 3. Break-glass Accounts:" -ForegroundColor Gray Write-Host " - Configureer uitzonderingen voor break-glass accounts (met sterke wachtwoorden)" -ForegroundColor Gray Write-Host " - Documenteer break-glass accounts en beheer ze strikt" -ForegroundColor Gray Write-Host "`n 4. Monitoring en Governance:" -ForegroundColor Gray Write-Host " - Monitor sign-in logs voor aanmeldingen zonder MFA" -ForegroundColor Gray Write-Host " - Voer periodieke controles uit met dit script" -ForegroundColor Gray Write-Host " - Documenteer de policy en rationale voor audits" -ForegroundColor Gray Write-Host "`n[INFO] Start nu de monitoring-check om de actuele situatie te controleren..." -ForegroundColor Cyan Invoke-Monitoring } try { if ($Monitoring) { Invoke-Monitoring } else { Write-Host "Gebruik: .\mfa-required-all-users.ps1 -Monitoring" -ForegroundColor Yellow Write-Host "Dit script controleert of MFA verplicht is voor alle gebruikersaccounts via Conditional Access." -ForegroundColor Cyan Write-Host "`nGebruik -Monitoring om de controle uit te voeren." -ForegroundColor Cyan Write-Host "Gebruik de functie Invoke-Remediation voor een remediatiechecklist." -ForegroundColor Cyan } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Kritiek: Zonder verplichte MFA voor alle gebruikers blijft de organisatie extreem kwetsbaar voor accountovername-aanvallen. Een gestolen gebruikerswachtwoord is voldoende voor volledige account-compromittering, wat kan leiden tot business email compromise fraude met gemiddelde schade van €100.000-500.000 per incident, data exfiltratie, ransomware deployment, aanzienlijke financiële schade en mogelijk AVG-boetes. Microsoft-onderzoek toont aan dat MFA 99,9% van accountovernamepogingen blokkeert, waardoor MFA de meest effectieve beveiligingscontrole is tegen account compromises.

Management Samenvatting

Implementeer verplichte MFA voor alle gebruikers via Conditional Access policies. Gebruik phishing-resistente MFA-methoden zoals Microsoft Authenticator app met number matching of FIDO2 security keys waar mogelijk. Zorg dat alle gebruikers zijn geregistreerd, monitor periodiek het gebruik, en documenteer dit voor compliance. Voldoet aan CIS 1.1.5 L1, BIO 09.04, ISO 27001 A.5.17 en NIS2 Artikel 21.