簡體   English   中英

防止惡意請求 - DOS攻擊

[英]Prevent Malicious Requests - DOS Attacks

我正在開發一個asp.net MVC Web應用程序,客戶端要求我們盡最大努力使其盡可能具有抵御拒絕服務攻擊的能力。 他們擔心該網站可能會收到惡意的大量請求,意圖減慢/取消網站。

我已經與產品所有者討論了這個問題,因為它實際上不屬於實際的Web應用程序。 我認為托管/網絡團隊有責任監控流量並響應惡意請求。

但是他們堅持認為應用程序應該內置一些預防措施。 但他們不想實施CAPTCHA。

有人建議我們限制在給定時間范圍內可以為會話提出的請求數。 我在考慮做這樣的事情在ASP.NET MVC中實現請求限制的最佳方法? 但是使用會話ID不是客戶端IP,因為這會給來自公司防火牆后面的用戶帶來問題 - 他們的IP都是一樣的。

他們還建議添加關閉網站某些區域的功能 - 建議管理員用戶可以關閉數據庫密集區域......但是這可以通過UI控制,當然如果它是在DOS攻擊下管理員用戶無論如何都無法達到它。

我的問題是,這樣做真的值得嗎? 當然真正的DOS攻擊會更先進嗎?

你有什么其他的建議?

拒絕服務攻擊幾乎可以影響其他人服務的穩定性。 在這種情況下,您談論的是網絡DoS,並且如前所述,這通常不會發生在您的應用程序級別。

理想情況下,這種攻擊將在網絡級別得到緩解。 有專門為此構建的防火牆,例如Cisco ASA 5500系列 ,它可以從基本保護到高吞吐量緩解。 它們是相當智能的盒子,我可以保證它們有效阻止這些類型的攻擊,只要正在使用正確的吞吐量模型。

當然,如果無法訪問為您執行此操作的硬件防火牆,則可以采取一些權宜措施來協助防御這些類型的攻擊。 請注意,這些都不會像專用防火牆那樣有效。

其中一個例子是IIS模塊動態IP限制 ,它允許您定義最大並發請求的限制。 但是,實際上這有一個缺點,它可能會開始阻止來自具有高並發請求吞吐量的瀏覽器的合法請求以下載腳本和圖像等。

最后,你可以做的事情真的很粗糙,但也非常有效,就像我之前寫的那樣。 基本上,它是一個小工具,可以監視來自同一IP的重復請求的日志文件。 因此,假設從1.2.3.4對2秒的/Home請求10次。 如果檢測到此情況,則會添加防火牆規則(在Windows高級防火牆中,使用shell命令添加)來阻止來自此IP的請求,然后可以在30分鍾左右刪除該規則。

就像我說的那樣,它非常粗糙,但是如果你必須在服務器級別進行,那么你並沒有真正有很多明智的選擇,因為它不是應該在哪里完成的。 你完全正確,責任在於托管服務提供商。

最后,你對CAPTCHA也是對的。 如果有的話,它可以通過一次又一次地執行圖像生成(可能是資源密集型)來協助DoS,從而使您的資源更加匱乏。 但是CAPTCHA有效的時間是,如果您的網站被自動注冊機器人發送垃圾郵件,但我相信您已經知道了。

如果你真的想在應用程序級別做一些事情只是為了取悅那些權力,在你的應用程序中實現基於IP的請求限制是可行的,盡管90%無效(因為你仍然必須處理請求)。

如果你絕對不得不熬夜,你可以在雲中實施解決方案並擴展服務器,但它可能會變得昂貴......

另一個想法是記錄注冊用戶的IP地址。 如果DOS限制所有來自“好”用戶的請求的流量。

在應用程序級別上防止真正的DoS攻擊實際上是不可行的,因為請求很可能在它殺死您的應用程序之前殺死您的Web服務器,因為您的應用程序與應用程序池相關聯,該應用程序池同時具有最多的並發請求由您正在使用的服務器技術定義。

這篇有趣的文章http://www.asp.net/web-forms/tutorials/aspnet-45/using-asynchronous-methods-in-aspnet-45指出Windows 7,Windows Vista和Windows 8最多同時發生10個並發要求。 它進一步說明“你將需要一個Windows服務器操作系統來看看高負載下異步方法的好處”。

您可以增加與應用程序關聯的應用程序池的HTTP.sys隊列限制,以增加將排隊的請求數量(以便在線程准備好時進行后續計算),這將阻止HTTP協議堆棧(HTTP) .sys)在超出限制時返回Http錯誤503並且沒有工作進程可用於處理進一步的請求。

您提到客戶要求您“盡力使其盡可能具有抵御拒絕服務攻擊的能力”。 我的建議可能不適合您的情況,但您可以考慮實施本文中提到的基於任務的異步模式(TAP),以滿足客戶的需求。

此模式將在執行持久操作時釋放線程,並使線程可用於進一步請求(從而使您的HTTP.sys隊列保持較低) - 同時還為您的應用程序提供了在向第三方服務發出多個請求時提高整體性能的好處或執行多個密集IO計算。

此措施不會使您的應用程序對DoS攻擊具有彈性,但它會使您的應用程序盡可能對其所服務的硬件負責。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM