iptables命令學習

2021-06-10 11:36:46 字數 4052 閱讀 1070

iptables 指令

語法:iptables [-t table] command [match][-j target/jump]

-t引數:用來指定規則表,內建的規則表有三個,分別是:nat,mangle和filter,當未指定規則表時,則一律視為是filter。

幾個功能表的功能如下:

nat規則表擁有prerouting和postrouting兩個規則鏈,主要功能為進行一對

一、一對多、多對多等**轉譯工作(snat dnat),由於轉譯工作的特性,需要進行目的地**轉譯的封包,就不需要進行****轉譯,反之依然,因此為了提公升改寫封包的率,在防火牆運作時,每個封包只會經過這個規則表一次。如果我們把封包過濾的規則定義在這個資料表裡,將會造成無法對同一包進行多次比對,因此這個規則表除了做**轉譯外,請不要做其他用途。

mangle規則表擁有prerouting、forward和postrouting三個規則鏈。

除了進行**轉譯工作會改寫封包外,在某些特殊應用可能也必須去改寫封包(ttl,tos)或者是設定mark(將封包作記號,以進行後續的過濾),這時就必須將這些工作定義在mangle規則表中,由於使用率不高,我們打算在這裡討論mangle的用法。

filter規則表是預設規則表,擁有input、forward和output三個規則鏈,這個規則表顧名思義是用來進行封包過濾的處理動作(例如:drop,log,accept或reject),我們會將基本規則都建立在此規則表中。

常用命令表:

例: iptables -a input ...

說明:新增規則到某個規則鏈中,該規則將會成為規則鏈中的最後一天規則。

iptables -d 或--delete

例:iptables -d input --dport 80 -j drop

iptables -d input 1

說明:從某個規則鏈中刪除一條規則,可以輸入完整規則,或直接指定規則編號加以刪除。

iptables -r 或--replace

例:iptables -r input 1 -s 192.168.0.1 -j drop

說明:取代現行規則,規則被取代後並不會改變順序

iptables -i或--insert

例:iptables -i input 1 --drop 80 -j accept

說明:插入一條規則,原本該位置上的規則將會往後移動乙個順位。

iptables -l 或--list

例:iptables -l input

說明:列出某規則鏈中的所有規則。

iptables -f或--flush

例:iptables -f input

說明:刪除某規則鏈中的所有規則

iptables -z或--zero

例:iptables -z input

說明:將封包計數器歸零。封包計數器是用來計算同一封包出現次數,是過濾阻斷個、式攻擊不可或缺的攻擊

iptables -n或--new-chain

例:iptables -n allowed

說明:定義新的規則鏈

iptables -x或--delete-chain

例:iptables -x allowed

說明:刪除某個規則鏈

iptables -p或--policy

例:iptables -p input drop

說明:定義過濾策略。也就是為符合過濾條件的封包,預設的處理方式。

iptables -e或--rename-chain

例:iptables -e allowed disallowed

說明:修改某自定規則鏈的名稱

常用封包比對引數:

-p或--protocol

例:iptables -a input -p  tcp

-d或--dst或--destination

例:iptables -a input -d 192.168.1.1

說明:用來比對封包的目的地ip,設定方式同上 

-i或--in-inte***ce

例:iptables -a input -i eth0

說明:用來比對封包是從哪片網絡卡進入,可以使用通配字元+來做大範圍比對,例如:-i eth+表示所有的ethernet網絡卡,也可以使用!運運算元進行反向比對,例如:-i !eth0

-o或--out-inte***ce

例:iptables -a forward -o eth0

說明:用來比對封包要從哪片網絡卡送出,設定方式同上。

--sport或--source-port

例:iptables -a input -p tcp --sport 22

說明:用來必讀封包的**埠號,可以比對單一埠,後者乙個範圍,例如:--sport 22:80,表示從22到80埠之間都算是符合件,如果要比對不連續的多個埠,則必須使用--multiport引數,詳見後文。比對埠號,可以使用!運運算元進行反向比對。

--dport或--destination-port

例:iptables -a input -p tcp --dport 22

說明:用來比對封包的目的埠號,設定方式同上。

--tcp-flags

例:iptables -p tcp --tcp-flags syn,fin,ack syn

--syn

例;iptables -p tcp --syn

說明:用來比對是否要求聯機的tcp封包,與iptables -p tcp --tcp-flags syn,fin,ack,syn的作用完全相同,如果使用!運運算元,可用來比對非要求聯機封包。

-m multiport --source-port

例:uptables -a input -p tcp -m multiport --source-port 22,53,80,110

說明:用來比對不連續的多個**埠號,一次最多可以比對15個埠,可以使用!運運算元進行反向比對。

-m multiport --destination-port

例:iptables -a input -p tcp -m multiport --destiantion-port 22,53,80,110

說明:用來比對不連續的多個目的地埠號,設定方式同上。

-m multiport --port

例:iptables -a input -p tcp -m multiport --port 22,53,80,110

說明:這個引數比較特殊,用來比對**埠號和目的埠號相同的封包,設定方式同上。注意:在本範例中,如果**埠為80目的地埠號為110,這種封包並不算符合條件。

--icmp-type

例:iptables -a input -p icmp --icmp-type 8

說明:用來比對icmp的型別編號,可以使用**或數字編號來進行比對。請打iptables -p icmp --help 來檢視有哪些**可用。

-m limit --limit

例:iptables -a input -m limit --limit 3/hour

說明:用來必讀某段時間內封包的平均流量,上面的例子是用來比對:每小時平均流量是否超過一次3個封包。除了每小時平均次外,也可以每秒鐘、沒分鐘或每天平均一次,預設值為每小時平均一次,引數如後:/second 、 /minute 、 /day. 除了進行封數量的比對外,設定這個引數也會在條件達成時,暫停封包的比對動作,以避免因駭客使用洪水攻擊法,導致服務被阻斷。

--limit-burst

例:iptables -a input -m limit --limit-burst 5

說明:用來比對瞬間大量封包的數量,上面的例子是用來比對一次同時湧入的封包是否超過5個(這是預設值),超過此上限的封包將被直接丟棄。使用效果如上。

-m mac --mac-source

例:iptables -a input -m mac --mac-source 00:00:00:00:00:01

--mark

例:iptables -t mangle -a input -m mark --mark 1

說明:用來比對封包是否被表示某個號碼,當封包被比對成功時,我們可以透過mark處理動作,將該封包標示乙個號碼,號碼不可以超過4294967296

iptables命令學習

設定鏈的預設策略。一般有兩種方法。1 首先允許所有的包,然後再禁止有危險的包通過放火牆。iptables p input accept iptables p output accept iptables p forward accept 2 首先禁止所有的包,然後根據需要的服務允許特定的包通過防火牆...

iptables命令學習

iptables 指令 語法 iptables t table command match j target jump t引數 用來指定規則表,內建的規則表有三個,分別是 nat,mangle和filter,當未指定規則表時,則一律視為是filter。幾個功能表的功能如下 nat規則表擁有prero...

linux學習筆記 iptables命令

iptables命令是linux上常用的防火牆軟體,是netfilter專案的一部分。可以直接配置,也可以通過許多前端和圖形介面配置 語法 iptables 選項 引數 選項 t 表 指定要操縱的表 a 向規則鏈中新增條目 d 從規則鏈中刪除條目 i 向規則鏈中插入條目 r 替換規則鏈中的條目 l ...