Linux
如何配置 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 防火牆阻止了一個埠,則回复 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)。