慢速攻擊原理:
http慢速攻擊是利用http合法機(jī)制乃沙,在建立連接后起趾,盡量長(zhǎng)時(shí)間保持連接,不釋放警儒,達(dá)到對(duì)HTTP服務(wù)攻擊,攻擊者發(fā)送POST請(qǐng)求训裆,自行構(gòu)造報(bào)文向服務(wù)器提交數(shù)據(jù),將報(bào)文長(zhǎng)度設(shè)置一個(gè)很大的值蜀铲,且在隨后每次發(fā)送中边琉,每次只發(fā)送一個(gè)很小的報(bào)文,這樣導(dǎo)致服務(wù)器一直等待數(shù)據(jù)记劝,連接始終一直被占用变姨。
如果攻擊者使用多線程或傀儡機(jī)子去做同樣操作,服務(wù)器WEB容器很快就被占滿TCP連接而不再接受新請(qǐng)求隆夯。
slowhttptest是一款對(duì)服務(wù)器進(jìn)行慢攻擊的測(cè)試軟件钳恕,包含了幾種攻擊方式,像Slowloris蹄衷、SlowHTTP POST忧额、Slow Read attack等。
總而言之愧口,該工具的原理就是設(shè)法讓服務(wù)器等待睦番,當(dāng)服務(wù)器在保持連接等待時(shí),就消耗了資源耍属。
1托嚣、 最具代表性的是rsnake發(fā)明的Slowloris,又被稱為slow headers厚骗。
【攻擊原理】
HTTP協(xié)議規(guī)定示启,HTTP Request以\r\n\r\n(0d0a0d0a)結(jié)尾表示客戶端發(fā)送結(jié)束,服務(wù)端開始處理领舰。那么夫嗓,如果永遠(yuǎn)不發(fā)送\r\n\r\n會(huì)如何?Slowloris就是利用這一點(diǎn)來(lái)做DDoS攻擊的冲秽。攻擊者在HTTP請(qǐng)求頭中將Connection設(shè)置為Keep-Alive舍咖,要求Web Server保持TCP連接不要斷開,隨后緩慢地每隔幾分鐘發(fā)送一個(gè)key-value格式的數(shù)據(jù)到服務(wù)端锉桑,如a:b\r\n排霉,導(dǎo)致服務(wù)端認(rèn)為HTTP頭部沒有接收完成而一直等待。如果攻擊者使用多線程或者傀儡機(jī)來(lái)做同樣的操作民轴,服務(wù)器的Web容器很快就被攻擊者占滿了TCP連接而不再接受新的請(qǐng)求攻柠。
2球订、Slowloris的變種--Slow HTTP POST,也稱為Slow body辙诞。
【攻擊原理】
在POST提交方式中辙售,允許在HTTP的頭中聲明content-length,也就是POST內(nèi)容的長(zhǎng)度飞涂。
在提交了頭以后旦部,將后面的body部分卡住不發(fā)送,這時(shí)服務(wù)器在接受了POST長(zhǎng)度以后较店,就會(huì)等待客戶端發(fā)送POST的內(nèi)容士八,攻擊者保持連接并且以10S-100S一個(gè)字節(jié)的速度去發(fā)送,就達(dá)到了消耗資源的效果梁呈,因此不斷地增加這樣的鏈接婚度,就會(huì)使得服務(wù)器的資源被消耗,最后可能宕機(jī)官卡。
3蝗茁、Slow Read attack
【攻擊原理】
采用調(diào)整TCP協(xié)議中的滑動(dòng)窗口大小,來(lái)對(duì)服務(wù)器單次發(fā)送的數(shù)據(jù)大小進(jìn)行控制寻咒,使得服務(wù)器需要對(duì)一個(gè)回應(yīng)分成很多個(gè)包來(lái)發(fā)送哮翘。要使這種攻擊效果更加明顯,請(qǐng)求的資源要盡量大毛秘。
用Wireshark抓包可以看出饭寺,當(dāng)請(qǐng)求a.wmv資源(大小有9M多)時(shí),客戶端windowssize被刻意設(shè)置為1152字節(jié)叫挟〖璩祝客戶端緩沖區(qū)在被來(lái)自服務(wù)器的數(shù)據(jù)填滿后,發(fā)出了[TCP ZeroWindow]告警抹恳,迫使服務(wù)端等待员凝。
受到以上各種慢速攻擊后,服務(wù)器再無(wú)法訪問奋献。
解決辦法:
1.使用NGINX绊序,因?yàn)槠浔旧砭蛯?duì)慢速攻擊有很好防護(hù)。
2.tomcat可通過運(yùn)行模式NIO和connectionTimeout值進(jìn)行緩解秽荞。
3.如果自身沒有處理能力的話,也是可以咨詢騰訊云安全為您排憂解難抚官。