李 爽,高欣雅,黃媛媛,于欣彤
(吉林師范大學(xué) 計(jì)算機(jī)學(xué)院,吉林 四平 136000)
在當(dāng)代網(wǎng)絡(luò)技術(shù)與網(wǎng)絡(luò)應(yīng)用高速發(fā)展的今天,Web重要性不斷提高[1],網(wǎng)絡(luò)安全問(wèn)題與日俱增,分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)以其實(shí)施容易、防范困難和難以追蹤攻擊源的特點(diǎn)備受黑客們的青睞[2],目前市場(chǎng)上專門預(yù)防DDoS攻擊的硬件設(shè)備價(jià)格昂貴,對(duì)于一些中小型網(wǎng)站來(lái)說(shuō),防御瓶頸多成本高,DDOS的猖獗嚴(yán)重影響了互聯(lián)網(wǎng)的應(yīng)用,給網(wǎng)絡(luò)社會(huì)帶來(lái)巨大安全隱患[3].因此,有必要對(duì)防御分布式拒絕服務(wù)攻擊的有效性,實(shí)時(shí)性和準(zhǔn)確性進(jìn)行研究,有效提高Web網(wǎng)站防御DDoS攻擊的能力,本文將結(jié)合DDoS攻擊的原理對(duì)預(yù)防策略給出一個(gè)詳細(xì)的分析.
DDoS(Distributed Denial of Service)分布式拒絕服務(wù)攻擊是在DoS(Denial of Service)拒絕服務(wù)攻擊的基礎(chǔ)上發(fā)展起來(lái)的[4].攻擊的最終目標(biāo)是借助網(wǎng)絡(luò)協(xié)議的缺陷以高頻率的請(qǐng)求速度大量請(qǐng)求服務(wù)器資源,由于網(wǎng)絡(luò)帶寬資源的有限性和服務(wù)器負(fù)載能力的有限性等因素,導(dǎo)致受害者資源被耗盡而停止提供服務(wù),出現(xiàn)網(wǎng)絡(luò)癱瘓或服務(wù)器宕機(jī)現(xiàn)象.DDoS主要針對(duì)網(wǎng)絡(luò)體系結(jié)構(gòu)中的四層利用帶寬對(duì)流量攻擊和和七層針對(duì)服務(wù)架構(gòu)的吞吐量瓶頸進(jìn)行攻擊.一般來(lái)說(shuō),DDoS攻擊將銀行、支付網(wǎng)關(guān)作為攻擊對(duì)象,以實(shí)施勒索的商業(yè)目的.
在DoS攻擊中,攻擊者采用1∶1的方式,即一臺(tái)攻擊者,一臺(tái)受害主機(jī),在以往受害主機(jī)的CUP和內(nèi)存配置不高或者網(wǎng)絡(luò)帶寬不夠的情況下攻擊效果較為明顯,但是隨著計(jì)算機(jī)硬件設(shè)備的升級(jí)、處理能力的提升和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,傳統(tǒng)的一對(duì)一的DoS攻擊手段已經(jīng)無(wú)法達(dá)到預(yù)期的攻擊目的,攻擊者想出使用分布在不同地理位置的多臺(tái)主機(jī)同時(shí)向受害者進(jìn)行攻擊的策略,即分布式拒絕服務(wù)攻擊,簡(jiǎn)稱DDoS攻擊[5].DDoS攻擊是指黑客利用大量傀儡機(jī)向受害者發(fā)起攻擊,其攻擊手段具有匯聚性,攻擊源具有分散性,因此危害程度要遠(yuǎn)遠(yuǎn)大于DoS,DDoS攻擊原理如圖1所示.
圖1 DDoS攻擊原理圖
實(shí)施DDoS攻擊需要執(zhí)行以下步驟來(lái)完成:
步驟1 黑客利用系統(tǒng)或軟件漏洞大范圍掃描存在安全漏洞的主機(jī)或引誘主機(jī)訪問(wèn)使用惡意鏈接來(lái)盜取系統(tǒng)賬號(hào)和管理權(quán)限,并注入DDoS代理程序,同時(shí)黑客會(huì)在系統(tǒng)中安插一個(gè)擁有管理員權(quán)限的并可進(jìn)行交互的命令解釋器Root Shell,可以隨時(shí)接受黑客的指令,我們稱其為守護(hù)進(jìn)程.黑客將代理程序注入到可以隨機(jī)啟動(dòng)的系統(tǒng)級(jí)服務(wù)或者驅(qū)動(dòng)程序中,將被注入DDoS代理程序的主機(jī)叫做傀儡機(jī),為了使木馬程序不輕易被殺毒軟件發(fā)現(xiàn)并清理掉,黑客通常使用加殼等手段使其無(wú)法被準(zhǔn)確識(shí)別到,并定期對(duì)代理程序進(jìn)行更新升級(jí),操縱這些傀儡機(jī)長(zhǎng)期的為其服務(wù),當(dāng)積累了足夠多的傀儡機(jī)后,黑客便具備了發(fā)起DDoS攻擊的條件[6].
步驟2 一旦黑客發(fā)起攻擊,首先通過(guò)控制機(jī)向傀儡主機(jī)發(fā)送指令激活事先被注入的DDoS代理程序[7],發(fā)送指令的操作具有一定的隱秘性,因此傀儡主機(jī)無(wú)法輕易察覺(jué)代理程序的存在.此時(shí)大量的傀儡機(jī)會(huì)同時(shí)向受害主機(jī)發(fā)送請(qǐng)求,攻擊數(shù)據(jù)包猶如洪水般向受害主機(jī)涌來(lái)[8],當(dāng)合法用戶向目標(biāo)主機(jī)發(fā)送請(qǐng)求時(shí),其請(qǐng)求數(shù)據(jù)包被淹沒(méi),合法用戶無(wú)法得到及時(shí)有效的服務(wù)器響應(yīng),此時(shí)黑客發(fā)起的DDoS攻擊成功,攻擊過(guò)程如圖2所示.
主機(jī)WebService作為被攻擊的網(wǎng)站服務(wù)器,在連接互聯(lián)網(wǎng)下安裝配置Web服務(wù)過(guò)程如下:
[root@ WebService ~]# yum install httpd
//安裝web服務(wù)
[root@ WebService ~]# cp /etc/passwd /var/www/html/index.html
//生成網(wǎng)站默認(rèn)主頁(yè)
[root@ WebService ~]# service httpd restart
//啟動(dòng)服務(wù)器Web服務(wù)
Web服務(wù)安裝成功后啟動(dòng)瀏覽器訪問(wèn)網(wǎng)站默認(rèn)主頁(yè),Web服務(wù)器成功配置完成界面如圖3所示.
圖2 DDoS攻擊過(guò)程
圖3 Web服務(wù)器默認(rèn)主頁(yè)面
DDoS deflate是一款面向用戶完全免費(fèi)使用的、可以有效防御DDoS攻擊的工具軟件,其運(yùn)行在開(kāi)源的Linux操作系統(tǒng)下[9],通過(guò)其Shell腳本中的netstat 命令進(jìn)行IP監(jiān)測(cè)跟蹤,獲得到在一定時(shí)間內(nèi)向服務(wù)器發(fā)出請(qǐng)求的所有主機(jī)的IP地址和請(qǐng)求連接數(shù),一旦發(fā)現(xiàn)某個(gè)IP地址的主機(jī)請(qǐng)求的連接數(shù)超過(guò)軟件所限定閾值,則通過(guò)IPTABLES或者APF工具屏蔽攻擊IP[10].
1)root權(quán)限下下載安裝DDoS Deflate如圖4所示.
圖4 下載安裝DDoS Deflate
2)DDOS-Deflate安裝完成之后,產(chǎn)生的四個(gè)腳本文件ddos.sh、ddos.conf、ignore.ip.list和LICENSE均位于/usr/local/ddos中,具體說(shuō)明如下:
①ddos.sh:整個(gè)程序的功能模塊,是使用shell編寫的,其中的netstat命令可以監(jiān)控訪問(wèn)Web服務(wù)器的所有IP地址和訪問(wèn)次數(shù).
②ignore.ip.list:白名單,該文件列表中的IP地址即使訪問(wèn)次數(shù)超過(guò)了設(shè)定的閾值也不會(huì)被屏蔽.
③LICENSE:發(fā)布DDoS Deflate 程序的相關(guān)版權(quán)協(xié)議文件
④ddos.conf:DDoS Deflate的配置文件,也是最重要的文件.使用vi編輯器打開(kāi)配置文件ddos.conf,部分配置參數(shù)和解釋如下:
[root@WebService /]# vi /usr/local/ddos/ddos.conf
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"
CRON="/etc/cron.d/ddos.cron"
APF="/etc/apf/apf"
IPT="/sbin/iptables"
……
FREQ=1
#FREQ表示設(shè)置ddos.sh文件的執(zhí)行頻率,即檢測(cè)時(shí)間間隔,默認(rèn)為1min
NO_OF_CONNECTIONS=150
# NO_OF_CONNECTIONS表示最大限制連接數(shù),當(dāng)一定時(shí)間內(nèi)持續(xù)向服務(wù)器發(fā)出申請(qǐng)超過(guò)150,則該IP會(huì)被屏蔽,在之后的一段時(shí)間內(nèi)服務(wù)器不給予響應(yīng)申請(qǐng),NO_OF_CONNECTIONS的值可視服務(wù)器的性能而定,如果服務(wù)器性能較好,為避免誤殺可將其值略微調(diào)高[11].
APF_BAN=0
# APF_BAN表示屏蔽手段,其值可以為0或1.設(shè)置為1表示使用APF堵塞IP,但必須首先安裝AFP;設(shè)置為0表示使用iptables,
KILL=1
#將非法IP加入黑名單,禁止該IP地址再次訪問(wèn).
EMAIL_TO=“root”
#一旦監(jiān)測(cè)到某個(gè)IP地址被屏蔽掉,會(huì)向指定郵箱發(fā)送電子郵件,設(shè)為空表示不發(fā)郵件.
BAN_PERIOD=600
#解鎖時(shí)長(zhǎng),默認(rèn)設(shè)置為600秒
⑤安裝完成后在/etc/cron.d/下生產(chǎn)了ddos.cron,內(nèi)容為:
SHELL=/bin/sh
0-59/1 * * * * root /usr/local/ddos/ddos.sh >/dev/null 2>&1
該文件的任務(wù)是每隔一分鐘時(shí)間執(zhí)行一次/usr/local/ddos/ddos.sh文件(其中ddos.sh文件的執(zhí)行頻率由ddos.conf中的FREQ=1變量決定).
webbench是一款適合中小型網(wǎng)站的壓力測(cè)試工具,其需要安裝運(yùn)行在Linux下[12],使用C語(yǔ)言編寫,具有性能部署簡(jiǎn)單的特點(diǎn),而且支持測(cè)試靜態(tài)頁(yè)面、動(dòng)態(tài)頁(yè)面,對(duì)于含有SSL的安全網(wǎng)站也可以進(jìn)行壓力測(cè)試[13].
主機(jī)attacker作為攻擊方,下載安裝webbench軟件,安裝過(guò)程如下,
[root@attacker /]# wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.t
[root@ attacker /]# tar zxvf webbench-1.5.tar.gz
[root@ attacker /]# cd webbench-1.5
[root@ attacker webbench-1.5]# make && make install
500個(gè)客戶端在30 s內(nèi)不間斷同時(shí)并發(fā)向服務(wù)器發(fā)出請(qǐng)求,如圖5所示.
圖5 壓力測(cè)試結(jié)果
每秒鐘響應(yīng)請(qǐng)求速度為329 166 pages/min,服務(wù)器每秒鐘傳輸數(shù)據(jù)量9 292 829 bytes/s.當(dāng)請(qǐng)求并發(fā)數(shù)為164 583時(shí),有0個(gè)連接失敗,說(shuō)明此時(shí)未超過(guò)負(fù)荷.
主機(jī)attacker向主機(jī)WebService進(jìn)行DDOS攻擊時(shí),模擬500臺(tái)攻擊傀儡機(jī)同時(shí)并發(fā)請(qǐng)求WebService,持續(xù)30 s,命令如下.
[root@attacker /]# webbench -c 500 -t 30 http://192.168.37.131/index.html
[root@ WebService ~]# iptables -L -n
此時(shí)立即查看防火墻規(guī)則,列表為空,如圖6所示.
圖6 立即查看防火墻規(guī)則界面
等待1 min后,再次查看防火墻規(guī)則,顯示結(jié)果如圖7所示.此時(shí)attacker主機(jī)再次向WebService發(fā)出請(qǐng)求連接,顯示連接失敗,如圖8所示[14].
DDoS deflate默認(rèn)是一分鐘執(zhí)行一次,所以當(dāng)黑客向客戶機(jī)發(fā)出的連接次數(shù)超過(guò)150時(shí),黑客不會(huì)立刻被禁止訪問(wèn),時(shí)間超過(guò)1 min后,出現(xiàn)連接斷掉的情況,此時(shí)查看受害客戶機(jī)防火墻規(guī)則,列表中多了一項(xiàng)DROP all - 192.168.37.133,說(shuō)明使用DDoS deflate可以預(yù)防DoS攻擊,10 min之后,防火墻規(guī)則刷新列表,該表項(xiàng)被取消.
圖7 WebService受到攻擊后防火墻規(guī)則列表
圖8 attacker再次訪問(wèn)WebService結(jié)果
DDoS作為分布式攻擊手段具有防御瓶頸多、成本高的特點(diǎn),因此對(duì)DDoS的防御是一項(xiàng)系統(tǒng)工程,在Linus環(huán)境下,使用DDoS deflate來(lái)防止DDoS攻擊,大大降低了Web服務(wù)器受到DDoS攻擊的風(fēng)險(xiǎn),在一定程度上提高了網(wǎng)站的安全性[15].本文提出的防護(hù)方案,具有較強(qiáng)的實(shí)用價(jià)值,也為其他防護(hù)工作提供了范例.