DDoS的攻擊原理與防御方法

2010-08-28 10:49:18來(lái)源:西部e網(wǎng)作者:

      DoS攻擊、DDoS攻擊和DRDoS攻擊相信大家已經(jīng)早有耳聞了吧!DoS是Denial of Service的簡(jiǎn)寫(xiě)就是拒絕服務(wù),而DDoS就是Distributed Denial of Service的簡(jiǎn)寫(xiě)就是分布式拒絕服務(wù),而DRDoS就是Distributed Reflection Denial of Service的簡(jiǎn)寫(xiě),這是分布反射式拒絕服務(wù)的意思。

  不過(guò)這3中攻擊方法最厲害的還是DDoS,那個(gè)DRDoS攻擊雖然是新近出的一種攻擊方法,但它只是DDoS攻擊的變形,它的唯一不同就是不用占領(lǐng)大量的“肉雞”。這三種方法都是利用TCP三次握手的漏洞進(jìn)行攻擊的,所以對(duì)它們的防御辦法都是差不多的。

  DoS攻擊是最早出現(xiàn)的,它的攻擊方法說(shuō)白了就是單挑,是比誰(shuí)的機(jī)器性能好、速度快。但是現(xiàn)在的科技飛速發(fā)展,一般的網(wǎng)站主機(jī)都有十幾臺(tái)主機(jī),而且各個(gè)主機(jī)的處理能力、內(nèi)存大小和網(wǎng)絡(luò)速度都有飛速的發(fā)展,有的網(wǎng)絡(luò)帶寬甚至超過(guò)了千兆級(jí)別。這樣我們的一對(duì)一單挑式攻擊就沒(méi)有什么作用了,搞不好自己的機(jī)子就會(huì)死掉。舉個(gè)這樣的攻擊例子,假如你的機(jī)器每秒能夠發(fā)送10個(gè)攻擊用的數(shù)據(jù)包,而被你攻擊的機(jī)器(性能、網(wǎng)絡(luò)帶寬都是頂尖的)每秒能夠接受并處理100攻擊數(shù)據(jù)包,那樣的話,你的攻擊就什么用處都沒(méi)有了,而且非常有死機(jī)的可能。要知道,你若是發(fā)送這種1Vs1的攻擊,你的機(jī)器的CPU占用率是90%以上的,你的機(jī)器要是配置不夠高的話,那你就死定了。

點(diǎn)擊放大此圖片

圖-01

  不過(guò),科技在發(fā)展,黑客的技術(shù)也在發(fā)展。正所謂道高一尺,魔高一仗。經(jīng)過(guò)無(wú)數(shù)次當(dāng)機(jī),黑客們終于又找到一種新的DoS攻擊方法,這就是DDoS攻擊。它的原理說(shuō)白了就是群毆,用好多的機(jī)器對(duì)目標(biāo)機(jī)器一起發(fā)動(dòng)DoS攻擊,但這不是很多黑客一起參與的,這種攻擊只是由一名黑客來(lái)操作的。這名黑客不是擁有很多機(jī)器,他是通過(guò)他的機(jī)器在網(wǎng)絡(luò)上占領(lǐng)很多的“肉雞”,并且控制這些“肉雞”來(lái)發(fā)動(dòng)DDoS攻擊,要不然怎么叫做分布式呢。還是剛才的那個(gè)例子,你的機(jī)器每秒能發(fā)送10攻擊數(shù)據(jù)包,而被攻擊的機(jī)器每秒能夠接受100的數(shù)據(jù)包,這樣你的攻擊肯定不會(huì)起作用,而你再用10臺(tái)或更多的機(jī)器來(lái)對(duì)被攻擊目標(biāo)的機(jī)器進(jìn)行攻擊的話,嘿嘿!結(jié)果我就不說(shuō)了。

點(diǎn)擊放大此圖片

圖-02

      DRDoS分布反射式拒絕服務(wù)攻擊這是DDoS攻擊的變形,它與DDoS的不同之處就是DrDoS不需要在攻擊之前占領(lǐng)大量的“肉雞”。它的攻擊原理和Smurf攻擊原理相近,不過(guò)DRDoS是可以在廣域網(wǎng)上進(jìn)行的,而Smurf攻擊是在局域網(wǎng)進(jìn)行的。它的作用原理是基于廣播地址與回應(yīng)請(qǐng)求的。一臺(tái)計(jì)算機(jī)向另一臺(tái)計(jì)算機(jī)發(fā)送一些特殊的數(shù)據(jù)包如ping請(qǐng)求時(shí),會(huì)接到它的回應(yīng);如果向本網(wǎng)絡(luò)的廣播地址發(fā)送請(qǐng)求包,實(shí)際上會(huì)到達(dá)網(wǎng)絡(luò)上所有的計(jì)算機(jī),這時(shí)就會(huì)得到所有計(jì)算機(jī)的回應(yīng)。這些回應(yīng)是需要被接收的計(jì)算機(jī)處理的,每處理一個(gè)就要占用一份系統(tǒng)資源,如果同時(shí)接到網(wǎng)絡(luò)上所有計(jì)算機(jī)的回應(yīng),接收方的系統(tǒng)是有可能吃不消的,就象遭到了DDoS攻擊一樣。不過(guò)是沒(méi)有人笨到自己攻擊自己,不過(guò)這種方法被黑客加以改進(jìn)就具有很大的威力了。黑客向廣播地址發(fā)送請(qǐng)求包,所有的計(jì)算機(jī)得到請(qǐng)求后,卻不會(huì)把回應(yīng)發(fā)到黑客那里,而是發(fā)到被攻擊主機(jī)。這是因?yàn)楹诳兔俺淞吮还糁鳈C(jī)。黑客發(fā)送請(qǐng)求包所用的軟件是可以偽造源地址的,接到偽造數(shù)據(jù)包的主機(jī)會(huì)根據(jù)源地址把回應(yīng)發(fā)出去,這當(dāng)然就是被攻擊主機(jī)的地址。黑客同時(shí)還會(huì)把發(fā)送請(qǐng)求包的時(shí)間間隔減小,這樣在短時(shí)間能發(fā)出大量的請(qǐng)求包,使被攻擊主機(jī)接到從被欺騙計(jì)算機(jī)那里傳來(lái)的洪水般的回應(yīng),就像遭到了DDoS攻擊導(dǎo)致系統(tǒng)崩潰。駭客借助了網(wǎng)絡(luò)中所有計(jì)算機(jī)來(lái)攻擊受害者,而不需要事先去占領(lǐng)這些被欺騙的主機(jī),這就是Smurf攻擊。而DRDoS攻擊正是這個(gè)原理,黑客同樣利用特殊的發(fā)包工具,首先把偽造了源地址的SYN連接請(qǐng)求包發(fā)送到那些被欺騙的計(jì)算機(jī)上,根據(jù)TCP三次握手的規(guī)則,這些計(jì)算機(jī)會(huì)向源IP發(fā)出SYN+ACK或RST包來(lái)響應(yīng)這個(gè)請(qǐng)求。同Smurf攻擊一樣,黑客所發(fā)送的請(qǐng)求包的源IP地址是被攻擊主機(jī)的地址,這樣受欺騙的主機(jī)就都會(huì)把回應(yīng)發(fā)到被攻擊主機(jī)處,造成被攻擊主機(jī)忙于處理這些回應(yīng)而癱瘓。

點(diǎn)擊放大此圖片

圖-03

  解釋:

  SYN:(Synchronize sequence numbers)用來(lái)建立連接,在連接請(qǐng)求中,SYN=1,ACK=0,連接響應(yīng)時(shí),SYN=1,ACK=1。即,SYN和ACK來(lái)區(qū)分Connection Request和Connection Accepted。

  RST:(Reset the connection)用于復(fù)位因某種原因引起出現(xiàn)的錯(cuò)誤連接,也用來(lái)拒絕非法數(shù)據(jù)和請(qǐng)求。如果接收到RST位時(shí)候,通常發(fā)生了某些錯(cuò)誤。

  ACK:(Acknowledgment field significant)置1時(shí)表示確認(rèn)號(hào)(Acknowledgment Number)為合法,為0的時(shí)候表示數(shù)據(jù)段不包含確認(rèn)信息,確認(rèn)號(hào)被忽略。

  TCP三次握手:

點(diǎn)擊放大此圖片

圖-04

  假設(shè)我們要準(zhǔn)備建立連接,服務(wù)器正處于正常的接聽(tīng)狀態(tài)。

  第一步:我們也就是客戶端發(fā)送一個(gè)帶SYN位的請(qǐng)求,向服務(wù)器表示需要連接,假設(shè)請(qǐng)求包的序列號(hào)為10,那么則為:SYN=10,ACK=0,然后等待服務(wù)器的回應(yīng)。

  第二步:服務(wù)器接收到這樣的請(qǐng)求包后,查看是否在接聽(tīng)的是指定的端口,如果不是就發(fā)送RST=1回應(yīng),拒絕建立連接。如果接收請(qǐng)求包,那么服務(wù)器發(fā)送確認(rèn)回應(yīng),SYN為服務(wù)器的一個(gè)內(nèi)碼,假設(shè)為100,ACK位則是客戶端的請(qǐng)求序號(hào)加1,本例中發(fā)送的數(shù)據(jù)是:SYN=100,ACK=11,用這樣的數(shù)據(jù)回應(yīng)給我們。向我們表示,服務(wù)器連接已經(jīng)準(zhǔn)備好了,等待我們的確認(rèn)。這時(shí)我們接收到回應(yīng)后,分析得到的信息,準(zhǔn)備發(fā)送確認(rèn)連接信號(hào)到服務(wù)器。

  第三步:我們發(fā)送確認(rèn)建立連接的信息給服務(wù)器。確認(rèn)信息的SYN位是服務(wù)器發(fā)送的ACK位,ACK位是服務(wù)器發(fā)送的SYN位加1。即:SYN=11,ACK=101。

  這樣我們的連接就建立起來(lái)了。

  DDoS究竟如何攻擊?目前最流行也是最好用的攻擊方法就是使用SYN-Flood進(jìn)行攻擊,SYN-Flood也就是SYN洪水攻擊。SYN-Flood不會(huì)完成TCP三次握手的第三步,也就是不發(fā)送確認(rèn)連接的信息給服務(wù)器。這樣,服務(wù)器無(wú)法完成第三次握手,但服務(wù)器不會(huì)立即放棄,服務(wù)器會(huì)不停的重試并等待一定的時(shí)間后放棄這個(gè)未完成的連接,這段時(shí)間叫做SYN timeout,這段時(shí)間大約30秒-2分鐘左右。若是一個(gè)用戶在連接時(shí)出現(xiàn)問(wèn)題導(dǎo)致服務(wù)器的一個(gè)線程等待1分鐘并不是什么大不了的問(wèn)題,但是若有人用特殊的軟件大量模擬這種情況,那后果就可想而知了。一個(gè)服務(wù)器若是處理這些大量的半連接信息而消耗大量的系統(tǒng)資源和網(wǎng)絡(luò)帶寬,這樣服務(wù)器就不會(huì)再有空余去處理普通用戶的正常請(qǐng)求(因?yàn)榭蛻舻恼U?qǐng)求比率很小)。這樣這個(gè)服務(wù)器就無(wú)法工作了,這種攻擊就叫做:SYN-Flood攻擊。

  到目前為止,進(jìn)行DDoS攻擊的防御還是比較困難的。首先,這種攻擊的特點(diǎn)是它利用了TCP/IP協(xié)議的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻擊。不過(guò)這不等于我們就沒(méi)有辦法阻擋DDoS攻擊,我們可以盡力來(lái)減少DDoS的攻擊。下面就是一些防御方法:

  1、確保服務(wù)器的系統(tǒng)文件是最新的版本,并及時(shí)更新系統(tǒng)補(bǔ)丁。

  2、關(guān)閉不必要的服務(wù)。

  3、限制同時(shí)打開(kāi)的SYN半連接數(shù)目。

  4、縮短SYN半連接的time out 時(shí)間。

  5、正確設(shè)置防火墻

  禁止對(duì)主機(jī)的非開(kāi)放服務(wù)的訪問(wèn)

  限制特定IP地址的訪問(wèn)

  啟用防火墻的防DDoS的屬性

  嚴(yán)格限制對(duì)外開(kāi)放的服務(wù)器的向外訪問(wèn)

  運(yùn)行端口映射程序禍端口掃描程序,要認(rèn)真檢查特權(quán)端口和非特權(quán)端口。

  6、認(rèn)真檢查網(wǎng)絡(luò)設(shè)備和主機(jī)/服務(wù)器系統(tǒng)的日志。只要日志出現(xiàn)漏洞或是時(shí)間變更,那這臺(tái)機(jī)器就可   能遭到了攻擊。

  7、限制在防火墻外與網(wǎng)絡(luò)文件共享。這樣會(huì)給黑客截取系統(tǒng)文件的機(jī)會(huì),主機(jī)的信息暴露給黑客,   無(wú)疑是給了對(duì)方入侵的機(jī)會(huì)。

  8、路由器

  以Cisco路由器為例

  Cisco Express Forwarding(CEF)

  使用 unicast reverse-path

  訪問(wèn)控制列表(ACL)過(guò)濾

  設(shè)置SYN數(shù)據(jù)包流量速率

  升級(jí)版本過(guò)低的ISO

  為路由器建立log server

  能夠了解DDoS攻擊的原理,對(duì)我們防御的措施在加以改進(jìn),我們就可以擋住一部分的DDoS攻擊,知己知彼,百戰(zhàn)不殆嘛。

關(guān)鍵詞:DDoS

贊助商鏈接: