Iptables

設置 iptables 規則後無法訪問實例

  • December 26, 2020

我正在嘗試設置一些規則來阻止 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. 對於OUTPUT鏈中的規則,您應該指定源埠匹配 ( --sport),而不是目標埠 ( --dport)。
  2. 無論如何,鏈中DROP的策略並不是一種常見的做法。OUTPUT
  3. 閱讀 iptables 教程和範例規則集。
  4. 為了避免失去連接,更好的使用iptables-saveiptables-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

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

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