iptables规则基本用法
iptables規(guī)則基本語法
iptables [-t table] option argu
-
table: 可選4表其中之一,raw,mangle,nat,filter,不指定默認(rèn)為filter表
-
option:根據(jù)對規(guī)則的不同操作,可分為-N,-X,-E,-P,-F,-L,-Z,-A等
-
argu:根據(jù)選擇的option的不同,所對應(yīng)的參數(shù)也不同,下面會具體講解
iptables規(guī)則詳細(xì)解析
創(chuàng)建一條自定義的空規(guī)則鏈
iptables [-t table] -N chain_name
刪除一條自定義的空規(guī)則鏈
iptables [-t table] -X [chain_name]
注:5大內(nèi)置的主鏈不可刪除;不指定鏈名,則會刪除指定表中非內(nèi)置的所有空鏈
修改自定義鏈名
iptables [-t table] -E old-chain-name new-chain-name
為鏈指定默認(rèn)策略
iptables [-t table] -P chain_name target
注:target是ACCEPT或DROP
對鏈中的規(guī)則進(jìn)行清空操作
iptables [-t table] -F [chain_name]
注:清空指定鏈中的所有規(guī)則;無chain_name參數(shù)時,則清空指定表中所有鏈的規(guī)則
對鏈中的規(guī)則進(jìn)行顯示操作
iptables [-t table] -L [chain_name [rulenum]] [options...]
注:顯示指定鏈中的規(guī)則;一般都不指定chain_name參數(shù),則會顯示指定表中所有鏈的規(guī)則
配合options使用,可以獲得更加詳細(xì)的信息,如
-
-n:數(shù)字格式顯示IP和PORT
-
-v:以詳細(xì)格式顯示
-
-vv,-vvv:以更加詳細(xì)的格式顯示
-
-x:顯示精確值(如bytes的值),不執(zhí)行單位換算
-
--line-numbers:顯示各規(guī)則的編號,鏈中的規(guī)則依據(jù)編號順序執(zhí)行,編號為正整數(shù)并從1開始計數(shù)
詳細(xì)顯示格式圖解
注:一般顯示格式可簡寫為iptables -L -nv或iptables -nvL
對鏈中的規(guī)則進(jìn)行計數(shù)器(如上圖中的pkts或bytes參數(shù))清零操作
iptables [-t table] -Z [chain_name [rulenum]]
注:可指定對鏈中的某一條規(guī)則計數(shù)器清零;也可不指定鏈名,則直接清零表中所有鏈的規(guī)則計數(shù)器
刪除指定規(guī)則
iptables [-t table] -D chain_name rulenum
iptables [-t table] -D chain_name rule-specification
注:指定規(guī)則編號或規(guī)則的詳細(xì)信息,一般都使用第一種,指定規(guī)則編號rulenum即可
顯示指定鏈上的規(guī)則添加命令
iptables [-t table] -S [chain_name [rulenum]]
注:顯示的是當(dāng)初添加規(guī)則時使用的iptables命令,而非-L的顯示格式;不指定鏈名,則顯示指定表下所有鏈下規(guī)則的添加命令
插入規(guī)則
iptables [-t table] -I chain_name [rulenum] rule-specification
注:可指定規(guī)則編號,已將新的規(guī)則插入指定位置;若不指定規(guī)則編號,則新規(guī)則的編號將默認(rèn)為1
修改規(guī)則
iptables [-t table] -R chain_name rulenum rule-specification
注:指定需修改規(guī)則的編號即可,rule-specification指定修改后的規(guī)則內(nèi)容
附加規(guī)則
iptables [-t table] -A chain_name rule-specification
注:本命令是在指定鏈下規(guī)則隊(duì)列的最后附加規(guī)則;若要指定規(guī)則添加的位置,則需使用插入命令-I
而規(guī)則的具體信息在于rule-specification的格式,詳解如下
rule-specification規(guī)則說明
rule-specification=匹配條件 -j 處理機(jī)制
匹配條件:
通用匹配
-
-s:匹配源地址(單IP地址或者網(wǎng)絡(luò)地址),等同于--src,--source
-
-d:匹配目標(biāo)地址(單IP地址或者網(wǎng)絡(luò)地址),等同于--dst,--destination
-
-p:匹配協(xié)議,通常使用{tcp | udp | icmp}其中之一
-
-i:匹配數(shù)據(jù)報文流入接口,如eth0
-
-o:匹配數(shù)據(jù)報文流出接口,如eth1
擴(kuò)展匹配
隱含擴(kuò)展匹配:使用-p {tcp | udp | icmp}后,自動能夠?qū)f(xié)議進(jìn)行的擴(kuò)展
-p tcp:
-
--dport m[-n]:匹配目標(biāo)端口,m表示單個端口,如80,m-n表示連續(xù)多個端口,如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]:匹配目標(biāo)端口
-
--sport m[-n]:匹配源端口
-
注:UDP是無狀態(tài)的協(xié)議,故無符號位flags的匹配
-p icmp:
-
--icmp-type:匹配icmp報文的類型,一般使用8代表PING請求,使用0代表PING應(yīng)答
顯示擴(kuò)展匹配:必須要明確指定擴(kuò)展的模塊,格式為:-m 擴(kuò)展模塊名稱 --選項(xiàng)1 --選項(xiàng)2 ...
multiport模塊:多端口匹配,一次指定多個離散端口
-
--dports:目的端口匹配,等同于--destination-ports,如 --dports 53,80
-
--sports:源端口匹配,等同于--source-ports
-
注:離散端口和端口范圍可混用,如 --sports 23,80-100 ,但端口個數(shù)最好不要超過15個,端口范圍計數(shù)為2個端口
iprange模塊:IP地址范圍匹配
-
--dst-range from[-to]:目標(biāo)地址匹配,如 --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 >= 2.6.14)
-
--algo {bm|kmp} --string pattern:先制定匹配算法bm或kmp,然后制定匹配模式,如 --algo bm --string hello,表示匹配帶有hello字符串的報文
-
--algo {bm|kmp} --hex-string pattern:先將匹配模式編碼成十六進(jìn)制格式,再跟報文中的數(shù)據(jù)進(jìn)行匹配,可提高匹配速度
connlimit模塊:連接數(shù)限制匹配
-
--connlimit-above:單IP對指定服務(wù)的最大并發(fā)連接數(shù),如 --connlimit-above 5
limit模塊:報文傳輸速率限制(利用令牌桶token bucket原理)
-
--limit #[/second | /minute | /hour | /day]:如 --limit 5/s,默認(rèn)是3/hour
-
--limit-burst:初始峰值
state模塊:連接狀態(tài)匹配
連接狀態(tài)追蹤原理:
-
在內(nèi)存中維護(hù)一張會話表,記錄進(jìn)入的連接,并賦予每個連接條目一個計數(shù)器(即超時時間),當(dāng)計數(shù)器為0時,清除出此會話表;
-
當(dāng)有新連接到來,對比此會話表,會話中無記錄時,則此連接狀態(tài)為NEW,否則為ESTABLISHED狀態(tài);
-
若進(jìn)來的新連接與已建立的連接有關(guān)聯(lián),如FTP中的數(shù)據(jù)連接對于命令連接來說,則此連接狀態(tài)為RELATED
連接追蹤功能涉及的內(nèi)核模塊:ip_conntrack和nf_conntrack
連接狀態(tài)主要類型:NEW,ESTABLISHED,RELATED,INVALID
state模塊用法:--state {NEW|ESTABLISHED|RELATED|INVALID}
連接狀態(tài)過濾法則:
-
對于進(jìn)入的狀態(tài)為ESTABLISHED和RELATED的連接都應(yīng)該放行
-
對于出去的狀態(tài)為ESTABLISHED的連接都應(yīng)該放行
-
嚴(yán)格檢查進(jìn)入的狀態(tài)為NEW的連接
-
所有狀態(tài)為INVALID的連接都應(yīng)該拒絕
注:因iptables的state模塊對于進(jìn)出的報文都進(jìn)行嚴(yán)格的狀態(tài)匹配,非常消耗系統(tǒng)資源,故在繁忙的前端服務(wù)器(如反向代理服務(wù)器)上,勿開啟此功能!
取反匹配:
以上介紹的匹配條件,大部分都可以在匹配條件前加 ! 號,以表示匹配條件取反,格式是:! 匹配條件,注意感嘆號后的空格
處理機(jī)制:
ACCEPT:報文接受
DROP:報文丟棄
自定義鏈名:調(diào)用自定義鏈,如 -j clean_in
RETURN:返回調(diào)用鏈,一般用于自定義鏈的末尾規(guī)則
本文轉(zhuǎn)自 xxrenzhe11 51CTO博客,原文鏈接:http://blog.51cto.com/xxrenzhe/1386614,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的iptables规则基本用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: salt-master
- 下一篇: IO流(1)