iptables中关于limit和limit-burst的解释
Limit match
????這個(gè)匹配操作必須由-m limit明確指定才能使用。有了他的幫助,就能對(duì)指定的規(guī)則的日志數(shù)量加以限制,以免你被信息的洪流淹沒哦。比如,你能事先設(shè)定一個(gè)限定值,當(dāng)符合條件的包的數(shù)量不超過他時(shí),就記錄;超過了,就不記錄了。我們能控制某條規(guī)則在一段時(shí)間內(nèi)的匹配次數(shù)(也就是能匹配的包的數(shù)量),這樣就能夠減少DoS?syn flood攻擊的影響。這是他的主要作用,當(dāng)然,更有非常多其他作用(注:比如,對(duì)于某些不常用的服務(wù)能限制連接數(shù)量,以免影響其他服務(wù))。limit?match也能用英文感嘆號(hào)取反,如:-m limit ! --limit 5/s表示在數(shù)量超過限定值后,所有的包都會(huì)被匹配。
????limit match的工作方式就像一個(gè)單位大門口的保安,當(dāng)有人要進(jìn)入時(shí),需要找他辦理通行證。早上上班時(shí),保安手里有一定數(shù)量的通行證,來一個(gè)人,就簽發(fā)一個(gè),當(dāng)通行證用完后,再來人就進(jìn)不去了,但他們不會(huì)等,而是到別的地方去(在iptables里,這相當(dāng)于一個(gè)包不符合某條規(guī)則,就會(huì)由后面的規(guī)則來處理,如果都不符合,就由缺省的策略處理)。但有個(gè)規(guī)定,每隔一段時(shí)間保安就要簽發(fā)一個(gè)新的通行證。這樣,后面來的人如果恰巧趕上,也就能進(jìn)去了。如果沒有人來,那通行證就保留下來,以備來的人用。如果一直沒人來,可用的通行證的數(shù)量就增加了,但不是無限增大的,最多也就是剛開始時(shí)保安手里有的那個(gè)數(shù)量。也就是說,剛開始時(shí),通行證的數(shù)量是有限的,但每隔一段時(shí)間就有新的通行證可用。limit match有兩個(gè)參數(shù)就對(duì)應(yīng)這種情況,--limit-burst指定剛開始時(shí)有多少通行證可用,--limit指定要隔多長時(shí)間才能簽發(fā)一個(gè)新的通行證。要注意的是,我這里強(qiáng)調(diào)的是“簽發(fā)一個(gè)新的通行證”,這是以iptables的角度考慮的。在你自己寫規(guī)則時(shí),就要從這個(gè)角度考慮。比如,你指定了--limit 3/minute --limit-burst 5?,意思是開始時(shí)有5個(gè)通行證,用完之后每20秒增加一個(gè)(這就是從iptables的角度看的,要是以用戶的角度看,說法就是每一分鐘增加三個(gè)或每分鐘只能過三個(gè))。你要是想每20分鐘過一個(gè),只能寫成--limit 3/hour --limit-burst 5,也就是說你要把時(shí)間單位湊成整的。
Table 1?1. Limit match options
Match
--limit
Example
iptables -A INPUT -m limit --limit 3/hour
Explanation
為limit match設(shè)置最大平均匹配速率,也就是單位時(shí)間內(nèi)limit?match能匹配幾個(gè)包。他的形式是個(gè)數(shù)值加一個(gè)時(shí)間單位,能是/second?/minute?/hour /day?。默認(rèn)值是每小時(shí)3次(用戶角度),即3/hour?,也就是每20分鐘一次(iptables角度)。
Match
--limit-burst
Example
iptables -A INPUT -m limit --limit-burst 5
Explanation
這里定義的是limit match的峰值,就是在單位時(shí)間(這個(gè)時(shí)間由上面的--limit指定)內(nèi)最多可匹配幾個(gè)包(由此可見,--limit-burst的值要比--limit的大)。默認(rèn)值是5。
?
假設(shè)如下的規(guī)則:
iptables -A INPUT -p icmp -m limit --limit 6/m --limit-burst 5 -j ACCEPT
iptables -P INPUT DROP
然后從另一部主機(jī)上ping這部主機(jī),就會(huì)發(fā)生如下的現(xiàn)象:
首先我們能看到前四個(gè)包的回應(yīng)都非常正常,然后從第五個(gè)包開始,我們每10秒能收到一個(gè)正常的回應(yīng)。這是因?yàn)槲覀冊(cè)O(shè)定了單位時(shí)間(在這里是每分鐘)內(nèi)允許通過的數(shù)據(jù)包的個(gè)數(shù)是每分鐘6個(gè),也即每10秒鐘一個(gè);其次我們又設(shè)定了事件觸發(fā)閥值為5,所以我們的前四個(gè)包都是正常的,只是從第五個(gè)包開始,限制規(guī)則開始生效,故只能每10秒收到一個(gè)正常回應(yīng)。
假設(shè)我們停止ping,30秒后又開始ping,這時(shí)的現(xiàn)象是:
前兩個(gè)包是正常的,從第三個(gè)包開始丟包,這是因?yàn)樵谶@里我的允許一個(gè)包通過的周期是10秒,如果在一個(gè)周期內(nèi)系統(tǒng)沒有收到符合條件的包,系統(tǒng)的觸發(fā)值就會(huì)恢復(fù)1,所以如果我們30秒內(nèi)沒有符合條件的包通過,系統(tǒng)的觸發(fā)值就會(huì)恢復(fù)到3,如果5個(gè)周期內(nèi)都沒有符合條件的包通過,系統(tǒng)都觸發(fā)值就會(huì)完全恢復(fù)。
iptables --limit --limit-burst 使用研究
1、限制特定包傳入速度
2、限制特定端口傳入頻率
3、使用--limit限制ping的一個(gè)例子
4、用戶自定義使用鏈
5、防范SYN-Flood碎片攻擊
1、限制特定包傳入速度
參數(shù) -m limit --limit?
范例 iptables -A INPUT -m limit --limit 3/hour?
說明 用來比對(duì)某段時(shí)間內(nèi)封包的平均流量,上面的例子是用來比對(duì):每小時(shí)平均流量是否超過一次 3 個(gè)封包。 除了每小時(shí)平均?
次外,也可以每秒鐘、每分鐘或每天平均一次,默認(rèn)值為每小時(shí)平均一次,參數(shù)如后: /second、 /minute、/day。 除了進(jìn)行封?
數(shù)量的比對(duì)外,設(shè)定這個(gè)參數(shù)也會(huì)在條件達(dá)成時(shí),暫停封包的比對(duì)動(dòng)作,以避免因駭客使用洪水攻擊法,導(dǎo)致服務(wù)被阻斷。
2、限制特定包瞬間傳入的峰值
參數(shù) --limit-burst?
范例 iptables -A INPUT -m limit --limit-burst 5?
說明 用來比對(duì)瞬間大量封包的數(shù)量,上面的例子是用來比對(duì)一次同時(shí)涌入的封包是否超過 5 個(gè)(這是默認(rèn)值),超過此上限的封?
將被直接丟棄。使用效果同上。
3、使用--limit限制ping的一個(gè)例子
限制同時(shí)響應(yīng)的 ping (echo-request) 的連接數(shù)
限制每分只接受一個(gè) icmp echo-request 封包(注意:當(dāng)已接受1個(gè)icmp echo-request 封包后,
iptables將重新統(tǒng)計(jì)接受之后的一秒內(nèi)接受的icmp echo-request 封包的個(gè)數(shù),此刻為0個(gè),所以它會(huì)繼續(xù)接受icmp echo-request包,
出現(xiàn)的結(jié)果是你在1分鐘時(shí)間內(nèi)將看到很多
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
Reply from 192.168.0.111: bytes=32 time<1ms TTL=64
響應(yīng)結(jié)果,若你同時(shí)開好幾個(gè)ping窗口,你會(huì)發(fā)現(xiàn)任一時(shí)刻只有一個(gè)會(huì)有響應(yīng)//--limit 1/m 所限制)
#iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m --limit-burst 1 -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
--limit 1/s 表示每秒一次; 1/m 則為每分鐘一次
--limit-burst 表示允許觸發(fā) limit 限制的最大次數(shù) (預(yù)設(shè) 5)
4、用戶自定義使用鏈
上面例子的另一種實(shí)現(xiàn)方法:
#iptables -N pinglimit
#iptables -A pinglimit -m limit --limit 1/m --limit-burst 1 -j ACCEPT
#iptables -A pinglimit -j DROP
#iptables -A INPUT -p icmp --icmp-type echo-request -j pinglimit
5、防范 SYN-Flood 碎片攻擊
#iptables -N syn-flood
#iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURN
#iptables -A syn-flood -j DROP
#iptables -I INPUT -j syn-flood?
關(guān)于iptables的基本介紹能參見:
Linux iptables 應(yīng)用手冊(cè)(-):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4595.shtml
Linux iptables 應(yīng)用手冊(cè)(二):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4596.shtml
Linux iptables 應(yīng)用手冊(cè)(三):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4597.shtml
Linux iptables 應(yīng)用手冊(cè)(四):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4598.shtml
Linux iptables 應(yīng)用手冊(cè)(五):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4599.shtml
Linux iptables 應(yīng)用手冊(cè)(六):
http://fanqiang.chinaunix.net/system/linux/2006-06-20/4600.shtml
關(guān)于iptables拓展功能.例如:comment (備注匹配) ,string(字符串匹配,能用做內(nèi)容過濾),iprang(ip范圍匹配),time(時(shí)間匹配),ipp2p(點(diǎn)對(duì)點(diǎn)匹配),connlimit(同時(shí)連接個(gè)數(shù)匹配),Nth(第n個(gè)包匹配),geoip(根據(jù)國家地區(qū)匹配). ipp2p(點(diǎn)對(duì)點(diǎn)匹配), quota(配額匹配)等等,參見:
http://bbs.chinaunix.net/viewthread.php?tid=525493
本文轉(zhuǎn)自奔跑在路上博客51CTO博客,原文鏈接http://blog.51cto.com/qiangsh/1978835如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
qianghong000
總結(jié)
以上是生活随笔為你收集整理的iptables中关于limit和limit-burst的解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle分析函数三——SUM,AVG
- 下一篇: QComboBox可以随意设置itemD