开始输入,可搜索发票、服务、域名、工单,以及 更多...
公网上的 Windows 服务器开机几分钟就会被扫描 3389 端口并尝试暴力破解,Windows VPS 安全加固是上线后的第一件事。本文适用于 Windows Server 2016/2019/2022,按顺序完成:修改管理员强密码并重命名、设置账户锁定策略、启用远程桌面 NLA、限制只有你的 IP 能连 RDP、关闭不用的服务、确认 Defender 正常,以及用 Get-WinEvent 查看 4625 失败登录记录。
密码建议 16 位以上,混合大小写、数字和符号,不要与其他网站共用。暴力破解工具几乎都以 Administrator 为用户名,重命名后可以挡掉大部分无差别攻击。
# Set a new strong password (you will be prompted, nothing is echoed)
net user Administrator *
# Rename the built-in Administrator account
Rename-LocalUser -Name "Administrator" -NewName "srvadmin"
Get-LocalUser | Format-Table Name,Enabled,LastLogon账户锁定策略可以让连续输错密码的账户暂时锁定,显著拖慢暴力破解。也可在 secpol.msc → 账户策略 → 账户锁定策略 中图形化设置。
# Lock an account for 30 minutes after 5 failed attempts within 30 minutes
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
net accountsNLA 要求在建立完整远程桌面会话之前先完成身份验证,可减少未认证连接对服务器资源的占用,也能防御部分 RDP 漏洞。在“系统属性 → 远程”中勾选“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”,或执行:
$rdp = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $rdp -Name UserAuthentication -Value 1
Get-ItemProperty -Path $rdp -Name UserAuthentication, PortNumber这是防爆破效果最好的一步。下面修改系统内置的远程桌面防火墙规则,只放行你的办公 IP 或网段。规则名称在中文、英文等各语言系统上都一致。如果你修改过 RDP 端口并新建了自定义规则,请对自定义规则同样设置 -RemoteAddress。
# Built-in Remote Desktop rules (names are the same on every OS language)
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress 203.0.113.10, 198.51.100.0/24
Get-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP | Get-NetFirewallAddressFilter
# Undo: allow RDP from anywhere again
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress Any每个运行中的服务都是潜在的攻击面。先列出正在运行的服务,确认用途后再停用。打印后台处理程序(Spooler)在服务器上通常用不到,且历史上出现过严重漏洞。不确定用途的系统服务不要随意关闭。
Get-Service | Where-Object { $_.Status -eq "Running" } | Sort-Object DisplayName | Format-Table Name,DisplayName
# Example: print spooler is rarely needed on a server
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType DisabledWindows Server 2016 及以上自带 Microsoft Defender 防病毒。确认实时保护已开启、病毒库为最新,并执行一次快速扫描。
Get-MpComputerStatus | Select-Object AMServiceEnabled,RealTimeProtectionEnabled,AntivirusSignatureLastUpdated
Set-MpPreference -DisableRealtimeMonitoring $false
Update-MpSignature
Start-MpScan -ScanType QuickScan事件 ID 4625 表示一次失败的登录。下面的命令可以列出最近的失败登录,以及过去 24 小时尝试次数最多的来源 IP,方便判断是否正在被暴力破解,并把可疑 IP 加入防火墙阻止规则。
# Make sure failed logons are audited (GUID = "Logon" subcategory, language independent)
auditpol /set /subcategory:"{0CCE9215-69AE-11D9-BED3-505054503030}" /failure:enable
# Last 20 failed logons
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}
# Top attacking IPs in the last 24 hours
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddDays(-1)} |
ForEach-Object { $_.Properties[19].Value } | Group-Object | Sort-Object Count -Descending |
Select-Object -First 10 Count, Name改端口能减少自动扫描的噪音,但不能替代强密码和 IP 限制。三者配合效果最好,改端口方法见“Windows 修改远程桌面端口”教程。
可以放行运营商的整个网段,或通过一台固定 IP 的跳板机 / VPN 登录,再从那里连接远程桌面。
一般是本地登录或 NLA 阶段未能记录来源地址。若大量出现,可结合防火墙日志一起分析。
如按以上步骤仍无法解决,请提交工单联系 IMIDC 7×24 技术支持,并附上服务器 IP、操作系统版本、执行过的命令和报错截图,方便工程师快速定位问题。