如何使用Nginx對抗DDoS攻擊?

時不時的就有客戶會被DDoS一下。很多時候攻擊很簡單也容易封堵,但是攻擊的目標是應用的時候就更難防禦。在這裏雲端衛士介紹一下使用Nginx作爲代理過濾器來封堵一些這種攻擊。


Apache DDoS攻擊


攻擊Apache或者任何其他的HTTP服務器並不需要大量流量。有些服務器可能1 Mbit流量就宕機了。正確頁面上的正確請求會生成巨大的負載,導致服務器過載。應用設計、阿帕奇配置和其他的因素都會對這種相對較低水平的流量宕機作出貢獻。當然也有辦法能夠對抗DDoS攻擊。比如使用Nginx,作爲HTTP服務器的替代品用來處理流量。


用Nginx對抗DDoS


在這裏不再介紹怎麼設置Nginx作爲反向代理系統,從而起到對抗DDoS攻擊的作用。如果想自己做做看的,有很多在線的教程可以參考。這裏要分享的是使用Nginx的結果,以及一些高級的技巧。


Nginx作爲反向代理


由於一些技術內部組件,Nginx通常比Apache更擅長處理高併發。在很多案例中,我們在Apache系統的前端部署Nginx作爲反向代理服務器。通過在Nginx中調整變量,通常可以抵抗住更小的攻擊。如果攻擊更大的話,可能就需要在Nginx中採用IP之地、用戶代理、國籍或者其他的數據過濾流量。也可以將這些流量徹底丟掉,就永遠不會到達web服務器了。


服務器靜態頁面


如果攻擊的目標是腳本或者數據庫驅動頁面,服務器或者數據庫可能很快就過載。首先可以做的就是創建這個頁面的靜態版本:
1.在安全的地方做一個鏡像
2.將真正的腳本轉移到一個替代命名
3.設置一個副本用來使用wget或curl,從而在需要間隔創建該頁面的靜態版本。


就算你的副本每分鐘都在運行,這樣也比運行腳本導致的數據庫受到的攻擊少得多。這也是一種快速且更易於實現的方式來顯著提升頁面可擴展性的方法。


來自Nginx的服務器目標頁面


還有一些案例中,幾個頁面的Apache每秒收到了2000多個請求。即便採用靜態頁面的技巧以及用Nginx作爲反向代理,系統仍舊處於困境。


這種案例中,攻擊者攻擊具體的頁面,可以將這些頁面的靜態副本轉移到Nginx代理。使用位置定向,可以設置Nginx來處理這些文件,好處就是現在的Nginx代理正在處理大多數的負載,而Apache服務器則在做該做的。


採用RAM磁盤


還可以使用/dev/shm (RAM) 作爲靜態文件的位置。通過將目標文件從主服務器轉移到Nginx反向代理,從RAM服務他們,就能夠在最低限度的硬件上處理每秒1000個請求,這樣做減少了磁盤的IO問題,可以快速服務正常業務。


用戶代理封堵


我們發現超過60%的攻擊都有具體的用戶代理。這個用戶代理大部分都獨一無二。這個用戶代理可以識別極少的合法流量。


用Nginx的過濾技術發送500 error到任何使用用戶代理的客戶端。就可以選擇性的減少流量或者重定向流量。這樣做的確會有一些攻擊變化。


IP封堵


別忘了IP信息報過濾系統或者防火牆。在一些案例中,需要更爲嚴厲的舉措。比如,我們可以鎖定具體的國家,將其流量過濾掉。這樣做就能夠減少75%的攻擊,剩下的就更易於處理,並且保證網站的正常運行。


這些僅僅是一些雕蟲小技,想必每一位抗戰在DDoS一線的戰士都有自己的一些心得體會。在一些出租設備上,對於HTTP的DDoS攻擊很難封堵,也難以部署自己的過濾設備。現在也有很多新的DDoS防護服務出現,可以供選擇。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章