安全性記錄中大量事件 ID 4624 且標註「審核失敗」 (實為 4625 登入失敗,或 4624 登入類型異常) 通常預示著正在進行的 RDP/網路共用暴力破解攻擊。本文提供快速分析、來源 IP 提取、防火牆封鎖與稽核調整的應急處置流程。
4625 (登入失敗) — 若每分鐘數十筆,極大機率為暴力破解。


# 參數區
$blockDurationMinutes = 60
$thresholdPerMinute = 20 # 單一 IP 每分鐘失敗超過此值即封鎖
# 1. 從安全性記錄近 5 分鐘提取失敗登入 IP 統計
$events = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4625
StartTime = (Get-Date).AddMinutes(-5)
} -ErrorAction SilentlyContinue
$ipCounts = $events | ForEach-Object {
$xml = [xml]$_.ToXml()
$ip = $xml.Event.EventData.Data | Where-Object { $_.Name -eq 'IpAddress' } | Select-Object -ExpandProperty '#text'
$ip
} | Where-Object { $_ -ne '-' -and $_ -ne '::1' -and $_ -ne '127.0.0.1' } | Group-Object | Where-Object { $_.Count -ge $thresholdPerMinute }
# 2. 為超閾值 IP 建立防火牆封鎖規則 (含自動清除排程)
foreach ($grp in $ipCounts) {
$ip = $grp.Name
$ruleName = "AutoBlock_BruteForce_$ip"
if (-not (Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -DisplayName $ruleName -Direction Inbound -RemoteAddress $ip -Action Block -Profile Any -Description "Auto-blocked brute force at $(Get-Date)"
# 排程自動移除
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument "-Command Remove-NetFirewallRule -DisplayName '$ruleName'"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes($blockDurationMinutes)
Register-ScheduledTask -TaskName "Remove_$ruleName" -Action $action -Trigger $trigger -RunLevel Highest -Force
Write-Host "Blocked $ip ($($grp.Count) attempts in 5 min)" -ForegroundColor Red
}
}
gpedit.msc → 電腦設定 → Windows 設定 → 安全性設定 → 帳戶原則 → 帳戶鎖定原則。5 次無效登入15 分鐘15 分鐘 (或 0 需管理員解鎖)將 RDP 連接埠完全從網際網路/非信任網段隱藏,僅允許經過 RD Gateway (HTTPS 443) 或 VPN/IPsec 隧道的驗證連線進入,徹底斷絕暴力破解攻擊面。
面對安全性記錄狂刷,核心策略是「快速識別 → 即時封鎖 → 策略硬化 → 架構隔離」。Windows Server 2008 原生工具 (事件檢視器、防火牆、群組原則、PowerShell) 足以完成前三階段應急處置,為長期架構升級爭取時間。