Linux

如何配置 iptables,使不需要的埠不報告為已過濾

  • March 18, 2016

我想阻止其他人看到我的埠在 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 防火牆阻止了一個埠,則回复 RST 以獲得 SYN,而不是保持沉默(不回復任何內容)?

不要使用 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
-A INPUT -p tcp -m tcp --dport 995 -j REJECT --reject-with tcp-reset

應該做你想做的(回复RST)。

引用自:https://serverfault.com/questions/763582