我试图找出为什么更改我的默认 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 来使用它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 有关?
答案1
Nmap 将未收到响应的端口显示为“已过滤”。这是规则或策略设置为“DROP”时的结果。
端口 111 出现在一个输出中而另一个输出中没有出现的原因在于“未显示:”行。无论最常见的端口状态是什么(“关闭”或“已过滤”,而不是“打开”),都会与计数一起捆绑到该行中。因此,当策略为 ACCEPT 且没有任何监听时(或者如果策略为 REJECT),最常见的状态是“关闭”,这意味着收到了 TCP RST 数据包。端口 111 的 DROP 规则使其与其他端口不同,因此会显示出来。
在第二种情况下,当默认策略为 DROP 时,端口 111 的结果与任何其他端口的结果没有什么不同,因此它与“未显示:65534 个已过滤端口”行中的其他端口归为一类。
通过添加该选项,您可以获取有关端口为何显示为特定状态的更多详细信息--reason
。此外,启用调试-d
将展开“未显示”包并分别显示每个端口(大量输出!)。