常用 iptables 參數及指令整理

  • 5504
  • 0

在 Linux 的環境中,有時候會用到 iptables 來限制遠端連入的 ip 或 port,用過不少次不過都是直接 Google 然後複製貼上,趁最近又用到稍微把常用的幾個參數跟指令做些整理。

參數說明

新增及刪除規則參數

參數說明
-A <規則>新增規則至規則清單的結尾。
-I <規則>新增規則至規則清單的開頭。
-D <流水號>刪除規則清單中第幾個規則。

檢視規則參數

參數說明
-L檢視規則清單。
-L -n檢視規則清單,並以數字形式顯示 IP 及 Port。
-L -v檢視規則清單,並顯示所有規則詳細資訊。
-L -line-numbers檢視規則清單,並顯示清單行號(流水號)。

規則參數

參數說明
-i <網路卡介面>針對 INPUT 或 FORWARD 使用,指定該規則限制的網路卡介面,預設為所有網路卡介面。
-o <網路卡介面>針對 OUTPUT 或 FORWARD 使用,指定該規則限制的網路卡介面,預設為所有網路卡介面。
-p <協定>指定該規則限制的協定,如 TCP、UDP 或 ICMP 等等,詳細可於 /etc/protocols 中查看,預設為所有協定。
-s <來源 IP 或主機名稱/網路遮罩>指定該規則限制的來源 IP,遮罩可輸入也可不輸入。
-d <來源 IP 或主機名稱/網路遮罩>指定該規則限制的目的 IP,遮罩可輸入也可不輸入。
-j <處置>指定該規則若符合時的處置方式,可為 ACCEPT 或 DROP。

擴充規則參數

參數說明
-m tcp --sport <來源 Port>指定該規則限制的協定為 TCP 及來源 Port,可為單一 Port 或特定範圍 Port,如 8000:9000。
-m tcp --dport <目的 Port>指定該規則限制的協定為 TCP 及目的 Port,可為單一 Port 或特定範圍 Port,如 8000:9000。
-m udp --sport <來源 Port>指定該規則限制的協定為 UDP 及來源 Port,可為單一 Port 或特定範圍 Port,如 8000:9000。
-m udp --dport <目的 Port>指定該規則限制的協定為 UDP 及目的 Port,可為單一 Port 或特定範圍 Port,如 8000:9000。
-m multiport --sports <多個來源 Port>指定該規則限制的單一或多個來源 Port,可為分散也可為特定範圍,如 80,443,8000:9000,以分散式指定最多指定 15 個(組)。
-m multiport --dports <多個目的 Port>指定該規則限制的單一或多個目標 Port,可為分散也可為特定範圍,如 80,443,8000:9000,以分散式指定最多指定 15 個(組)。
-m state --statue <多個連線狀態>指定該規則限制的單一或多個連線狀態,可以逗號作分散式指定,共有以下五種。
NEW:新的連線。
ESTABLISHED:NEW 之後至該連線於連線追蹤資料庫中失效前。
RELATED:新的連線,但是與已存在連線相關。
INVALID:無效的連線。
UNTRACKED:未追蹤的連線。

常用指令

# 簡要檢視目前所有輸入規則
iptables -L INPUT -n --line-numbers

# 限制從遠端透過 TCP 的 80 及 443 Port 可以輸入
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# 限制本機可從網路介面卡 eth0 輸出至任意處
iptables -A OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT

# 限制連線狀態為 ESTABLISHED 及 RELATED 可以輸入,可用於本機要呼叫遠端 Web API 時,或有與遠端資料交換時,因會有回傳資料故並非只有輸出,仍有輸入
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 禁止任何輸入,通常用於規則清單的結尾
iptables -A INPUT -j DROP

# 刪除行號(流水號)為 2 的輸入規則,切記行號為流水號,若刪除後後面的規則會往前遞補
iptables -D INPUT 2

參考資料