none
按照CIS Benchmark加固Windows server 2019,如何避免远程连接断开。 RRS feed

  • 问题

  • 最近项目要求按照CIS Benchmark L1对Windows Server 2019做加固,匹配后会导致远程连接断开,想咨询下,如果在匹配CIS合规性的情况下,避免出现这个问题,非常感谢。
    2021年3月26日 9:54

全部回复

  • 您好!
    首先,请您提供针对Windows Server 2019做CIS Benchmark L1加固部署环节中,有关RDP设置的详细操作信息。
    其次,关于您问题中描述的 “匹配后会导致远程连接断开” 事宜,如有报错信息,请您收集此时RDP的报错信息。
    通常,用户可以通过RDC应用程序,达到实现两台并发设备之间远程桌面服务的目的,或者用户可以通过添加角色方式去部署一个RDS环境,达到实现多台并发设备远程桌面服务的目的。我们需要结合您所选择的以上方式当中的一种来进一步分析可能存在的问题。
    除此之外,通过以下这些适用于 Windows Server 的远程桌面服务设置,也可帮助你排查和自行解决与远程桌面服务相关的问题。
    第一,检查本地,以及远程计算机上 RDP 协议的状态。
    本地:简单的方法是使用“设置”下的远程桌面选项。
    远程:请认真遵循本部分的说明。 如果错误地修改了注册表,可能会出现严重问题。 开始修改注册表之前,请备份注册表,这样就可以在出错时还原它。
    若要检查和更改远程计算机上 RDP 协议的状态,请使用网络注册表连接:
    1. 首先转到“开始”菜单,然后选择“运行” 。 在出现的文本框中,输入“regedt32”。
    2. 在注册表编辑器中选择“文件”,然后选择“连接网络注册表”。
    3. 在“选择计算机”对话框中输入远程计算机的名称,然后依次选择“检查名称”、“确定”。
    4. 导航到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server”。 
      • 如果 fDenyTSConnections 项的值为 0,则表明已启用 RDP。
      • 如果 fDenyTSConnections 项的值为 1,则表明已禁用 RDP。
    5.  若要启用 RDP,请将 fDenyTSConnections 的值从 1 更改为 0。

    第二,检查组策略对象 (GPO) 是否正在阻止本地和远程计算机上的 RDP。
    本地
    如果无法在用户界面中启用 RDP,或者在更改 fDenyTSConnections 的值后该值恢复为 1,则表明某个 GPO 可能取代了计算机级别的设置。
    若要检查本地计算机上的组策略配置,请以管理员身份打开命令提示符窗口,然后输入以下命令:
    cmd
    gpresult /H c:\gpresult.html
    完成此命令后,打开 gpresult.html。 在“计算机配置”\“管理模板”\“Windows 组件”\“远程桌面服务”\“远程桌面会话主机”\“连接”中,找到“允许用户通过使用远程桌面服务进行远程连接”策略。
    如果此策略的设置为“启用”,则表明组策略未阻止 RDP 连接。
    如果此策略的设置为“已禁用”,请检查“入选的 GPO”。 正在此 GPO 在阻止 RDP 连接。 
    远程
    若要检查远程计算机上的组策略配置,所用的命令基本上与本地计算机相同:
    cmd
    gpresult /S <computer name> /H c:\gpresult-<computer name>.html
    此命令生成的文件 (gpresult- <computer name>.html) 使用的信息格式与本地计算机版本 (gpresult.html) 使用的格式相同。

    第三,检查 RDP 服务的状态。
    在本地(客户端)计算机和远程(目标)计算机上,以下服务应该正在运行:
    • 远程桌面服务 (TermService)
    • 远程桌面服务用户模式端口重定向程序 (UmRdpService)
    可以使用“服务”MMC 管理单元在本地或远程管理这些服务。 还可以通过本地或远程方式使用 PowerShell 来管理服务(如果远程计算机配置为接受远程 PowerShell cmdlet)。

    在任意计算机上,如果上述一个或两个服务未运行,请启动它们。(如果启动了“远程桌面服务”服务,请单击“是”自动重启“远程桌面服务用户模式端口重定向程序”服务。

    第四,检查另一个应用程序是否未尝试使用同一个端口

    在本地(客户端)计算机和远程(目标)计算机上,RDP 侦听器应在端口 3389 上运行。 不应有任何其他应用程序正在使用此端口。(请认真遵循本部分的说明。 如果错误地修改了注册表,可能会出现严重问题。 开始修改注册表之前,请备份注册表,这样就可以在出错时还原它。)

    若要检查或更改 RDP 端口,请使用注册表编辑器:
    1. 转到“开始”菜单,选择“运行” ,然后将 regedt32 输入显示的文本框中。 
      • 若要连接到远程计算机,请依次选择“文件”、“连接网络注册表”。
      • 在“选择计算机”对话框中输入远程计算机的名称,然后依次选择“检查名称”、“确定”。
    2. 打开注册表并导航到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\<listener>”。 
    3. 如果 PortNumber 的值不是 3389,请将其更改为 3389。 (可以使用另一个端口来操作远程桌面服务。 但是,我们不建议这样做。 本文不介绍如何排查该类配置的问题。)
    4. 更改端口号后,重启“远程桌面服务”服务。

    第五,检查另一个应用程序是否未尝试使用同一个端口。
    请使用具有管理权限的 PowerShell 实例完成此过程。 对于本地计算机,还可以使用具有管理权限的命令提示符。 但是,此过程使用 PowerShell,因为同一 cmdlet 可以通过本地和远程方式运行。
    1.  打开 PowerShell 窗口。 若要连接到远程计算机,请输入 Enter-PSSession -ComputerName <computer name>。
    2. 输入以下命令:PowerShell
      cmd /c 'netstat -ano | find "3389"'  
    3. 查找状态为“正在监听”的 TCP 端口 3389(或分配的 RDP 端口)条目 。(使用该端口的进程或服务的进程标识符 (PID) 显示在 PID 列下。)
    4. 若要确定哪个应用程序正在使用端口 3389(或分配的 RDP 端口),请输入以下命令:
      PowerShell
      cmd /c 'tasklist /svc | find "<pid listening on 3389>"' 
    5. 查找与该端口关联的 PID 号条目(查看 netstat 输出)。 右列会显示与该 PID 关联的服务或进程。
    6. 如果除远程桌面服务 (TermServ.exe) 以外的某个应用程序或服务正在使用该端口,你可以使用以下方法之一来解决冲突:
      • 将该应用程序或服务配置为使用其他端口(建议)。
      • 卸载该应用程序或服务。
      • 将 RDP 配置为使用其他端口,然后重启“远程桌面服务”服务(不建议)。
    第六,检查防火墙是否正在阻止 RDP 端口。
    使用 psping 工具测试是否可以通过端口 3389 访问受影响的计算机。
    1. 转到另一台不受影响的计算机,从 https://live.sysinternals.com/psping.exe 下载 psping。
    2. 以管理员身份打开命令提示符窗口,切换到安装了 psping 的目录,然后输入以下命令:psping -accepteula <computer IP>:3389
    3. 在 psping 命令的输出中检查如下所示的结果:
      • 连接到 <computer IP> :远程计算机可访问。
      • (0% loss) :所有连接尝试均成功。
      • The remote computer refused the network connection:远程计算机不可访问。
      • (100% loss) :所有连接尝试均失败。
    4. 在多台计算机上运行 psping,以测试它们是否能够连接到受影响的计算机。
    5. 请注意受影响的计算机是阻止了来自所有其他计算机的连接、来自某些其他计算机的连接,还是仅来自其他一台计算机的连接。
    6. 建议的后续步骤:
      • 咨询网络管理员,验证网络是否允许 RDP 流量传输到受影响的计算机。
      • 调查源计算机与受影响计算机之间的任何防火墙配置(包括受影响计算机上的 Windows 防火墙),以确定防火墙是否正在阻止 RDP 端口。
    2021年4月1日 13:16