国产成人毛片毛片久久网_国产午夜激无码av毛片不_国产乱对白精彩在线播放_av资源站中文字幕_亚洲男人的天堂网站_国产成 人 综合 亚洲网_中国国产激情一区_少妇一级淫片免费放_亚洲一本大道av久在线播放_免费观看美女裸体网站

行業(yè)動態(tài)

防御吧作為15年知名老牌域名服務(wù)商,CNNIC和CANN雙認證域名注冊商,已經(jīng)
持續(xù)為500多萬個域名提供服務(wù),包括智能DNS/自由轉(zhuǎn)移/隱私保護等服務(wù)!
簡單的Nginx防CC攻擊方式
2019-07-03 10:02:23 【

簡單的Nginx防CC方式

實驗

Nginx配置


http {    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    server {        #限制每ip每秒不超過20個請求,漏桶數(shù)burst為5        #brust的意思就是,如果第1秒、2,3,4秒請求為19個,        #第5秒的請求為25個是被允許的。        #但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。        #nodelay,如果不設(shè)置該選項,嚴格使用平均速率限制請求數(shù),        #第1秒25個請求時,5個請求放到第2秒執(zhí)行,        #設(shè)置nodelay,25個請求將在第1秒執(zhí)行。        limit_req   zone=one  burst=1 nodelay;    }}

上面樣本的配置是什么意思呢?

  • $binary_remote_addr 表示:客戶端IP地址

  • zone 表示漏桶的名字

  • rate 表示nginx處理請求的速度有多快

  • burst 表示峰值

  • nodelay 表示是否延遲處理請求,還是直接503返回給客戶端,如果超出rate設(shè)置的情況下。

詳細的可以參考官方說明文檔:Module ngx_http_limit_req_module(http://nginx.org/en/docs/http/ngx_http_limit_req_module.html)

模擬請求

這里我們需要Apache Benchmark這個小工具來生成請求

//1個用戶持續(xù)100s的時間向服務(wù)器發(fā)送請求
ab -t 100 -c 1 -vvv http://example.com/

Nginx配置樣本一


http {    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    server {        limit_req   zone=one  burst=1 nodelay;    }}

ab測試結(jié)果如下所示:

數(shù)據(jù)成功的請求數(shù)失敗的請求數(shù)請求時間每秒成功的請求數(shù)
110019438101.1950.98
210017651100.6550.99
39725735100.4240.96
410126791100.0001.01
59819051100.5140.98
平均9921733.2100.5570.98

以上失敗的請求在Nginx上生成的錯誤日志如下顯示


2015/05/0912:48:57 [error] 6564#0: *2219 limiting requests, excess: 1.273 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"2015/05/0912:48:57 [error] 6564#0: *2220 limiting requests, excess: 1.272 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"2015/05/0912:48:57 [error] 6564#0: *2221 limiting requests, excess: 1.271 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"2015/05/0912:48:57 [error] 6564#0: *2222 limiting requests, excess: 1.270 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"2015/05/0912:48:57 [error] 6564#0: *2223 limiting requests, excess: 1.269 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"2015/05/0912:48:57 [error] 6564#0: *2224 limiting requests, excess: 1.268 by zone "one", client: 10.0.2.2, server: example.com, request: "GET / HTTP/1.0", host: "example.com"

如上ab測試中如果是失敗的請求,nginx的limit_req模塊會統(tǒng)一返回503給客戶端,瀏覽器上面顯示的是這個樣子的。

Nginx配置樣本二

在配置二里面,我把burst(峰值)提高到了10


http {    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    server {        limit_req   zone=one  burst=10 nodelay;    }}

數(shù)據(jù)成功的請求數(shù)失敗的請求數(shù)請求時間每秒成功的請求數(shù)
111019042100.1441.09
211122271101.7141.09
311118466100.5041.10
411116468101.2851.09
511112770100.5961.10
平均11017803100.788

1.09

從數(shù)據(jù)來看,提高了burst值,明顯nginx成功的請求數(shù)上去了。

Nginx配置樣本三

在樣本二的基礎(chǔ)上,我們把nodelay去除掉


http {    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    server {        limit_req   zone=one  burst=10;    }}

數(shù)據(jù)成功的請求數(shù)失敗的請求數(shù)請求時間每秒成功的請求數(shù)
1960100.2231.09
2980100.2380.97
31000100.7610.99
4960100.0740.95
5970100.0210.96
平均97.40100.2630.97

從這里的數(shù)據(jù)可以看到將nodelay的參數(shù)去掉的話,成功的請求數(shù)在100左右而失敗的請求數(shù)變成0了,為什么呢?

  • 有nodelay參數(shù)的時候,nginx正常是及時處理當前的請求的并響應(yīng)數(shù)據(jù)給客戶端,但是如果超過limit_req_module的限制,那么會統(tǒng)一返回503給客戶端。

  • 無nodelay參數(shù)的時候,nginx正常是及時處理當前的請求的并響應(yīng)數(shù)據(jù)給客戶端,但是如果超過limit_req_module的限制,那么會將此此請求緩存「就先這么理解」起來稍后再處理,所以也就不會出現(xiàn)大量的失敗請求數(shù)了。

存在的問題

雖然用limit_req_module可以一定上的防止CC攻擊,但是有誤殺概率;國內(nèi)寬帶用戶的IP地址已經(jīng)大量內(nèi)網(wǎng)化,幾百人共享一個IP的可能性是很大的。


】【打印關(guān)閉】 【返回頂部
分享到QQ空間
分享到: 
上一篇應(yīng)用層DDoS的防御理論 下一篇CC攻擊的變異品種-慢速攻擊,如何..

立足首都,輻射全球,防御吧專注云防御及云計算服務(wù)15年!

聯(lián)系我們

服務(wù)熱線:13051179500 18910191973
企業(yè)QQ:1245940436
技術(shù)支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解決防御與加速) 版權(quán)所有 增值許可:京B2-20140042號
售前咨詢
公司總機:18910191973
24小時電話:010-56159998
投訴電話:18910191973
值班售后/技術(shù)支持
售后服務(wù)/財務(wù)
備案專員
緊急電話:18610088800