Windows 7 防火墙导致远程连接超时;应该拒绝连接

JT.*_*JT. 5 windows firewall windows-7 tcp windows-firewall

Windows 7 防火墙使用默认选项运行,以允许出站连接和阻止入站连接。我有一个进程试图从我的本地网络内定期连接,这很好。当接受连接的程序运行时,一切顺利。如果不是,Windows 7 防火墙会导致连接尝试超时,而不是拒绝连接(就像它应该做的那样)。

我尝试创建规则以明确允许该端口上的所有连接,但它仍然超时。我想知道防火墙是否阻止了RST数据包被发回?完全禁用公共配置文件会导致连接被拒绝(如预期),但防火墙规则不会。

这是我迄今为止尝试过但没有成功的规则:

端口类型,TCP,指定端口11211,允许连接,适用于Domain、Private、Public

有什么建议?

注意:当我说“拒绝”时,我指的是操作系统对连接的响应说“对不起,什么都没有在听”。在本地机器上测试一下。打开命令提示符并键入telnet localhost 60000. 您应该会看到如下内容: Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused

这是连接被拒绝。操作系统正在“拒绝”请求,因为(至少在我的系统上)没有任何东西在监听端口 60000。

现在试试telnet example.com 60000。等待。你最终会看到这样的事情: Trying 192.0.43.10... telnet: connect to address 192.0.43.10: Operation timed out

看到不同?example.com 上没有主机可以回复“拒绝”,因此您的本地操作系统(例如不是服务器)会说“没有任何东西,超时”。

非常不一样。问题是 Windows 7 防火墙没有产生应有的“拒绝”。我想知道如何解决这个问题。

小智 9

这是由于 Windows 防火墙功能称为“隐形模式”。这个想法是拒绝连接而不是超时将告诉攻击者该 IP 地址上实际上有一台计算机。随着连接尝试超时,希望攻击者将忽略计算机。有关隐身模式的更多信息,请参阅technet

您可以通过修改此处记录的注册表来禁用隐身模式:

Software\Policies\Microsoft\WindowsFirewall\DomainProfile, Software\Policies\Microsoft\WindowsFirewall\PrivateProfile, Software\Policies\Microsoft\WindowsFirewall\PublicProfile, Software\Policies\Microsoft\WindowsFirewall\StandardProfile添加一个REG_DWORD名为DisableStealthMode用的价值0x00000001

执行此操作后,您需要重新启动 Windows 防火墙服务以使更改生效。