我很难弄清楚这一点。据说,nmap
可以通过使用 或 ACK 扫描来区分有状态防火墙和无状态防火墙-sA
,但我不知道如何从nmap
ACK 扫描的输出中辨别这一事实。
据我所知,nmap
将 ACK 标记的数据包发送到目标,目标将根据某些标准响应或不响应。
- 如果端口打开或关闭且未过滤,目标将响应 RST。
- 如果过滤器正在丢弃流量,目标将根本不会响应
- 如果过滤器拒绝流量,目标将发送 ICMP 错误消息
如果是这样,那么“nmap”将报告任何以 RST 响应的端口:未过滤的和所有其他端口过滤的。这看起来像这样......(使用IPTABLES
具有无状态规则的防火墙)
$ sudo nmap -sA -T4 192.168.219.135
Starting Nmap 7.12 ( https://nmap.org ) at 2016-06-28 16:35 EDT
Nmap scan report for metasploitable (192.168.219.135)
Host is up (0.00027s latency).
Not shown: 994 filtered ports
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
53/tcp unfiltered domain
70/tcp unfiltered gopher
80/tcp unfiltered http
113/tcp unfiltered ident
MAC Address: 00:0C:29:B7:F7:70 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 4.40 seconds
根据该输出,人们如何辨别这是有状态的还是无状态的?
我已经阅读了有关该主题的所有内容,包括这nmap
本书,但没有一个例子对我来说有意义。这与书中示例 10.2 的输出基本相同nmap
;事实上它几乎是一样的!问题是,这本书指出这是针对运行有状态规则的主机nmap
的输出!nmap
IPTABLES
如果我可以从无状态防火墙获得与有状态防火墙相同的输出,那么我应该如何从nmap
ACK 扫描中判断我遇到的是哪个防火墙?
我非常沮丧,我真的很感谢为我提供的任何帮助。
答案1
让我们考虑一下有状态防火墙和无状态防火墙之间的行为差异。无状态防火墙将根据端口号进行阻止,但它不能仅仅阻止传入的 ACK 数据包,因为这些数据包可能是为了响应传出连接而发送的。因此,从-sA
扫描的角度来看,端口将显示为“未过滤”,因为防火墙仅过滤 SYN 数据包。
另一方面,状态防火墙可以确定传入的 ACK 数据包是否是已建立的传出连接的一部分。它仅在未经请求的情况下阻止数据包(如 的情况-sA
)。因此 Nmap 会将端口标记为“已过滤”。
所以最终的判断是:如果 ACK 扫描显示某些端口为“已过滤”,那么它很可能是状态防火墙。如果全部显示为“未过滤”,但常规 SYN 扫描显示某些为“已过滤”,则它是无状态防火墙。
答案2
我同意以下给出的答案博纳赛维京人。为了即兴发挥,有一个窗口扫描(-sW
),它基本上利用了某些系统的实现细节(因此 nmap 警告,它并不总是可信的)。 RST 返回的数据包(带有-sA
或-sW
)将检查 TCP 窗口字段,并得出打开或关闭端口的结论。