使用iptables進行端口掃描檢測是一種常見的網絡安全實踐。iptables是Linux系統中的一個命令行工具,用于配置內核防火墻(netfilter)的規則。以下是一些基本的步驟和命令,可以幫助你使用iptables進行端口掃描檢測:
首先,確保你的系統上已經安裝了iptables。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt-get update
sudo apt-get install iptables
為了安全起見,建議先設置iptables的默認策略為DROP,這樣可以阻止所有未經明確允許的流量。
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
接下來,允許一些必要的流量,比如SSH(默認端口22)、HTTP(默認端口80)和HTTPS(默認端口443)。
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
你可以使用iptables的recent模塊來檢測端口掃描。以下是一個示例規則,用于檢測在短時間內對同一IP地址的多次連接嘗試:
# 創建一個新的recent列表
sudo iptables -N PORT_SCAN_DETECT
# 將新的連接添加到recent列表中
sudo iptables -A PORT_SCAN_DETECT -p tcp --syn -m conntrack --ctstate NEW -m recent --set --name PORT_SCAN
# 檢測recent列表中的連接數,如果超過閾值(例如5次),則丟棄該IP
sudo iptables -A PORT_SCAN_DETECT -p tcp --syn -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 5 --name PORT_SCAN -j DROP
# 將PORT_SCAN_DETECT鏈應用到INPUT鏈
sudo iptables -A INPUT -j PORT_SCAN_DETECT
你可以使用以下命令查看當前的iptables規則:
sudo iptables -L -v -n
為了確保在系統重啟后規則仍然有效,可以使用以下命令保存iptables規則:
sudo iptables-save > /etc/iptables/rules.v4
通過以上步驟,你可以使用iptables進行基本的端口掃描檢測。根據具體需求,你還可以進一步擴展和優化這些規則。