国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

如何使用nginx防御DDOS攻擊

2015-10-26 22:05:42 6799

1.DDOS是一種通過(guò)大流量的請求對目標進(jìn)行轟炸式訪(fǎng)問(wèn),導致提供服務(wù)的服務(wù)器資源耗盡進(jìn)而無(wú)法繼續提供服務(wù)的攻擊手段。

一般情況下,攻擊者通過(guò)大量請求與連接使服務(wù)器處于飽和狀態(tài),以至于無(wú)法接受新的請求或變得很慢。

2.應用層DDOS攻擊的特征

應用層(七層/HTTP層)DDOS攻擊通常由木馬程序發(fā)起,其可以通過(guò)設計更好的利用目標系統的脆弱點(diǎn)。例如,對于無(wú)法處理大量并發(fā)請求的系統,僅僅通過(guò)建立大量的連接,并周期性的發(fā)出少量數據包來(lái)保持會(huì )話(huà)就可以耗盡系統的資源,使其無(wú)法接受新的連接請求達到DDOS的目的。其他還有采用發(fā)送大量連接請求發(fā)送大數據包的請求進(jìn)行攻擊的形式。因為攻擊是由木馬程序發(fā)起,攻擊者可以在很短時(shí)間內快速建立大量的連接,并發(fā)出大量的請求。

以下是一些DDOS的特證,我們可以據此特征來(lái)抵抗DDOS(包括但不限于):攻擊經(jīng)常來(lái)源于一些相對固定的IPIP段,每個(gè)IP都有遠大于真實(shí)用戶(hù)的連接數和請求數。備注:這并不表明這種請求都是代表著(zhù)DDOS攻擊。在很多使用NAT的網(wǎng)絡(luò )架構中,很多的客戶(hù)端使用網(wǎng)關(guān)的IP地址訪(fǎng)問(wèn)公網(wǎng)資源。但是,即便如此,這樣的請求數和連接數也會(huì )遠少于DDOS攻擊。因為攻擊是由木馬發(fā)出且目的是使服務(wù)器超負荷,請求的頻率會(huì )遠遠超過(guò)正常人的請求。User-Agent通常是一個(gè)非標準的值Referer有時(shí)是一個(gè)容易聯(lián)想到攻擊的值

3.使用Nginx、Nginx Plus抵抗DDOS攻擊

結合上面提到的DDOS攻擊的特征,Nginx、Nginx Plus有很多的特性可以用來(lái)有效的防御DDOS攻擊,可以從調整入口訪(fǎng)問(wèn)流量和控制反向代理到后端服務(wù)器的流量?jì)蓚€(gè)方面來(lái)達到抵御DDOS攻擊的目的。

限制請求速度

    設置Nginx的連接請求在一個(gè)真實(shí)用戶(hù)請求的合理范圍內。比如,如果你覺(jué)得一個(gè)正常用戶(hù)每?jì)擅肟梢哉埱笠淮蔚卿涰?yè)面,你就可以設置Nginx每?jì)擅腌娊邮找粋€(gè)客戶(hù)端IP的請求(大約等同于每分鐘30個(gè)請求)。

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;server {...location /login.html {limit_req zone=one;...}}

`limit_req_zone`命令設置了一個(gè)叫one的共享內存區來(lái)存儲請求狀態(tài)的特定鍵值,在上面的例子中是客戶(hù)端IP($binary_remote_addr)。location塊中的`limit_req`通過(guò)引用one共享內存區來(lái)實(shí)現限制訪(fǎng)問(wèn)/login.html的目的。

4.限制連接數量

設置Nginx的連接數在一個(gè)真實(shí)用戶(hù)請求的合理范圍內。比如,你可以設置每個(gè)客戶(hù)端IP連接/store不可以超過(guò)10個(gè)。

limit_conn_zone $binary_remote_addr zone=addr:10m;server {...location /store/ {limit_conn addr 10;...}}

`limit_conn_zone`命令設置了一個(gè)叫addr的共享內存區來(lái)存儲特定鍵值的狀態(tài),在上面的例子中是客戶(hù)端IP $binary_remote_addr)。location塊中`limit_conn`通過(guò)引用addr共享內存區來(lái)限制到/store/的最大連接數為10。

5.關(guān)閉慢連接

有一些DDOS攻擊,比如Slowlris,是通過(guò)建立大量的連接并周期性的發(fā)送一些數據包保持會(huì )話(huà)來(lái)達到攻擊目的,這種周期通常會(huì )低于正常的請求。這種情況我們可以通過(guò)關(guān)閉慢連接來(lái)抵御攻擊。

`client_body_timeout`命令用來(lái)定義讀取客戶(hù)端請求的超時(shí)時(shí)間,`client_header_timeout`命令用來(lái)定于讀取客戶(hù)端請求頭的超時(shí)時(shí)間。這兩個(gè)參數的默認值都是60s,我們可以通過(guò)下面的命令將他們設置為5s

server {client_body_timeout 5s;client_header_timeout 5s;...}

6.設置IP黑名單

如果確定攻擊來(lái)源于某些IP地址,我們可以將其加入黑名單,Nginx就不會(huì )再接受他們的請求。比如,你已經(jīng)確定攻擊來(lái)自于從123.123.123.1123.123.123.16的一段IP地址,你可以這樣設置:

location / {deny 123.123.123.0/28;...}

或者你確定攻擊來(lái)源于123.123.123.3、123.123.123.5、123.123.123.7幾個(gè)IP,可以這樣設置:

location / {deny 123.123.123.3;deny 123.123.123.5;deny 123.123.123.7;...}

7.設置IP白名單

如果你的網(wǎng)站僅允許特定的IPIP段訪(fǎng)問(wèn),你可以結合使用allowdeny命令來(lái)限制僅允許你指定的IP地址訪(fǎng)問(wèn)你的網(wǎng)站。如下,你可以設置僅允許192.168.1.0段的內網(wǎng)用戶(hù)訪(fǎng)問(wèn):

location / {allow 192.168.1.0/24;deny all;...}

deny命令會(huì )拒絕除了allow指定的IP段之外的所有其他IP的訪(fǎng)問(wèn)請求。

提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->