端口被防火墙而不是服务器阻止

信息安全 网络 防火墙 港口
2021-09-10 05:36:52

我在一次采访中被问到这个问题,我不确定答案。问题是“假设您正在检查防火墙后面的特定网络服务器上的开放端口,您如何确定网络服务器上哪些端口已关闭以及哪些端口被防火墙阻止。您可以使用任何您想要的工具”。

给我的一个提示是 traceroute 中使用的原理——即发送具有不同 TTL 值的数据包的想法,以便从中间设备发回超过 TTL 的消息。

可以实现这样一个目标的各种方法是什么(有或没有提示)。

1个回答

有一个名为 Firewalk 的工具旨在实现这一目标。它有点旧,但由于网络在那段时间没有太大变化,我希望它仍然可以工作。

文章教程项目主页

文章链接的白皮书现在位于http://packetfactory.openwall.net/projects/firewalk/firewalk-final.pdf

一般的概念是只要在防火墙后有一跳,你就可以设置一个数据包的 TTL,使它越过防火墙一跳并过期,从而导致一个 ICMP 响应被发送回给你。如果您没有收到响应,则防火墙阻止了该数据包。如果您收到响应,则防火墙没有阻止数据包(意味着目标主机必须是)。

这可能会出错,例如出站 ICMP 消息被防火墙拒绝,不同的防火墙可能会阻止入站或出站流量,一般数据包丢失,目标主机关闭或防火墙之后目标之前没有跃点服务器,但如果你得到一个积极的回应,那么你就知道它是准确的。Firewalk 工具具有尝试检测误报的技术。

traceroute尽管您可能需要调整选项,例如您发送的数据包的类型和大小,并且您将需要发送许多不同的探测以排除误报,但您可能可以获得类似的结果。白皮书traceroute在示例中广泛使用。