四兩撥千斤 Apache HTTP DoS工具解析
原創(chuàng)【51CTO.com獨(dú)家翻譯】國外安全人員昨天發(fā)布了一個(gè)很有意思的HTTP Dos攻擊工具。這個(gè)工具能夠通過耗盡服務(wù)器的可用連接,對(duì)Apache(以及其它一些服務(wù)器,見下文)進(jìn)行拒絕服務(wù)攻擊(Denial of Service attack)。雖然現(xiàn)在已經(jīng)有很多其它的Dos工具,但這個(gè)工具比較特殊,因?yàn)樗鼤?huì)向服務(wù)器發(fā)送不完整的HTTP請(qǐng)求報(bào)文,讓HTTP連接一直處于開放狀態(tài)。
在這種情況下,服務(wù)器只有打開連接并等待完整的報(bào)文送達(dá)。但結(jié)果是,客戶端(也就是這個(gè)Dos工具)根本不會(huì)把完整的報(bào)文信息發(fā)送過去,反而會(huì)繼續(xù)發(fā)送一些惡意構(gòu)造的報(bào)文行(bogus header line),使得這個(gè)連接不能被關(guān)閉。
最開始發(fā)送的那部分HTTP請(qǐng)求是完全合法的:
GET / HTTP/1.1\r\n Host: host\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n Content-Length: 42\r\n |
在發(fā)送完這部分信息之后,客戶端將停等待一段時(shí)間。注意,作為一個(gè)合法的報(bào)文段,它還缺少一個(gè)回車換行來作為結(jié)束符?,F(xiàn)在這個(gè)工具所發(fā)送的偽造的報(bào)文行是:
X-a: b\r\n |
顯然,這一行報(bào)文沒有任何意義,服務(wù)器會(huì)忽略它并繼續(xù)等待。當(dāng)然,如果你想創(chuàng)建一個(gè)入侵檢測(cè)系統(tǒng)(IDS)簽名的話,你也可以自己設(shè)置這一行的內(nèi)容。
發(fā)布該工具的那個(gè)網(wǎng)站說,這個(gè)工具對(duì)Apache 1.x 和 Apache 2.x 版本以及Squid都有效。 而且,考慮到這個(gè)工具根本不需要發(fā)送大量數(shù)據(jù)包就可以耗盡服務(wù)器的連接數(shù),導(dǎo)致一個(gè)帶寬很小的用戶都可能對(duì)一臺(tái)高速服務(wù)器發(fā)起攻擊,這個(gè)工具的潛在威脅真是不容小視。所幸的是微軟IIS6.0 和 IIS7.0的用戶暫時(shí)還不受影響。
目前,我還不知道在Apache的配置有沒有可以防止它攻擊的設(shè)置選項(xiàng),增加MaxClients這一項(xiàng)的值只會(huì)增加攻擊的難度,但無法杜絕服務(wù)器被攻擊。不過我們的一位名叫Tomasz Miklas的讀者表示,他能通過在Apache服務(wù)器前增加一個(gè)反向代理解決這個(gè)問題。
我們會(huì)密切關(guān)注這一點(diǎn),還會(huì)在今后繼續(xù)發(fā)布相關(guān)的信息。我們很期待其它Web服務(wù)器以及負(fù)載均衡器(load balancers)將如何抵御這種攻擊。
【51CTO.COM 獨(dú)家翻譯,轉(zhuǎn)載請(qǐng)注明出處及作者!】