2012-05-18 15 views
4

在運行諸如node.js之類的非阻塞框架的應用程序上處理DDoS攻擊時,是否存在固有的優點或缺點?帶有非阻塞框架對DoS/DDoS的影響

據我所知,這些攻擊以大量請求超載系統資源 - 導致它失敗。非阻塞框架能夠處理比阻塞更多的併發請求。這不應該意味着大自然使用非阻塞框架有助於緩解這些類型的攻擊?

我意識到還有其他因素可以減輕這些攻擊,但在所有其他條件相同的情況下,這是一個正確的假設嗎?

回答

3

非阻塞服務通常會比阻塞服務爲用戶提供更多的系統資源。在所有系統資源都被攻擊用完之前,非阻塞服務的性能會更好,因爲合法用戶在攻擊發生時仍然可以履行請求。也就是說,真正的用戶在系統開始處理合法請求之前不必等待攻擊者的虛假請求完成。但是,考慮到系統資源暴露程度更高,DDoS攻擊可能對非阻塞服務更有效。

舉例來說,限制因素是數據庫訪問。非阻塞服務比阻塞服務能夠提供更多的數據庫請求。所以雖然非阻塞服務仍然可以接受合法的用戶請求,但他們將很難完成數據庫訪問,因爲攻擊者的請求能夠更好地保持數據庫的負載。

所以我會說是的 - 非阻塞更好 - 但只有當你能確保下游資源適當的大小。

2

DDoS攻擊可以針對不同的服務,比如ddns,web服務器,數據庫ar可以有不同的效果,比如自己重載服務器,或者cpu,或者填滿ram,或者嘗試寫入很多磁盤以便填寫它(今天更加罕見)或者只寫更多可寫的數據。

DDoS的一個非常常見的用法是解釋你的問題,它的目標是創建比服務器可以處理的連接更多的連接。 Web服務器的典型默認值是256(或許多系統中爲512)併發嘗試創建連接。在linux系統中,您可以在此處手動更改值,例如/ proc/sys/net/ipv4/tcp_max_syn_backlog。因此,通過創造更多的優勢(使用syn標誌發送數據包),它將導致拒絕服務。所以你使用的框架在第一時間沒有任何意義。另外,非阻塞框架每秒發出更多請求阻塞,這在很多情況下都會幫助攻擊者。在某些服務器和/或配置中,這將爲每個請求創建一個實例,這將有助於更多攻擊者。

所以你的假設是錯誤的。

+0

我不明白你的第三段,但在正確的配置中,我們假設1024個併發嘗試 - 現在你可能正在達到框架的極限。在這種情況下,攻擊者需要集中更多資源來達到這個限制,我相信,我的假設是,它可以處理的併發請求越多,必須發生的攻擊規模就越大。 – badunk

+0

應用能力限制越大,需要的資源就越多。我在上面說的是,這不僅僅是一個框架併發請求功能,而是資源問題。如果我們將資源視爲無限資源,那麼是更好。但在很多情況下,例如在緩慢的sql查詢會議中,攻擊者越好越好。總而言之,如果我們在一個擁有非常大資源的系統中運行它,並且所有其他事實,設計/設置都很好,我會更好。在下面繼續.. –

+0

但是,對於更多情況,我們必須在其他層使用其他規則,例如網絡,傳輸,應用程序來過濾這些請求或使用負載均衡器將它們發送到其他服務器等。在小型服務器上,由於資源較少,你可以安裝諸如「lighttpd」或nginx之類的東西,比如Apache,iis,lightspeed等更大的東西。所以,總結一下,我們必須測量所有因素,創建整個設計,我們想要實現的標準(穩定性,高可用性等)。 –

1

不幸的是nodejs不會幫助DDoS,因爲它可以像任何其他服務器一樣簡單地重載,事實上,非阻塞不會改變任何東西,實際上可以更快地殺死服務器,因爲它會嘗試處理更多的請求而無需排隊他們。