如何配置 iptables,以便不将不需要的端口报告为已过滤

如何配置 iptables,以便不将不需要的端口报告为已过滤

我想阻止其他人看到我的端口在 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 回复)。

相关内容