一說起慢速攻擊,就要談談它的成名歷史了。HTTP Post慢速DoS攻擊第一次在技術社區(qū)被正式披露是2012年的OWASP大會上,由Wong Onn Chee 和 Tom Brennan共同演示了使用這一技術攻擊的威力。
這個攻擊的基本原理如下:對任何一個開放了HTTP訪問的服務器HTTP服務器,先建立了一個連接,指定一個比較大的content-length,然后以非常低的速度發(fā)包,比如1-10s發(fā)一個字節(jié),然后維持住這個連接不斷開。如果客戶端持續(xù)建立這樣的連接,那么服務器上可用的連接將一點一點被占滿,從而導致拒絕服務。
和CC攻擊一樣,只要Web服務器開放了Web服務,那么它就可以是一個靶子,HTTP協(xié)議在接收到request之前是不對請求內(nèi)容作校驗的,所以即使你的Web應用沒有可用的form表單,這個攻擊一樣有效。
在客戶端以單線程方式建立較大數(shù)量的無用連接,并保持持續(xù)發(fā)包的代價非常的低廉。實際試驗中一臺普通PC可以建立的連接在3000個以上。這對一臺普通的Web server,將是致命的打擊。更不用說結(jié)合肉雞群做分布式DoS了。
鑒于此攻擊簡單的利用程度、拒絕服務的后果、帶有逃逸特性的攻擊方式,這類攻擊一炮而紅,成為眾多攻擊者的研究和利用對象。
2)慢速攻擊的分類Apache服務器現(xiàn)在使用較多的有三種簡單防護方式。
mod_reqtimeout:Apache2.2.15后,該模塊已經(jīng)被默認包含,用戶可配置從一個客戶端接收HTTP頭部和HTTPbody的超時時間和最小速率。如果一個客戶端不能在配置時間內(nèi)發(fā)送完頭部或body數(shù)據(jù),服務器會返回一個408REQUEST TIME OUT錯誤。配置文件如下:
< IfModule mod_reqtimeout.c >RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
< /IfModule >
mod_qos:Apache的一個服務質(zhì)量控制模塊,用戶可配置各種不同粒度的HTTP請求閾值,配置文件如下:
< IfModule mod_qos.c >
/# handle connections from up to 100000 different IPsQS_ClientEntries 100000
/# allow only 50 connections per IPQS_SrvMaxConnPerIP 50
/# limit maximum number of active TCP connections limited to 256MaxClients 256
/# disables keep-alive when 180 (70%) TCP connections are occupiedQS_SrvMaxConnClose 180
/# minimum request/response speed (deny slow clients blocking the server, keeping connections open without requesting anythingQS_SrvMinDataRate 1501200
< /IfModule >
mod_security:一個開源的WAF模塊,有專門針對慢速攻擊防護的規(guī)則,配置如下:
SecRule RESPONSE_STATUS “@streq 408” “phase:5,t:none,nolog,pass, setvar:ip.slow_dos_counter=+1, expirevar:ip.slow_dos_counter=60, id:’1234123456′”
SecRule IP:SLOW_DOS_COUNTER “@gt 5” “phase:1,t:none,log,drop,
msg:’Client Connection Dropped due to high number of slow DoS alerts’, id:’1234123457′”
傳統(tǒng)的流量清洗設備針對CC攻擊,主要通過閾值的方式來進行防護,某一個客戶在一定的周期內(nèi),請求訪問量過大,超過了閾值,清洗設備通過返回驗證碼或者JS代碼的方式。這種防護方式的依據(jù)是,攻擊者們使用肉雞上的DDoS工具模擬大量http request,這種工具一般不會解析服務端返回數(shù)據(jù),更不會解析JS之類的代碼。因此當清洗設備截獲到HTTP請求時,返回一段特殊java script代碼,正常用戶的瀏覽器會處理并正常跳轉(zhuǎn)不影響使用,而攻擊程序會攻擊到空處。
而對于慢速攻擊來說,通過返回驗證碼或者JS代碼的方式依然能達到部分效果。但是根據(jù)慢速攻擊的特征,可以輔助以下幾種防護方式:
1、周期內(nèi)統(tǒng)計報文數(shù)量。一個TCP連接,HTTP請求的報文中,報文過多或者報文過少都是有問題的,如果一個周期內(nèi)報文數(shù)量非常少,那么它就可能是慢速攻擊;如果一個周期內(nèi)報文數(shù)量非常多,那么它就可能是一個CC攻擊。
2、限制HTTP請求頭的最大許可時間。超過最大許可時間,如果數(shù)據(jù)還沒有傳輸完成,那么它就有可能是一個慢速攻擊。