如何允许(远程)IISReset 通过 Win Server 2008 上的防火墙

如何允许(远程)IISReset 通过 Win Server 2008 上的防火墙

我正在尝试运行以下命令来重置远程计算机上的 IIS。

IISReset <remoteMachine>

如果我禁用域防火墙,一切都会正常。启用防火墙后,我得到

RPC 服务器不可用。

最初,我尝试启用远程管理 (RPC-EPMAP) 和任何看起来有一点点关联的规则。然后我尝试启用所有预定义规则,但没有成功。

答案1

您可以尝试使用以下命令行向 Web 服务器上的防火墙添加入站规则:

netsh advfirewall firewall add rule name="Remote IIS inetinfo" dir=in action=allow description="Remote IIS Service Managment" program="%systemroot%\System32\inetsrv\inetinfo.exe" enable=yes

netsh advfirewall firewall add rule name="COM+ Remote Administration (All Programs)" dir=in action=allow description="" program="%windir%\system32\dllhost.exe" enable=yes localport=RPC protocol=tcp

当我尝试访问 IIS 服务时,我不得不使用这些来解决 WMI/RPC 问题。错误如下:

Creating an instance of the COM component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} from the IClassFactory failed due to the following error: 800706ba.

答案2

135/tcp只是端口映射器。它用于协商在高端口49152-65535/tcp在 Server 2008 中),因此您也需要允许该连接的端口。为了方便防火墙穿越,可以锁定端口

答案3

其他人已经确定的根本原因是 IISReset 需要 RPC,而默认情况下,在较新版本的 Windows 中,所需的端口默认被阻止(这是一件好事)。

需要开放两组端口:

  1. 135/tcpRPC Dynamic Port Range- 这是其他人提到的端口映射器。它协商要进行通信的端口
  2. RPC Dynamic Port Range - 这是上面协商的用于执行任务的端口范围。我找不到任何仍针对此范围有效的文档。正如@Ansgar Wiechers 提到的,这是一个高端口,在 Windows Server 2008 中发生了变化。我怀疑这种行为变化就是文档(https://support.microsoft.com/en-us/help/217351正式的 Microsoft KB217351 DCOM 端口范围配置问题)已被删除。

如果您使用 Windows 防火墙,它会提供一个助记符来打开端口范围@Greg Bray 的答案接近正确,但它会打开与 inetinfo.exe 的通信,据我所知,这是不需要的。

以下对我们有用:

netsh advfirewall firewall add rule name="COM+ (DCOM-In) Port Mapper" dir=in action=allow description="Allow Communication to the DCOM Service Control Manager" enable=yes localport=135 protocol=tcp remoteip=x.x.x.x

netsh advfirewall firewall add rule name="COM+ (DCOM-In) Dynamic Port Range" dir=in action=allow description="Allow DCOM Communication" enable=yes localport=RPC protocol=tcp remoteip=x.x.x.x

我将解释上述命令的每个部分:

  • netsh advfirewall firewall add rule
    • 我们将向 Windows 防火墙添加一条规则
  • name="xxx"
    • 此规则的名称;根据需要自定义
  • dir=in
    • 这是一条传入规则
  • action=allow
    • 我们将允许沟通
  • description="xxx"
    • 描述;根据您的需要进行自定义。
  • enable=yes
    • 我们希望启用这些规则
  • localport=135
    • 在第一次使用中,我们明确开放了一个端口号
  • localport=RPC
    • 在第二个命令中,我们将其设置为RPC,它告诉 Windows 防火墙它是否在动态端口范围内,以允许它,而无需单独指定每个端口
  • protocol=tcp
    • 所有 RPC 调用都使用TCP,因此我们将其指定为协议
  • remoteip=x.x.x.x
    • 这非常重要;它表示此防火墙规则应仅适用于指定的 IP 地址。虽然这不是必需的,但强烈建议您指定此项以严格定义防火墙规则。

相关内容