使用nmap扫描打开的端口。 iptables默认策略影响其他规则?

我试图找出为什么更改我的默认iptables策略影响nmap扫描我的主机时看到的。

考虑下面的iptables设置:

iptables -F iptables -A INPUT -p tcp -s 10.1.0.0/20 --dport 22 -j ACCEPT iptables -P INPUT ACCEPT iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

让我们使用nmap -p - 10.1.0.157

 Nmap scan report for 10.1.0.157 Host is up (0.00059s latency). Not shown: 65531 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 5672/tcp open amqp 46010/tcp open unknown 

正如所料,一些港口是开放的。 添加一个具体的删除端口111的规则:

 iptables -F iptables -A INPUT -p tcp -s 10.1.0.0/20 --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 111 -j DROP iptables -P INPUT ACCEPT iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

结果:

 Nmap scan report for 10.1.0.157 Host is up (0.00056s latency). Not shown: 65531 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp filtered rpcbind 5672/tcp open amqp 46010/tcp open unknown 

为什么111显示为过滤? 为什么它甚至显示? 如果我将默认策略更改为DROP,则按预期得到以下扫描结果:

 Nmap scan report for 10.1.0.157 Host is up (0.00052s latency). Not shown: 65534 filtered ports PORT STATE SERVICE 22/tcp open ssh 

我不理解默认策略是如何在iptables中工作的,还是与nmap有关?

Nmap显示它没有收到响应的端口被“过滤”。 这是规则或策略设置为“DROP”时的结果。

端口111显示在一个输出而不是另一个的原因是在“未显示:”行中。 无论什么最常见的端口状态(“closures”或“过滤”,而不是“打开”)被绑定到该行,与计数。 所以当策略是ACCEPT,没有任何监听(或者如果策略是REJECT),最常见的状态是“closures”,意味着收到了TCP RST数据包。 端口111的DROP规则使其与其他端口不同,因此显示。

在第二种情况下,当默认策略为DROP时,端口111的结果与任何其他端口的结果相同,因此在“未显示:65534已过滤的端口”行中将其与其他端口结合在一起。

您可以通过添加--reason选项来获得更多关于为什么端口显示在特定状态的详细信息。 另外,使用-d打开debugging将展开“未显示”包,并单独显示每个端口(大量输出!)。