ESC

开始输入,可搜索发票、服务、域名、工单,以及 更多...

搜索... Ctrl+K
Windows 服务器

Windows VPS 安全加固教程:远程桌面防爆破、账户锁定与登录审计

7 个步骤 9 分钟阅读 3 次阅读 0
本文目录

公网上的 Windows 服务器开机几分钟就会被扫描 3389 端口并尝试暴力破解,Windows VPS 安全加固是上线后的第一件事。本文适用于 Windows Server 2016/2019/2022,按顺序完成:修改管理员强密码并重命名、设置账户锁定策略、启用远程桌面 NLA、限制只有你的 IP 能连 RDP、关闭不用的服务、确认 Defender 正常,以及用 Get-WinEvent 查看 4625 失败登录记录。

步骤 1:设置 Administrator 强密码并重命名

密码建议 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
重命名后,远程桌面登录时用户名要改成新名字。请先记录好新用户名和密码再断开连接。若日后需要通过客户中心重置密码,部分系统工具可能仍按 Administrator 处理,遇到问题请提交工单说明已改名。

步骤 2:配置账户锁定策略

账户锁定策略可以让连续输错密码的账户暂时锁定,显著拖慢暴力破解。也可在 secpol.msc → 账户策略 → 账户锁定策略 中图形化设置。

# Lock an account for 30 minutes after 5 failed attempts within 30 minutes
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
net accounts
在较早的系统版本中,内置 Administrator 账户默认不受锁定策略约束。因此重命名、强密码和步骤 4 的 IP 限制仍然是最关键的防线。

步骤 3:启用远程桌面网络级身份验证(NLA)

NLA 要求在建立完整远程桌面会话之前先完成身份验证,可减少未认证连接对服务器资源的占用,也能防御部分 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

步骤 4:只允许你的 IP 连接远程桌面

这是防爆破效果最好的一步。下面修改系统内置的远程桌面防火墙规则,只放行你的办公 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
设置前请确认你当前的公网 IP(家庭宽带 IP 可能会变化)。填错 IP 会立即断开且无法再连接,此时请提交工单由技术支持协助恢复。

步骤 5:关闭不需要的服务

每个运行中的服务都是潜在的攻击面。先列出正在运行的服务,确认用途后再停用。打印后台处理程序(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 Disabled

步骤 6:确认 Windows Defender 已启用并更新

Windows Server 2016 及以上自带 Microsoft Defender 防病毒。确认实时保护已开启、病毒库为最新,并执行一次快速扫描。

Get-MpComputerStatus | Select-Object AMServiceEnabled,RealTimeProtectionEnabled,AntivirusSignatureLastUpdated
Set-MpPreference -DisableRealtimeMonitoring $false
Update-MpSignature
Start-MpScan -ScanType QuickScan

步骤 7:用 Get-WinEvent 审计 4625 失败登录

事件 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 经常变,无法固定白名单怎么办?

可以放行运营商的整个网段,或通过一台固定 IP 的跳板机 / VPN 登录,再从那里连接远程桌面。

4625 记录里 IP 显示为“-”是什么意思?

一般是本地登录或 NLA 阶段未能记录来源地址。若大量出现,可结合防火墙日志一起分析。

如按以上步骤仍无法解决,请提交工单联系 IMIDC 7×24 技术支持,并附上服务器 IP、操作系统版本、执行过的命令和报错截图,方便工程师快速定位问题。

这篇文章有帮助吗?

相关教程