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