如何使用Nginx對(duì)抗DDoS攻擊?
時(shí)不時(shí)的就有客戶(hù)會(huì)被DDoS一下。很多時(shí)候攻擊很簡(jiǎn)單也容易封堵,但是攻擊的目標(biāo)是應(yīng)用的時(shí)候就更難防御。在這里云端衛(wèi)士介紹一下使用Nginx作為代理過(guò)濾器來(lái)封堵一些這種攻擊。
Apache DDoS攻擊
攻擊Apache或者任何其他的HTTP服務(wù)器并不需要大量流量。有些服務(wù)器可能1 Mbit流量就宕機(jī)了。正確頁(yè)面上的正確請(qǐng)求會(huì)生成巨大的負(fù)載,導(dǎo)致服務(wù)器過(guò)載。應(yīng)用設(shè)計(jì)、阿帕奇配置和其他的因素都會(huì)對(duì)這種相對(duì)較低水平的流量宕機(jī)作出貢獻(xiàn)。當(dāng)然也有辦法能夠?qū)笵DoS攻擊。比如使用Nginx,作為HTTP服務(wù)器的替代品用來(lái)處理流量。
用Nginx對(duì)抗DDoS
在這里不再介紹怎么設(shè)置Nginx作為反向代理系統(tǒng),從而起到對(duì)抗DDoS攻擊的作用。如果想自己做做看的,有很多在線的教程可以參考。這里要分享的是使用Nginx的結(jié)果,以及一些高級(jí)的技巧。
Nginx作為反向代理
由于一些技術(shù)內(nèi)部組件,Nginx通常比Apache更擅長(zhǎng)處理高并發(fā)。在很多案例中,我們?cè)贏pache系統(tǒng)的前端部署Nginx作為反向代理服務(wù)器。通過(guò)在Nginx中調(diào)整變量,通常可以抵抗住更小的攻擊。如果攻擊更大的話,可能就需要在Nginx中采用IP之地、用戶(hù)代理、國(guó)籍或者其他的數(shù)據(jù)過(guò)濾流量。也可以將這些流量徹底丟掉,就永遠(yuǎn)不會(huì)到達(dá)web服務(wù)器了。
服務(wù)器靜態(tài)頁(yè)面
如果攻擊的目標(biāo)是腳本或者數(shù)據(jù)庫(kù)驅(qū)動(dòng)頁(yè)面,服務(wù)器或者數(shù)據(jù)庫(kù)可能很快就過(guò)載。首先可以做的就是創(chuàng)建這個(gè)頁(yè)面的靜態(tài)版本:
1.在安全的地方做一個(gè)鏡像
2.將真正的腳本轉(zhuǎn)移到一個(gè)替代命名
3.設(shè)置一個(gè)副本用來(lái)使用wget或curl,從而在需要間隔創(chuàng)建該頁(yè)面的靜態(tài)版本。
就算你的副本每分鐘都在運(yùn)行,這樣也比運(yùn)行腳本導(dǎo)致的數(shù)據(jù)庫(kù)受到的攻擊少得多。這也是一種快速且更易于實(shí)現(xiàn)的方式來(lái)顯著提升頁(yè)面可擴(kuò)展性的方法。
來(lái)自Nginx的服務(wù)器目標(biāo)頁(yè)面
還有一些案例中,幾個(gè)頁(yè)面的Apache每秒收到了2000多個(gè)請(qǐng)求。即便采用靜態(tài)頁(yè)面的技巧以及用Nginx作為反向代理,系統(tǒng)仍舊處于困境。
這種案例中,攻擊者攻擊具體的頁(yè)面,可以將這些頁(yè)面的靜態(tài)副本轉(zhuǎn)移到Nginx代理。使用位置定向,可以設(shè)置Nginx來(lái)處理這些文件,好處就是現(xiàn)在的Nginx代理正在處理大多數(shù)的負(fù)載,而Apache服務(wù)器則在做該做的。
采用RAM磁盤(pán)
還可以使用/dev/shm (RAM) 作為靜態(tài)文件的位置。通過(guò)將目標(biāo)文件從主服務(wù)器轉(zhuǎn)移到Nginx反向代理,從RAM服務(wù)他們,就能夠在最低限度的硬件上處理每秒1000個(gè)請(qǐng)求,這樣做減少了磁盤(pán)的IO問(wèn)題,可以快速服務(wù)正常業(yè)務(wù)。
用戶(hù)代理封堵
我們發(fā)現(xiàn)超過(guò)60%的攻擊都有具體的用戶(hù)代理。這個(gè)用戶(hù)代理大部���都獨(dú)一無(wú)二。這個(gè)用戶(hù)代理可以識(shí)別極少的合法流量。
用Nginx的過(guò)濾技術(shù)發(fā)送500 error到任何使用用戶(hù)代理的客戶(hù)端。就可以選擇性的減少流量或者重定向流量。這樣做的確會(huì)有一些攻擊變化。
IP封堵
別忘了IP信息報(bào)過(guò)濾系統(tǒng)或者防火墻。在一些案例中,需要更為嚴(yán)厲的舉措。比如,我們可以鎖定具體的國(guó)家,將其流量過(guò)濾掉。這樣做就能夠減少75%的攻擊,剩下的就更易于處理,并且保證網(wǎng)站的正常運(yùn)行。
這些僅僅是一些雕蟲(chóng)小技,想必每一位抗戰(zhàn)在DDoS一線的戰(zhàn)士都有自己的一些心得體會(huì)。在一些出租設(shè)備上,對(duì)于HTTP的DDoS攻擊很難封堵,也難以部署自己的過(guò)濾設(shè)備?,F(xiàn)在也有很多新的DDoS防護(hù)服務(wù)出現(xiàn),可以供選擇。