Start >
M365 >
Defender Email >
Zero Hour Auto Purge Teams
L1
BIO 16.01
ISO A.12.4.1
CIS 18.9.19.2
Zero Hour Auto Purge Teams
π
2025-10-30
β’
β±οΈ 2 minuten lezen
β’
π΄ Must-Have
π₯ Download
π Bookmark
π€ Share
πΌ Management Samenvatting
Deze security regelen waarborgt de correcte configuratie van beveiligingsinstellingen op Windows endpoints.
Implementatie
2u (tech: 1u)
Van toepassing op:
β Windows
Deze instelling is onderdeel van de Windows security baseline en beschermt tegen bekende aanvalsvectoren door het afdwingen van veilige configuraties.
PowerShell Modules Vereist
Primary API: Graph
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph.DeviceManagement
Implementatie
Dit regelen configureert nul hour auto purge teams via Microsoft Intune apparaat configuratie beleid of compliance policies om Windows endpoints te beveiligen volgens security best practices.
Vereisten
m365
Implementatie
Gebruik PowerShell-script zero-hour-auto-purge-teams.ps1 (functie Invoke-Monitoring) β Monitoren.
monitoring
Gebruik PowerShell-script zero-hour-auto-purge-teams.ps1 (functie Invoke-Monitoring) β Controleren.
Gebruik PowerShell-script zero-hour-auto-purge-teams.ps1 (functie Invoke-Remediation) β Herstellen.
Compliance en Auditing
Beleid documentatie
Compliance & Frameworks
CIS M365: Control 18.9.19.2 (L1) - CIS Security Benchmark aanbevelingen
BIO: 16.01 - BIO Baseline Informatiebeveiliging Overheid - 16.01 - Gebeurtenissen logging en audittrails
ISO 27001:2022: A.12.4.1 - ISO 27001:2022 - Gebeurtenissen logging en audittrails
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).
<
.SYNOPSIS
Zero-Hour Auto Purge (ZAP)
.DESCRIPTION
Enables ZAP to automatically remove malicious emails post-delivery
.NOTES
NL Baseline v2.0
[CmdletBinding()]
param ([switch ]$Monitoring , [switch ]$Remediation , [switch ]$Revert ,
[switch ]$WhatIf )
$ErrorActionPreference = 'Stop'
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Zero-Hour Auto Purge (ZAP)" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan
function Invoke-Monitoring {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
$policies = Get-HostedContentFilterPolicy -ErrorAction Stop
$result = @{ total = $policies .Count; zapEnabled = 0 ; zapDisabled = 0 }
foreach ($policy in $policies ) {
$zapEnabled = $policy .ZapEnabled
if ($zapEnabled ) {
$result .zapEnabled++
Write-Host " [OK] ZAP ENABLED: $($policy .Name)" -ForegroundColor Green
}
else {
$result .zapDisabled++
Write-Host " [FAIL] ZAP DISABLED: $($policy .Name)" -ForegroundColor Red
}
}
Write-Host "`n Summary: $($result .zapEnabled)/$($result .total) policies enabled" -ForegroundColor Cyan
Write-Host "`n ZAP Functionality:" -ForegroundColor Cyan
Write-Host " β’ Removes phishing emails after delivery" -ForegroundColor Gray
Write-Host " β’ Removes malware after delivery" -ForegroundColor Gray
Write-Host " β’ Moves to Junk/Quarantine automatically" -ForegroundColor Gray
if ($result .zapDisabled -eq 0 ) {
Write-Host "`n[OK] COMPLIANT - ZAP enabled on all policies" -ForegroundColor Green
exit 0
}
else {
Write-Host "`n[FAIL] NON-COMPLIANT - Some policies without ZAP!" -ForegroundColor Red
exit 1
}
}
catch {
Write-Host "ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Remediation {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
$policies = Get-HostedContentFilterPolicy | Where-Object { -not $_ .ZapEnabled }
if ($policies .Count -eq 0 ) {
Write-Host " [OK] ZAP already enabled on all policies" -ForegroundColor Green
exit 0
}
foreach ($policy in $policies ) {
Set-HostedContentFilterPolicy -Identity $policy .Name -ZapEnabled $true -ErrorAction Stop
Write-Host " [OK] Enabled ZAP for : $($policy .Name)" -ForegroundColor Green
}
Write-Host "`n[OK] ZAP enabled on $($policies .Count) policies" -ForegroundColor Green
exit 0
}
catch {
Write-Host "ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Revert {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
$policies = Get-HostedContentFilterPolicy | Where-Object { $_ .ZapEnabled }
foreach ($policy in $policies ) {
Set-HostedContentFilterPolicy -Identity $policy .Name -ZapEnabled $false -ErrorAction Stop
Write-Host " β οΈ Disabled ZAP for : $($policy .Name)" -ForegroundColor Yellow
}
exit 0
}
catch {
Write-Host "ERROR: $_ " -ForegroundColor Red
exit 2
}
}
try {
if ($Revert ) { Invoke-Revert }
elseif ($Monitoring ) { Invoke-Monitoring }
elseif ($Remediation ) { Invoke-Remediation }
else { Write-Host "Use: -Monitoring | -Remediation | -Revert" -ForegroundColor Yellow }
}
catch { throw }
finally {
Write-Host "`n========================================`n" -ForegroundColor Cyan
}
Risico zonder implementatie
Risico zonder implementatie
High: No auth tracking.
Management Samenvatting
Schakel in audit logging.
Implementatietijd: 2 uur
FTE required: 0.01 FTE