設定 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 的傳入和傳出請求,但為什麼我無法存取它?

答案1

  1. 對於OUTPUT鏈中的規則,您應該指定來源連接埠比對 ( --sport),而不是目標連接埠 ( --dport)。
  2. 無論如何,DROP連鎖政策OUTPUT並不是常見的做法。
  3. 閱讀 iptables 教學課程和範例規則集。
  4. 為了避免失去連接,更好的使用iptables-saveiptables-apply工具。

答案2

您應該設定狀態跟踪,並丟失線路-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

很高興看到您正在使用顯式出口過濾,但實施起來需要更多工作。

相關內容