Iptables
設置 iptables 規則後無法訪問實例
我正在嘗試設置一些規則來阻止 TCP(SSH 和 FTP)上除 21 和 22 之外的所有埠。但是當我嘗試執行這個腳本時,我被鎖定在我的實例之外並且無法訪問它。這是腳本:
# Flush the FW Rules iptables -F iptables -X # Block all traffic iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Allow SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT # Allow FTP iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT # Allow ICMP (ping) iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT
在腳本中,它設置了 SSH 和 FTP 的傳入和傳出請求,但為什麼我不能訪問它?
- 對於
OUTPUT
鏈中的規則,您應該指定源埠匹配 (--sport
),而不是目標埠 (--dport
)。- 無論如何,鏈中
DROP
的策略並不是一種常見的做法。OUTPUT
- 閱讀 iptables 教程和範例規則集。
- 為了避免失去連接,更好的使用
iptables-save
和iptables-apply
工具。
您應該設置狀態跟踪,並失去
-A OUTPUT ... -j ACCEPT
線路。IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT IPTABLES -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT IPTABLES -I OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
很高興看到您正在使用顯式出口過濾,但實現起來需要更多工作。