天天看點

iptables規則基本用法

iptables規則基本文法

iptables [-t table] option argu

table: 可選4表其中之一,raw,mangle,nat,filter,不指定預設為filter表

option:根據對規則的不同操作,可分為-N,-X,-E,-P,-F,-L,-Z,-A等

argu:根據選擇的option的不同,所對應的參數也不同,下面會具體講解

iptables規則詳細解析

建立一條自定義的空規則鍊

iptables [-t table] -N chain_name

删除一條自定義的空規則鍊

iptables [-t table] -X [chain_name]

注:5大内置的主鍊不可删除;不指定鍊名,則會删除指定表中非内置的所有空鍊

修改自定義鍊名

iptables [-t table] -E old-chain-name new-chain-name

為鍊指定預設政策

iptables [-t table] -P chain_name target

注:target是ACCEPT或DROP

對鍊中的規則進行清空操作

iptables [-t table] -F [chain_name]

注:清空指定鍊中的所有規則;無chain_name參數時,則清空指定表中所有鍊的規則

對鍊中的規則進行顯示操作

iptables [-t table] -L [chain_name [rulenum]] [options...]

注:顯示指定鍊中的規則;一般都不指定chain_name參數,則會顯示指定表中所有鍊的規則

配合options使用,可以獲得更加詳細的資訊,如

-n:數字格式顯示IP和PORT

-v:以詳細格式顯示

-vv,-vvv:以更加詳細的格式顯示

-x:顯示精确值(如bytes的值),不執行機關換算

--line-numbers:顯示各規則的編号,鍊中的規則依據編号順序執行,編号為正整數并從1開始計數

詳細顯示格式圖解

<a href="http://s3.51cto.com/wyfs02/M00/23/73/wKioL1M2hZyQRbeoAARvFi6dnYQ949.jpg" target="_blank"></a>

注:一般顯示格式可簡寫為iptables -L -nv或iptables -nvL

對鍊中的規則進行計數器(如上圖中的pkts或bytes參數)清零操作

iptables [-t table] -Z [chain_name [rulenum]]

注:可指定對鍊中的某一條規則計數器清零;也可不指定鍊名,則直接清零表中所有鍊的規則計數器

删除指定規則

iptables [-t table] -D chain_name rulenum

iptables [-t table] -D chain_name rule-specification

注:指定規則編号或規則的詳細資訊,一般都使用第一種,指定規則編号rulenum即可

顯示指定鍊上的規則添加指令

iptables [-t table] -S [chain_name [rulenum]]

注:顯示的是當初添加規則時使用的iptables指令,而非-L的顯示格式;不指定鍊名,則顯示指定表下所有鍊下規則的添加指令

插入規則

iptables [-t table] -I chain_name [rulenum] rule-specification

注:可指定規則編号,已将新的規則插入指定位置;若不指定規則編号,則新規則的編号将預設為1

修改規則

iptables [-t table] -R chain_name rulenum rule-specification

注:指定需修改規則的編号即可,rule-specification指定修改後的規則内容

附加規則

iptables [-t table] -A chain_name rule-specification

注:本指令是在指定鍊下規則隊列的最後附加規則;若要指定規則添加的位置,則需使用插入指令-I

而規則的具體資訊在于rule-specification的格式,詳解如下

rule-specification規則說明

rule-specification=比對條件 -j 處理機制

比對條件:

通用比對

-s:比對源位址(單IP位址或者網絡位址),等同于--src,--source

-d:比對目标位址(單IP位址或者網絡位址),等同于--dst,--destination

-p:比對協定,通常使用{tcp | udp | icmp}其中之一

-i:比對資料封包流入接口,如eth0

-o:比對資料封包流出接口,如eth1

擴充比對

隐含擴充比對:使用-p {tcp | udp | icmp}後,自動能夠對協定進行的擴充

-p tcp:

--dport m[-n]:比對目标端口,m表示單個端口,如80,m-n表示連續多個端口,如20-25

--sport m[-n]:比對源端口

--tcp-flags rst,syn,ack,fin syn:比對TCP Header中6個符号位(URG,ACK,PSH,RST,SYN,FIN)的值,第一組顯示需比對的符号位(此例中為rst,syn,ack,fin),第二組顯示值為1的符号位(此例中為syn),其它都為0

-p udp:

--dport m[-n]:比對目标端口

注:UDP是無狀态的協定,故無符号位flags的比對

-p icmp:

--icmp-type:比對icmp封包的類型,一般使用8代表PING請求,使用0代表PING應答

顯示擴充比對:必須要明确指定擴充的子產品,格式為:-m 擴充子產品名稱 --選項1 --選項2 ...

multiport子產品:多端口比對,一次指定多個離散端口

--dports:目的端口比對,等同于--destination-ports,如 --dports 53,80

--sports:源端口比對,等同于--source-ports

注:離散端口和端口範圍可混用,如 --sports 23,80-100 ,但端口個數最好不要超過15個,端口範圍計數為2個端口

iprange子產品:IP位址範圍比對

--dst-range from[-to]:目标位址比對,如 --dst-range 192.168.100.10-192.168.100.20

--src-range from[-to]:源位址比對

time子產品:時間範圍比對

--datestart,--datestop:日期時間比對,日期時間格式為YYYY[-MM[-D[Thh[:mm[:ss]]]]],如--datestart 2014-03-29T12:05:00 --datestop 2014-03-30T08:00:00

--timestart,--timestop:僅時間比對,時間格式為hh:mm[:ss],如 --timestart 14:05:00 --timestop 18:00:00

--weekdays day[,day...]:星期比對,可使用Mon,Tue,Web,Thu,Fri,Sat,Sun表示星期,或用1-7表示,如--weekdays 1,2,3,4,5

string子產品:字元串比對(需linux kernel &gt;= 2.6.14)

--algo {bm|kmp} --string pattern:先制定比對算法bm或kmp,然後制定比對模式,如 --algo bm --string hello,表示比對帶有hello字元串的封包

--algo {bm|kmp} --hex-string pattern:先将比對模式編碼成十六進制格式,再跟封包中的資料進行比對,可提高比對速度

connlimit子產品:連接配接數限制比對

--connlimit-above:單IP對指定服務的最大并發連接配接數,如 --connlimit-above 5

limit子產品:封包傳輸速率限制(利用令牌桶token bucket原理)

--limit #[/second | /minute | /hour | /day]:如 --limit 5/s,預設是3/hour

--limit-burst:初始峰值

state子產品:連接配接狀态比對

連接配接狀态追蹤原理:

在記憶體中維護一張會話表,記錄進入的連接配接,并賦予每個連接配接條目一個計數器(即逾時時間),當計數器為0時,清除出此會話表;

當有新連接配接到來,對比此會話表,會話中無記錄時,則此連接配接狀态為NEW,否則為ESTABLISHED狀态;

若進來的新連接配接與已建立的連接配接有關聯,如FTP中的資料連接配接對于指令連接配接來說,則此連接配接狀态為RELATED

連接配接追蹤功能涉及的核心子產品:ip_conntrack和nf_conntrack

連接配接狀态主要類型:NEW,ESTABLISHED,RELATED,INVALID

state子產品用法:--state {NEW|ESTABLISHED|RELATED|INVALID}

連接配接狀态過濾法則:

對于進入的狀态為ESTABLISHED和RELATED的連接配接都應該放行

對于出去的狀态為ESTABLISHED的連接配接都應該放行

嚴格檢查進入的狀态為NEW的連接配接

所有狀态為INVALID的連接配接都應該拒絕

注:因iptables的state子產品對于進出的封包都進行嚴格的狀态比對,非常消耗系統資源,故在繁忙的前端伺服器(如反向代理伺服器)上,勿開啟此功能!

取反比對:

以上介紹的比對條件,大部分都可以在比對條件前加 ! 号,以表示比對條件取反,格式是:! 比對條件,注意感歎号後的空格

處理機制:

ACCEPT:封包接受

DROP:封包丢棄

自定義鍊名:調用自定義鍊,如 -j clean_in

RETURN:傳回調用鍊,一般用于自定義鍊的末尾規則

本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1386614,如需轉載請自行聯系原作者

繼續閱讀