Ubuntu Server iptables filter表設定
24 1 月, 2023
iptables是個相當強大的防火牆,可以用來過濾、轉發甚至是竄改封包。iptables總共有5個節點可以處理封包,分別為PREROUTING、POSTROUTING、INPUT、OUTPUT與FORWARD;而依用途不同又可分filter、mangle與nat表。以下先示範如何設本機的iptables,JR自己在設本機時,屬於開放派先都ACCEPT之後再說。不過網路滿多都是先DROP掉再來開PORT,使用這種方式最好加入iptables外掛模組的指令,否則用起來可能會卡卡的。以下對本機防護做個範例並說明參數。
範例
#清除規則
iptables -F #清除所有規則
iptables -X #清除使用者自訂的chain
iptables -Z #將所有chain計數與流量統計歸零
#設定預設policy
iptables -P INPUT DROP #如果你是封閉派的就設成DROP,後面再來開Port;如果是開放派的就設成ACCEPT,後面再來擋PORT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#外掛模組
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
#開放允許網段
iptables -A INPUT -s 10.0.100.0/24 -j ACCEPT
#內部lo通常設成ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#要開放的Port放的Port
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
參數說明
-P 定義政策( Policy )
- ACCEPT :該封包可接受
- DROP :該封包直接丟棄。
-AI 鏈名
- -A :新增規則在原本規則的最後面(常用)。
- -I :插入一條規則。如果沒有指定此規則的順序,預設是插入變成第一條規則。
鏈 :有 INPUT, OUTPUT, FORWARD 等,鏈名稱又與-io有關。
-io 網路介面(如果沒有設此參數代表套用所有介面)
- -i :封包所進入的網路介面,需與 INPUT 鏈配合。
- -o :封包所傳出的網路介面,需與 OUTPUT 鏈配合。
--
sport 埠口範圍:限制來源的埠口號碼,埠口號碼可以是連續的(如 1024:65535)。
--
dport 埠口範圍:限制目標的埠口號碼。
-p 協定
- 主要格式有:tcp, udp, icmp 及 all。
-s 來源IP/網域(可指定單一IP或整個網域)
- IP :10.0.100.1
- 網域:10.0.100.0/24或1010.0.100.0/255.255.255.0。 *若此IP或網域不許通過時可在IP或網域前加上!。(如:-s ! 10.0.100.0/24)
- -d:目標IP/網域用法同 -s。
- -j:後面接動作,主要選項有接受(ACCEPT)、丟棄(DROP)、拒絕(REJECT)及記錄(LOG)。
-m iptables的外掛模組
- state :狀態模組。
- mac :網卡卡號。
--
state 一些封包的狀態
- INVALID :無效的封包(如資料破損的封包)。
- ESTABLISHED:已連線成功的連線狀態。
- NEW :想要新建立連線的封包狀態。
- RELATED :表示這個封包是與我們主機發送出去的封包。
--
mac-source:來源主機的MAC。