我想阻止其他人看到我的端口在 nmap 标准扫描(非特权)中被过滤。假设我打开了以下端口:22、3306、995,防火墙配置如下:
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 995 -j DROP
这是 nmap 扫描的结果:
[+] Nmap scan report for X.X.X.X
Host is up (0.040s latency).
Not shown: 90 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
995/tcp filtered pop3s
3306/tcp filtered mysql
它显示这些端口已被过滤,因为我的服务器没有回复 SYN 的 RST。有没有办法修改此行为?例如:如果 iptables 防火墙阻止了某个端口,则回复 SYN 的 RST,而不是保持沉默(不回复任何内容)?
答案1
不要使用 DROP,如果您知道该框已启动,则很容易将其识别为“已过滤”。相反,您可以使用以下内容发送 RST。(就好像有一个服务正在监听,但它不接受您的连接)
-A INPUT -p tcp -m tcp --dport 22 -j REJECT --reject-with tcp-reset
或者简单地使用以下命令使端口看起来已关闭。(好像没有服务正在监听它)
-A INPUT -p tcp -m tcp --dport 22 -j REJECT
答案2
-A INPUT -p tcp -m tcp --dport 995 -j REJECT --reject-with tcp-reset
应该做你想做的事(用 RST 回复)。