趙 鵬,馬 斌,李一鵬
(河北省電力公司,石家莊 050021)
拒絕服務(wù)(DoS)攻擊是目前網(wǎng)絡(luò)攻擊中最常用也是最難以防御的攻擊之一,由于網(wǎng)絡(luò)中存在很多容易被控制的主機(jī),使得分布式拒絕服務(wù)(DDoS)攻擊的危害越來(lái)越大。DDoS攻擊已成為當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò)安全中最難解決的問(wèn)題[1-2],目前對(duì)DDoS攻擊的檢測(cè),從不同角度和檢測(cè)手段來(lái)看,存在著多種檢測(cè)方法。
拒絕服務(wù)攻擊是利用TCP/IP協(xié)議的漏洞、操作系統(tǒng)安全漏洞以及各種應(yīng)用系統(tǒng)的漏洞,對(duì)網(wǎng)絡(luò)設(shè)備和應(yīng)用系統(tǒng)進(jìn)行攻擊的行為。它以消耗網(wǎng)絡(luò)帶寬和系統(tǒng)資源為目的,對(duì)網(wǎng)絡(luò)服務(wù)器發(fā)送大量“垃圾請(qǐng)求”,造成網(wǎng)絡(luò)或服務(wù)器不堪重負(fù),導(dǎo)致系統(tǒng)癱瘓而無(wú)法提供正常的網(wǎng)絡(luò)服務(wù)。而分布式拒絕服務(wù)是在拒絕服務(wù)攻擊的基礎(chǔ)上產(chǎn)生的一種分布式、協(xié)作式的大規(guī)模拒絕服務(wù)攻擊方式,它主要利用網(wǎng)絡(luò)中大量主機(jī)來(lái)對(duì)目標(biāo)主機(jī)實(shí)施拒絕服務(wù)攻擊,具有攻擊時(shí)間短、危害性大且難于防范的特點(diǎn)[3]。
熵是描述變量隨機(jī)性的量綱[1]。對(duì)于離散隨機(jī)變量,設(shè)取第i個(gè)分量的概率為pi,熵[5]定義為:
熵越大,說(shuō)明隨機(jī)性越強(qiáng),包含的信息量越大。在實(shí)際應(yīng)用中,信息熵的計(jì)算是非常復(fù)雜的。具體說(shuō)來(lái),凡是導(dǎo)致隨機(jī)事件集合的肯定性、組織性、法則性或有序性等增加或減少的活動(dòng)過(guò)程,都可以用信息熵的改變量作為統(tǒng)一的標(biāo)尺來(lái)度量。一個(gè)系統(tǒng)越是有序,信息熵就越低,反之,一個(gè)系統(tǒng)越是混亂,信息熵就越高。所以,信息熵也可以說(shuō)是系統(tǒng)有序化程度的一個(gè)度量。
通過(guò)對(duì)攻擊原理的分析得知,網(wǎng)絡(luò)中的計(jì)算機(jī)在正常運(yùn)行時(shí)ICMP、UDP、TCP的連接數(shù)一般是比較固定的,而當(dāng)計(jì)算機(jī)遭受SYNFlood、UDPFlood、ICMPFlood三種形式的攻擊時(shí),對(duì)應(yīng)的連接協(xié)議的連接數(shù)會(huì)持續(xù)增高。在設(shè)計(jì)過(guò)程中,根據(jù)計(jì)算機(jī)所處網(wǎng)絡(luò)環(huán)境,預(yù)先設(shè)定正常情況下計(jì)算機(jī)中SYN/TCP的比率(一般在50%左右)、UDP每秒連接數(shù)、ICMP每秒連接數(shù)三組數(shù)據(jù),當(dāng)檢測(cè)過(guò)程中有一組數(shù)據(jù)超過(guò)預(yù)先設(shè)定的閾值時(shí)就記錄1次預(yù)警,當(dāng)連續(xù)3秒出現(xiàn)預(yù)警時(shí)就正式報(bào)警,系統(tǒng)對(duì)收到的數(shù)據(jù)包開(kāi)始進(jìn)行記錄直到取消預(yù)警,以便后續(xù)的分析和處理。系統(tǒng)規(guī)定連續(xù)3秒才正式報(bào)警是為了避免由于正常情況下大量并發(fā)連接所帶來(lái)的連接數(shù)突增的誤報(bào),因?yàn)檎G闆r下大量并發(fā)連接會(huì)是一個(gè)時(shí)刻的連接數(shù)突增,但一般不會(huì)是持續(xù)的增加。以UDP攻擊為例,程序流程如圖1所示。
圖1 程序流程圖
利用信息熵的知識(shí),結(jié)合DDoS攻擊的特點(diǎn),對(duì)預(yù)警日志中的源IP地址進(jìn)行統(tǒng)計(jì)。正常情況下,源IP地址服從穩(wěn)定的統(tǒng)計(jì)分布。由于攻擊數(shù)據(jù)包源IP地址通常是偽造的,一般是在攻擊源處隨機(jī)生成的,此時(shí)對(duì)進(jìn)入該路由器的數(shù)據(jù)包的源地址進(jìn)行統(tǒng)計(jì),得到的熵值將發(fā)生變化。攻擊強(qiáng)度越大,變化越明顯。攻擊中,由于攻擊數(shù)據(jù)包的源IP地址是隨機(jī)產(chǎn)生的,會(huì)造成其熵值大于正常值;相反如果攻擊數(shù)據(jù)包不偽造IP地址,使用其真實(shí)地址,或偽造的地址不是隨機(jī)產(chǎn)生,而是使用固定的地址,那么計(jì)算出來(lái)的熵值要小于正常值。我們知道,當(dāng)分布式拒絕服務(wù)攻擊出現(xiàn)時(shí),網(wǎng)絡(luò)中將產(chǎn)生大數(shù)據(jù)、大流量,或者大量的不完全請(qǐng)求。而攻擊者利用DDoS攻擊網(wǎng)絡(luò)時(shí),通常會(huì)偽造大量的數(shù)據(jù),這些數(shù)據(jù)包的IP地址通常都是不一樣的,具有很強(qiáng)的隨機(jī)性。
根據(jù)IP數(shù)據(jù)報(bào)結(jié)構(gòu)(如圖2所示),在程序中定義IP報(bào)文頭結(jié)構(gòu),IP數(shù)據(jù)包中的第10字節(jié)的值可以判斷出收到的數(shù)據(jù)包的協(xié)議類型,所以在程序中判斷ip_protocol的值即可。若值為6,表示協(xié)議類型為TCP;若值為17,表示協(xié)議類型為UDP;若值為1,表示協(xié)議類型為ICMP。
圖2 IP數(shù)據(jù)報(bào)結(jié)構(gòu)
如果是TCP報(bào)文,根據(jù)TCP報(bào)頭格式(如圖3所示)分析代表SYN位的值是否為1,即是否為SYN請(qǐng)求。在程序中,通過(guò)獲取TCP報(bào)文中的第13字節(jié)和2(二進(jìn)制為00000010)進(jìn)行與運(yùn)算,不為0即為SYN請(qǐng)求。
圖3 TCP報(bào)文頭結(jié)構(gòu)
當(dāng)收包數(shù)持續(xù)(3秒以上)大于規(guī)定的閾值時(shí),數(shù)據(jù)存儲(chǔ)模塊對(duì)收到的數(shù)據(jù)包進(jìn)行解析,將數(shù)據(jù)包中的源IP、目的IP、報(bào)文長(zhǎng)度、收包時(shí)間等信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,以便下一步進(jìn)行數(shù)據(jù)分析。
將數(shù)據(jù)庫(kù)中記錄的源IP地址數(shù)量進(jìn)行分類統(tǒng)計(jì),按照數(shù)量從高到低排序,數(shù)量多的幾個(gè)IP可能為攻擊IP。同時(shí)計(jì)算出每個(gè)IP源發(fā)包的比例pt,最后求出IP源的信息熵通過(guò)信息熵的算法評(píng)估,如果Ep很大,說(shuō)明被攻擊源IP隨機(jī)性很大,可能是隨機(jī)偽造IP源的攻擊;如果很小,說(shuō)明隨機(jī)性很小,可能為單一攻擊源。
DDoS攻擊檢測(cè)系統(tǒng)運(yùn)行程序如圖4所示。運(yùn)行前設(shè)定好SYN與TCP的比率、ICMP收包速率、UDP收包速率的閾值。因?yàn)閷?shí)驗(yàn)要演示被攻擊狀態(tài),所以將這幾個(gè)閾值設(shè)定的很低,分別為7、10、10,圖中的方框示例越接近灰色表示越安全,越接近黑色表示越將達(dá)到閾值。
圖4 當(dāng)連續(xù)預(yù)警次數(shù)大于3時(shí),系統(tǒng)報(bào)警并存儲(chǔ)攻擊日志Ep=4.35
當(dāng)連續(xù)預(yù)警次數(shù)小于3的時(shí)候,系統(tǒng)不會(huì)報(bào)警;當(dāng)大于等于3的時(shí)候,系統(tǒng)數(shù)據(jù)存儲(chǔ)模塊對(duì)收到的數(shù)據(jù)包源IP、目的IP、數(shù)據(jù)包長(zhǎng)度、收到時(shí)間等信息進(jìn)行分析存儲(chǔ)并報(bào)警,同時(shí)計(jì)算數(shù)據(jù)中的源IP的熵Ep=4.35(如圖4所示),說(shuō)明攻擊的IP隨機(jī)性很強(qiáng),疑似偽造源IP進(jìn)行的攻擊。
利用發(fā)送UDP數(shù)據(jù)包的程序(如圖5所示)進(jìn)行攻擊演示(如圖6所示),可以發(fā)現(xiàn)此時(shí)Ep=0.16,與之前的Ep=4.35比較,顯然非常小,說(shuō)明攻擊隨機(jī)性不強(qiáng)。通過(guò)日志中統(tǒng)計(jì)數(shù)據(jù)可知發(fā)包數(shù)據(jù)最多的IP是10.1.40.190,正是運(yùn)行UDP數(shù)據(jù)包程序所在計(jì)算機(jī)的IP,如果是真正的一次攻擊,那么服務(wù)器的管理員就可以采取下一步操作,如設(shè)置網(wǎng)絡(luò)選項(xiàng)將此IP的所有請(qǐng)求過(guò)濾掉。
圖5 進(jìn)行UDP攻擊
圖6 利用UDP單一IP源進(jìn)行攻擊Ep=0.16
利用發(fā)送ICMP數(shù)據(jù)包的程序進(jìn)行攻擊演示(如圖7所示),可以發(fā)現(xiàn)此時(shí)Ep=0.00,顯然非常小,說(shuō)明隨機(jī)性不強(qiáng),通過(guò)日志中統(tǒng)計(jì)數(shù)據(jù)可知,發(fā)包數(shù)據(jù)只有一個(gè)IP(10.1.40.190),該IP正是運(yùn)行ICMP數(shù)據(jù)包程序所在計(jì)算機(jī)的IP。
圖7 利用ICMP單一IP源進(jìn)行攻擊Ep=0.00
系統(tǒng)能夠成功的檢測(cè)出SYNFlood、UDPFlood、ICMPFlood三種形式的攻擊,同時(shí)將報(bào)警信息記錄在數(shù)據(jù)庫(kù)中以便管理員進(jìn)行分析和對(duì)攻擊源IP的治理(如過(guò)濾掉攻擊源IP的請(qǐng)求)。通過(guò)對(duì)日志中源IP數(shù)據(jù)包的熵計(jì)算有助于辨別是單一IP源的攻擊還是隨機(jī)偽造IP源進(jìn)行的攻擊。
根據(jù)實(shí)際情況可從以下兩方面進(jìn)一步研發(fā)系統(tǒng)。(1)可以在被檢測(cè)的服務(wù)器上裝一個(gè)短信貓,產(chǎn)生報(bào)警后第一時(shí)間給服務(wù)器的管理員發(fā)短信,既便于及時(shí)有效地發(fā)現(xiàn)問(wèn)題,又解除了服務(wù)器管理員整天堅(jiān)守服務(wù)器的煩惱;(2)當(dāng)產(chǎn)生報(bào)警信息后,將報(bào)警后所有收到的數(shù)據(jù)包信息記錄在數(shù)據(jù)庫(kù)中,后期可以引入神經(jīng)網(wǎng)絡(luò)算法對(duì)數(shù)據(jù)進(jìn)行處理,將攻擊等級(jí)進(jìn)行分級(jí)和評(píng)估等。
[1]薛靜鋒,曹元大.基于貝葉斯分類的分組入侵檢測(cè)技術(shù)研究[J].計(jì)算機(jī)科學(xué),2005,32(8):60-63.
[2]AljifriH.IPTraceback:ANew Denial-of-service Deterrent[J].Security&Privacy Magazine,2003(2):24-31.
[3]嚴(yán)芬,高玉龍,殷新春.DDoS 攻擊檢測(cè)進(jìn)展研究[J].蘇州大學(xué)學(xué)報(bào),2011,27(3):36-38.
[4]張潔,秦拯.改進(jìn)的基于熵的DDoS攻擊檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用,2010,30(7):1779-1781.
[5]Keunsoo Lee,Juhyun Kim,Ki Hoon Kwon,Younggoo Han,Sehun Kim.DDoS attack detection method using cluster analysis[J].Expert Systems with Applications,2008,34(3):1659-1665.