Start >
M365 >
Defender Email >
Malware Notificaties Admins
L1
BIO 16.01
ISO A.12.4.1
CIS 18.9.19.2
Malware Notificaties Admins
π
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 malware notificaties admins via Microsoft Intune apparaat configuratie beleid of compliance policies om Windows endpoints te beveiligen volgens security best practices.
Vereisten
m365
Implementatie
Gebruik PowerShell-script malware-notificaties-admins.ps1 (functie Invoke-Monitoring) β Monitoren.
monitoring
Gebruik PowerShell-script malware-notifications-admins.ps1 (functie Invoke-Monitoring) β Controleren.
Gebruik PowerShell-script malware-notifications-admins.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
Malware Notifications to Admins
.DESCRIPTION
Ensures admins receive notifications when malware is detected.
Critical for security awareness and incident response.
.NOTES
Filename: malware-notifications-admins.ps1
Author: Nederlandse Baseline voor Veilige Cloud
.EXAMPLE
.\malware-notifications-admins.ps1 -Monitoring
Check if admin malware notifications are configured
[CmdletBinding()]
param (
[Parameter(Mandatory = $false )]
[switch ]$Monitoring ,
[Parameter(Mandatory = $false )]
[switch ]$Remediation ,
[switch ]$Revert ,
[switch ]$WhatIf
)
$ErrorActionPreference = 'Stop'
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Malware Notifications to Admins" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan
function Invoke-Monitoring {
function Invoke-Revert {
Write-Host "`nReverting configuration..." -ForegroundColor Cyan
try {
if ($WhatIf ) {
Write-Host " [WhatIf] Would revert configuration" -ForegroundColor Yellow
return
}
Write-Host " Configuration reverted" -ForegroundColor Green
Write-Host "`nRevert completed" -ForegroundColor Green
}
catch {
Write-Error "Error during revert: <
.SYNOPSIS
Malware Notifications to Admins
.DESCRIPTION
Ensures admins receive notifications when malware is detected.
Critical for security awareness and incident response.
.NOTES
Filename: malware-notifications-admins.ps1
Author: Nederlandse Baseline voor Veilige Cloud
.EXAMPLE
.\malware-notifications-admins.ps1 -Monitoring
Check if admin malware notifications are configured
[CmdletBinding()]
param (
[Parameter(Mandatory=$false )]
[switch ]$Monitoring ,
[Parameter(Mandatory=$false )]
[switch ]$Remediation ,
[switch ]$Revert ,
[switch ]$WhatIf
)
$ErrorActionPreference = 'Stop'
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Malware Notifications to Admins" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan
function Invoke-Monitoring {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
Write-Host "Checking malware filter policies..." -ForegroundColor Gray
$policies = Get-MalwareFilterPolicy -ErrorAction Stop
$result = @{
isCompliant = $false
totalPolicies = $policies .Count
withNotifications = 0
}
foreach ($policy in $policies ) {
$notifyInternal = $policy .InternalSenderAdminAddress.Count -gt 0
$notifyExternal = $policy .ExternalSenderAdminAddress.Count -gt 0
if ($notifyInternal -or $notifyExternal ) {
$result .withNotifications++
$result .isCompliant = $true
Write-Host " [OK] NOTIFICATIONS CONFIGURED: $($policy .Name)" -ForegroundColor Green
if ($notifyInternal ) {
Write-Host " Internal sender notifications: $($policy .InternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
if ($notifyExternal ) {
Write-Host " External sender notifications: $($policy .ExternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
}
else {
Write-Host " β οΈ NO NOTIFICATIONS: $($policy .Name)" -ForegroundColor Yellow
}
}
Write-Host "`n Total policies: $($result .totalPolicies)" -ForegroundColor Cyan
Write-Host " With admin notifications: $($result .withNotifications)" -ForegroundColor $(
if ($result .withNotifications -gt 0 ) { 'Green' } else { 'Red' }
)
if ($result .isCompliant) {
Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green
exit 0
}
else {
Write-Host "`n[FAIL] NON-COMPLIANT - Configure admin notifications!" -ForegroundColor Red
exit 1
}
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Remediation {
try {
Write-Host "β οΈ Configure malware notifications via Exchange Admin Center" -ForegroundColor Yellow
Write-Host "`nSteps:" -ForegroundColor Cyan
Write-Host " 1 . Exchange Admin Center > Mail flow > Rules" -ForegroundColor Gray
Write-Host " 2 . Or: Security & Compliance > Threat management > Policy" -ForegroundColor Gray
Write-Host " 3 . Anti-malware > Edit default policy" -ForegroundColor Gray
Write-Host " 4 . Notifications section:" -ForegroundColor Gray
Write-Host " β’ Notify internal sender: Add admin email" -ForegroundColor Gray
Write-Host " β’ Notify admin about undelivered: Add admin email" -ForegroundColor Gray
Write-Host " 5 . Save changes" -ForegroundColor Gray
Write-Host "`nπ Recommended notification recipients:" -ForegroundColor Cyan
Write-Host " β’ Security team email (security@domain.com)" -ForegroundColor Gray
Write-Host " β’ SOC team" -ForegroundColor Gray
Write-Host " β’ IT helpdesk" -ForegroundColor Gray
exit 0
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
try {
if ($Monitoring ) {
Invoke-Monitoring
}
elseif ($Remediation ) {
Invoke-Remediation
}
else {
Write-Host "Use: -Monitoring or -Remediation" -ForegroundColor Yellow
}
}
catch {
throw
}
finally {
Write-Host "`n========================================`n" -ForegroundColor Cyan
}
"
throw
}
}
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
Write-Host "Checking malware filter policies..." -ForegroundColor Gray
$policies = Get-MalwareFilterPolicy -ErrorAction Stop
$result = @{
isCompliant = $false
totalPolicies = $policies .Count
withNotifications = 0
}
foreach ($policy in $policies ) {
$notifyInternal = $policy .InternalSenderAdminAddress.Count -gt 0
$notifyExternal = $policy .ExternalSenderAdminAddress.Count -gt 0
if ($notifyInternal -or $notifyExternal ) {
$result .withNotifications++
$result .isCompliant = $true
Write-Host " [OK] NOTIFICATIONS CONFIGURED: $($policy .Name)" -ForegroundColor Green
if ($notifyInternal ) {
Write-Host " Internal sender notifications: $($policy .InternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
if ($notifyExternal ) {
Write-Host " External sender notifications: $($policy .ExternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
}
else {
Write-Host " β οΈ NO NOTIFICATIONS: $($policy .Name)" -ForegroundColor Yellow
}
}
Write-Host "`n Total policies: $($result .totalPolicies)" -ForegroundColor Cyan
Write-Host " With admin notifications: $($result .withNotifications)" -ForegroundColor $(
if ($result .withNotifications -gt 0 ) { 'Green' } else { 'Red' }
)
if ($result .isCompliant) {
Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green
exit 0
}
else {
Write-Host "`n[FAIL] NON-COMPLIANT - Configure admin notifications!" -ForegroundColor Red
exit 1
}
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Remediation {
function Invoke-Revert {
Write-Host "`nReverting configuration..." -ForegroundColor Cyan
try {
if ($WhatIf ) {
Write-Host " [WhatIf] Would revert configuration" -ForegroundColor Yellow
return
}
Write-Host " Configuration reverted" -ForegroundColor Green
Write-Host "`nRevert completed" -ForegroundColor Green
}
catch {
Write-Error "Error during revert: <
.SYNOPSIS
Malware Notifications to Admins
.DESCRIPTION
Ensures admins receive notifications when malware is detected.
Critical for security awareness and incident response.
.NOTES
Filename: malware-notifications-admins.ps1
Author: Nederlandse Baseline voor Veilige Cloud
.EXAMPLE
.\malware-notifications-admins.ps1 -Monitoring
Check if admin malware notifications are configured
[CmdletBinding()]
param (
[Parameter(Mandatory=$false )]
[switch ]$Monitoring ,
[Parameter(Mandatory=$false )]
[switch ]$Remediation ,
[switch ]$Revert ,
[switch ]$WhatIf
)
$ErrorActionPreference = 'Stop'
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Malware Notifications to Admins" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan
function Invoke-Monitoring {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
Write-Host "Checking malware filter policies..." -ForegroundColor Gray
$policies = Get-MalwareFilterPolicy -ErrorAction Stop
$result = @{
isCompliant = $false
totalPolicies = $policies .Count
withNotifications = 0
}
foreach ($policy in $policies ) {
$notifyInternal = $policy .InternalSenderAdminAddress.Count -gt 0
$notifyExternal = $policy .ExternalSenderAdminAddress.Count -gt 0
if ($notifyInternal -or $notifyExternal ) {
$result .withNotifications++
$result .isCompliant = $true
Write-Host " [OK] NOTIFICATIONS CONFIGURED: $($policy .Name)" -ForegroundColor Green
if ($notifyInternal ) {
Write-Host " Internal sender notifications: $($policy .InternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
if ($notifyExternal ) {
Write-Host " External sender notifications: $($policy .ExternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
}
else {
Write-Host " β οΈ NO NOTIFICATIONS: $($policy .Name)" -ForegroundColor Yellow
}
}
Write-Host "`n Total policies: $($result .totalPolicies)" -ForegroundColor Cyan
Write-Host " With admin notifications: $($result .withNotifications)" -ForegroundColor $(
if ($result .withNotifications -gt 0 ) { 'Green' } else { 'Red' }
)
if ($result .isCompliant) {
Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green
exit 0
}
else {
Write-Host "`n[FAIL] NON-COMPLIANT - Configure admin notifications!" -ForegroundColor Red
exit 1
}
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Remediation {
try {
Write-Host "β οΈ Configure malware notifications via Exchange Admin Center" -ForegroundColor Yellow
Write-Host "`nSteps:" -ForegroundColor Cyan
Write-Host " 1 . Exchange Admin Center > Mail flow > Rules" -ForegroundColor Gray
Write-Host " 2 . Or: Security & Compliance > Threat management > Policy" -ForegroundColor Gray
Write-Host " 3 . Anti-malware > Edit default policy" -ForegroundColor Gray
Write-Host " 4 . Notifications section:" -ForegroundColor Gray
Write-Host " β’ Notify internal sender: Add admin email" -ForegroundColor Gray
Write-Host " β’ Notify admin about undelivered: Add admin email" -ForegroundColor Gray
Write-Host " 5 . Save changes" -ForegroundColor Gray
Write-Host "`nπ Recommended notification recipients:" -ForegroundColor Cyan
Write-Host " β’ Security team email (security@domain.com)" -ForegroundColor Gray
Write-Host " β’ SOC team" -ForegroundColor Gray
Write-Host " β’ IT helpdesk" -ForegroundColor Gray
exit 0
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
try {
if ($Monitoring ) {
Invoke-Monitoring
}
elseif ($Remediation ) {
Invoke-Remediation
}
else {
Write-Host "Use: -Monitoring or -Remediation" -ForegroundColor Yellow
}
}
catch {
throw
}
finally {
Write-Host "`n========================================`n" -ForegroundColor Cyan
}
"
throw
}
}
try {
Write-Host "β οΈ Configure malware notifications via Exchange Admin Center" -ForegroundColor Yellow
Write-Host "`nSteps:" -ForegroundColor Cyan
Write-Host " 1 . Exchange Admin Center > Mail flow > Rules" -ForegroundColor Gray
Write-Host " 2 . Or: Security & Compliance > Threat management > Policy" -ForegroundColor Gray
Write-Host " 3 . Anti-malware > Edit default policy" -ForegroundColor Gray
Write-Host " 4 . Notifications section:" -ForegroundColor Gray
Write-Host " β’ Notify internal sender: Add admin email" -ForegroundColor Gray
Write-Host " β’ Notify admin about undelivered: Add admin email" -ForegroundColor Gray
Write-Host " 5 . Save changes" -ForegroundColor Gray
Write-Host "`nπ Recommended notification recipients:" -ForegroundColor Cyan
Write-Host " β’ Security team email (security@domain.com)" -ForegroundColor Gray
Write-Host " β’ SOC team" -ForegroundColor Gray
Write-Host " β’ IT helpdesk" -ForegroundColor Gray
exit 0
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Revert {
Write-Host "`nReverting configuration..." -ForegroundColor Cyan
try {
if ($WhatIf ) {
Write-Host " [WhatIf] Would revert configuration" -ForegroundColor Yellow
return
}
Write-Host " Configuration reverted" -ForegroundColor Green
Write-Host "`nRevert completed" -ForegroundColor Green
}
catch {
Write-Error "Error during revert: <
.SYNOPSIS
Malware Notifications to Admins
.DESCRIPTION
Ensures admins receive notifications when malware is detected.
Critical for security awareness and incident response.
.NOTES
Filename: malware-notifications-admins.ps1
Author: Nederlandse Baseline voor Veilige Cloud
.EXAMPLE
.\malware-notifications-admins.ps1 -Monitoring
Check if admin malware notifications are configured
[CmdletBinding()]
param (
[Parameter(Mandatory=$false )]
[switch ]$Monitoring ,
[Parameter(Mandatory=$false )]
[switch ]$Remediation ,
[switch ]$Revert ,
[switch ]$WhatIf
)
$ErrorActionPreference = 'Stop'
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "Malware Notifications to Admins" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan
function Invoke-Monitoring {
try {
Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop
Write-Host "Checking malware filter policies..." -ForegroundColor Gray
$policies = Get-MalwareFilterPolicy -ErrorAction Stop
$result = @{
isCompliant = $false
totalPolicies = $policies .Count
withNotifications = 0
}
foreach ($policy in $policies ) {
$notifyInternal = $policy .InternalSenderAdminAddress.Count -gt 0
$notifyExternal = $policy .ExternalSenderAdminAddress.Count -gt 0
if ($notifyInternal -or $notifyExternal ) {
$result .withNotifications++
$result .isCompliant = $true
Write-Host " [OK] NOTIFICATIONS CONFIGURED: $($policy .Name)" -ForegroundColor Green
if ($notifyInternal ) {
Write-Host " Internal sender notifications: $($policy .InternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
if ($notifyExternal ) {
Write-Host " External sender notifications: $($policy .ExternalSenderAdminAddress.Count) recipients" -ForegroundColor Cyan
}
}
else {
Write-Host " β οΈ NO NOTIFICATIONS: $($policy .Name)" -ForegroundColor Yellow
}
}
Write-Host "`n Total policies: $($result .totalPolicies)" -ForegroundColor Cyan
Write-Host " With admin notifications: $($result .withNotifications)" -ForegroundColor $(
if ($result .withNotifications -gt 0 ) { 'Green' } else { 'Red' }
)
if ($result .isCompliant) {
Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green
exit 0
}
else {
Write-Host "`n[FAIL] NON-COMPLIANT - Configure admin notifications!" -ForegroundColor Red
exit 1
}
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
function Invoke-Remediation {
try {
Write-Host "β οΈ Configure malware notifications via Exchange Admin Center" -ForegroundColor Yellow
Write-Host "`nSteps:" -ForegroundColor Cyan
Write-Host " 1 . Exchange Admin Center > Mail flow > Rules" -ForegroundColor Gray
Write-Host " 2 . Or: Security & Compliance > Threat management > Policy" -ForegroundColor Gray
Write-Host " 3 . Anti-malware > Edit default policy" -ForegroundColor Gray
Write-Host " 4 . Notifications section:" -ForegroundColor Gray
Write-Host " β’ Notify internal sender: Add admin email" -ForegroundColor Gray
Write-Host " β’ Notify admin about undelivered: Add admin email" -ForegroundColor Gray
Write-Host " 5 . Save changes" -ForegroundColor Gray
Write-Host "`nπ Recommended notification recipients:" -ForegroundColor Cyan
Write-Host " β’ Security team email (security@domain.com)" -ForegroundColor Gray
Write-Host " β’ SOC team" -ForegroundColor Gray
Write-Host " β’ IT helpdesk" -ForegroundColor Gray
exit 0
}
catch {
Write-Host "`n[FAIL] ERROR: $_ " -ForegroundColor Red
exit 2
}
}
try {
if ($Monitoring ) {
Invoke-Monitoring
}
elseif ($Remediation ) {
Invoke-Remediation
}
else {
Write-Host "Use: -Monitoring or -Remediation" -ForegroundColor Yellow
}
}
catch {
throw
}
finally {
Write-Host "`n========================================`n" -ForegroundColor Cyan
}
"
throw
}
}
try {
if ($Monitoring ) {
Invoke-Monitoring
}
elseif ($Remediation ) {
Invoke-Remediation
}
else {
Write-Host "Use: -Monitoring or -Remediation" -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