2009-06-22 150 views
17

這可能更適合於Serverfault,但許多隻有在這裏才能訪問的web開發者可能會從這個問題的可能答案中受益。保護自己免受Dos攻擊

問題是:如何有效地保護自己免受針對您的網絡服務器的拒絕服務攻擊?

我問自己這個閱讀本article

對於那些不熟悉之後,這是我記得這件事:一個DoS攻擊會試圖通過反覆發送僞報頭到您的服務器佔據所有連接。

通過這樣做,您的服務器將達到可能的同時連接的限制,因此,普通用戶無法再訪問您的站點。

Wikipedia提供一些更多的信息:http://en.wikipedia.org/wiki/Denial_of_service

回答

43

有沒有靈丹妙藥,但你可以使DoS攻擊更難做以下一些:

  • 不要(或限制你願意)代表未經驗證的客戶做昂貴的操作
  • 油門認證試圖代表每個認證客戶端的執行
  • 油門操作,並把他們的帳戶上的臨時鎖定,如果他們做太多的事情在太短的時間
  • 有一個類似的全球油門所有unauthentica泰德的客戶,並準備以降低此設置,如果你檢測到正在進行的攻擊
  • 有可以攻擊過程中使用禁用所有未經驗證的訪問
  • 事情不要存儲代表未認證用戶的標誌和使用配額限制每個認證的客戶
  • 一般的存儲,儘可能快地拒絕所有的格式不正確,不合理地複雜,或者無理鉅額請求(和記錄他們在檢測到攻擊的幫助)
  • 不要使用一個純粹的LRU緩存,如果來自未經身份驗證的客戶端的請求可能導致從該緩存中驅逐事物,因爲您將遭受緩存中毒攻擊(其中惡意客戶請求大量不同不常使用的東西,使您從緩存中驅逐所有有用的東西,需要做更多的工作,以滿足您的合法客戶端)

記住,重要的是要徹底拒絕節流請求(例如,與HTTP 503: Service Unavailable響應或類似的響應適合您正在使用的任何協議),而不是排隊扼殺請求。如果將它們排隊,隊列就會吞噬你的所有內存,並且DoS攻擊的效果至少與沒有限制的效果一樣。

的HTTP服務器的一些更具體的建議:

  • 確保您的網絡服務器配置爲拒絕POST消息沒有伴隨Content-Length頭,並拒絕請求(油門有問題的客戶端),這超過聲明Content-Length,並拒絕與Content-Length這是不合理長的POST(或PUT)旨在
0

簡短的回答:

你不能保護自己免受DoS攻擊。

,我不同意這屬於對serverfault,因爲DoS攻擊(只要該請求是GET)基於負載均衡或WAF歸類爲一個安全問題,並definetly與編程相關

+0

的服務請求,只是因爲它是一個安全問題做這並不意味着它不屬於ServerFault。編程僅解決這些安全問題的一小部分。 – ProfK 2014-11-28 04:38:51

1

對於這個特定的攻擊只有基於Web服務器的完整請求才能工作。

由於您無法知道這是一個惡意的POST還是僅僅是從用戶上傳的一些非常慢的上傳,所以會使用(而非簡單)代替GET POST的問題。

從DoS本身來說,由於一個簡單的事實,您無法真正保護您的Web應用程序。您的資源有限,而攻擊者可能擁有無限的時間和資源來執行DoS。而且大多數情況下,攻擊者執行所需步驟很便宜。例如上面提到的這種攻擊有幾百個緩慢運行的連接 - >沒有問題

1

例如,異步服務器或多或少不受這種特殊形式的攻擊的影響。例如,我使用Nginx反向代理服務我的Django應用程序,並且這種攻擊似乎不會影響其操作。另一種流行的異步服務器是lighttpd。

請注意,這種攻擊是危險的,因爲它甚至可以通過連接速度慢的單臺機器來執行。然而,普通的DDoS攻擊會讓你的服務器對抗一大羣機器,並且你很難保護自己免受這些攻擊。

相關問題