启用 Windows 防火墙时 PsExec 连接速度较慢

启用 Windows 防火墙时 PsExec 连接速度较慢

情况:

在 Windows 防火墙处于活动状态时,运行 PsExec 需要 20 秒,而在禁用防火墙的情况下则需要 1 秒。

防火墙中添加的例外:

如果没有这两个,它根本无法连接。目标机器运行 Windows 10。在 20 秒的等待期间,它显示“正在启动 PsEXESVC”

经过简单的 wireshark 检查我们发现,我们还需要打开另一个正在请求的端口。

  • 我第一次运行这个程序时是 49669,第二次是 49670

不知道为什么,也不知道它会接受什么范围,有什么想法吗?

是否有一份 PSEXEC 需要打开哪些端口的明确列表?

在 Windows 10 上启用 Windows 防火墙的情况下,无法移动到其他端口,从而导致延迟(所有入站“远程......”防火墙规则都已启用)

答案1

显然,这是启用“远程服务管理”时组策略客户端出现的问题。

解决方法是运行以下命令:

netsh advfirewall firewall set rule name="Remote Service Management (RPC)" profile=domain new enable=yes

我使用 PsExec(运行缓慢)远程批量执行了此操作,如下所示,给定受影响的工作站,在 Workstations.txt 中每行一个计算机名称:

for /f %i in (workstations.txt) do @start /B psexec \\%i netsh advfirewall firewall set rule name="Remote Service Management (RPC)" profile=domain new enable=yes

执行psexec @workstations.txt(而不是使用 for 循环)仍会以串行方式缓慢地运行命令,延迟大约 20 秒。如果工作站数量合理,上述命令将同时启动所有工作站。当然还有其他方法可以远程运行命令,但这种方法对我来说效果很好。

来源:https://harryjohnston.wordpress.com/2009/12/18/delays-when-connecting-to-windows-7-clients-for-remote-administration/

答案2

PSExec 使用 RPC,它使用随机分配端口;对于现代 Windows,该范围在 49152+ 内。

如果您使用 Windows 防火墙,则有一个内置的“远程服务管理”规则将允许这些动态端口。如果您觉得有必要,还可以通过一些注册表调整来自定义它。

答案3

必须启用三条规则:

Remote Service Management (NP-In)
Remote Service Management (RPC)
Remote Service Management (RPC-EPMAP)

更多信息请点击这里: https://serverfault.com/a/1100581/965884

答案4

以下是允许 PSExec 远程进入所需的全部内容。按以下顺序在目标 PC 上运行这些。在 Win11 和 WinSer22 上测试:

PowerShell-管理员:

Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private

CMD-管理员:

winrm qc -force
netsh AdvFirewall firewall add rule name=PSExec dir=In action=allow protocol=TCP localport=RPC profile=domain,private program=""%WinDir%\system32\services.exe"" service=any
netsh AdvFirewall firewall set rule group="Remote Service Management" new enable=yes

您可能需要重新启动才能使所有更改生效。

相关内容