powershell可精细管控rdp安全:强制nla(userauthentication=1)、限制remote desktop users组成员、新建内网专用防火墙规则(禁用public配置文件)、禁用tls 1.0/1.1及credssp降级,并重启termservice生效。
powershell 可以直接修改注册表、防火墙规则和组策略相关设置,从而精细控制 windows 远程桌面(rdp)的安全行为。重点不是“开启远程桌面”,而是确保它只在受控条件下运行——比如强制网络级别身份验证(nla)、限制用户范围、锁定端口访问、禁用不安全的旧协议等。
强制启用网络级别身份验证(NLA)
NLA 要求用户在建立完整桌面会话前先完成身份验证,能有效防止暴力破解和中间人攻击。PowerShell 通过修改注册表启用:
- 以管理员身份运行 PowerShell
- 执行命令:Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'UserAuthentication' -Value 1
- 该值设为 1 表示强制 NLA;设为 0 则禁用(不推荐)
- 无需重启服务,下次连接时即生效
限制允许远程登录的用户组
仅添加明确需要远程访问的账户,避免使用内置 Administrator 或开放 Everyone 组。PowerShell 本身不直接管理用户列表,但可配合 net localgroup 命令快速配置:
- 查看当前远程桌面用户组成员:net localgroup "Remote Desktop Users"
- 添加指定用户(如 testuser):net localgroup "Remote Desktop Users" testuser /add
- 移除不需要的账户:net localgroup "Remote Desktop Users" baduser /delete
- 注意:该组成员必须同时具备“允许本地登录”权限,否则仍无法连接
收紧防火墙规则,仅允许可信来源
默认放行所有入站 RDP(TCP 3389)风险较高。建议限制源 IP 或子网,并禁用公共网络上的 RDP 入站:
- 删除默认全开规则:Remove-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)"
- 新建仅限内网的规则(例如 192.168.1.0/24):New-NetFirewallRule -DisplayName "RDP LAN Only" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24 -Action Allow -Profile Domain,Private
- 确保 -Profile 不含 Public,防止公网暴露
禁用不安全的 RDP 子系统与旧加密
Windows 10/11 默认已禁用弱加密,但若环境中有老旧客户端或曾手动调整过策略,可通过注册表加固:
- 禁用 TLS 1.0/1.1(如需完全合规):Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Name 'Enabled' -Value 0 -Force(同理设置 TLS 1.1)
- 禁止使用 CredSSP 加密降级(缓解 CVE-2018-0886):Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation' -Name 'AllowSavedCredentialsWithCredSsp' -Value 0 -Force
- 以上操作后建议重启 TermService 服务:Restart-Service TermService -Force











