如何防止ddos攻擊
本帖最後由 孤寂如雲 於 2011-2-22 15:33 編輯(轉載)
進入2000年以來,網絡遭受攻擊事件不斷發生,全球許多著名網站如yahoo、cnn、buy、ebay、fbi,包括中國的新浪網相繼遭到不名身份的黑客攻擊,值得註意的是,在這些攻擊行為中,黑客擯棄了以往常常采用的更改主頁這一對網站實際破壞性有限的做法,取而代之的是,在一定時間內,徹底使被攻擊的網絡喪失正常服務功能,這種攻擊手法為 DDoS,即分布式拒絕服務攻擊(Distributed denial of service )。
簡單的講,拒絕服務就是用超出被攻擊目標處理能力的海量數據包消耗可用系統,帶寬資源,致使網絡服務癱瘓的一種攻擊手段。在早期, 拒絕服務攻擊主要是針對處理能力比較弱的單機,如個人pc,或是窄帶寬連接的網站,對擁有高帶寬連接,高性能設備的網站影響不大,但在99年底,伴隨著DDoS的出現,這種高端網站高枕無憂的局面不復存在,與早期的DoS攻擊由單臺攻擊主機發起,單兵作戰相較,DDoS實現是借助數百,甚至數千臺被植入攻擊守護進程的攻擊主機同時發起的集團作戰行為,在這種幾百,幾千對一的較量中, 網絡服務提供商所面對的破壞力是空前巨大的。
拒絕服務攻擊自問世以來,衍生了多種形式,現將兩種使用較頻繁的TCP-SYN flood, UDP flood做一個介紹 。TCP-SYN flood又稱半開式連接攻擊,每當我們進行一次標準的TCP連接(如WWW瀏覽,下載文件等)會有一個一個三次握手的過程,首先是請求方向服務方發送一個SYN消息,服務方收到SYN後,會向請求方回送一個SYN-ACK表示確認,當請求方收到SYN-ACK後則再次向服務方發送一個ACK消息,一次成功的TCP連接由此就建立,可以進行後續工作了,如圖所示:
http://tech.ccidnet.com/col/attachment/2006/11/905627.gif
而TCP-SYN flood在它的實現過程中只有前兩個步驟,當服務方收到請求方的SYN並回送SYN-ACK確認消息後, 請求方由於采用源地址欺騙等手段,致使服務方得不到ACK回應,這樣,服務方會在一定時間處於等待接收請求方ACK消息的狀態,一臺服務器可用的TCP連接是有限的,如果惡意攻擊方快速連續的發送此類連接請求,則服務器可用TCP連接隊列很快將會阻塞,系統可用資源,網絡可用帶寬急劇下降,無法向用戶提供正常的網絡服務。
Udp在網絡中的應用也是比較廣泛的,比如DNS解析、realaudio實時音樂、網絡管理、聯網遊戲等,基於udp的攻擊種類也是比較多的,如目前在互連網上提供www、mail等服務的設備一般為使用unix操作系統的服務器,他們默認是開放一些有被惡意利用可能的udp服務的,如:echo,chargen. echo服務回顯接收到的每一個數據包,而原本作為測試功能的chargen服務會在收到每一個數據包時隨機反饋一些字符,如果惡意攻擊者將這兩個udp服務互指,則網絡可用帶寬會很快耗盡。
自99年後半年開始,DDoS攻擊不斷在Internet出現,並在應用的過程中不斷的得到完善,在Unix或nt環境上截至目前已有一系列比較成熟的軟件產品,如Trinoo,TFN,TFN2K,STACHELDRATH等,他們基本核心及攻擊思路是很相象的,下面就通過Trinoo對這類軟件做一介紹。
Trinoo是基於UDP flood的攻擊軟件,它向被攻擊目標主機隨機端口發送全零的4字節UDP包,被攻擊主機的網絡性能在處理這些超出其處理能力垃圾數據包的過程中不斷下降,直至不能提供正常服務甚至崩潰。
Trinoo攻擊功能的實現,是通過三個模塊付諸實施的,
1、攻擊守護進程(NS);2、攻擊控制進程(MASTER);3、客戶端(NETCAT,標準TELNET程序等)。
攻擊守護進程NS是真正實施攻擊的程序,它一般和攻擊控制進程(MASTER)所在主機分離,在原始C文件ns.c編譯的時候,需要加入可控制其執行的攻擊控制進程MASTER所在主機IP,(只有在ns.c中的IP方可發起ns的攻擊行為)編譯成功後,黑客通過目前比較成熟的主機系統漏洞破解(如rpc.cmsd,rpc.ttdbserver,rpc.statd)可以方便的將大量NS植入因特網中有上述漏洞主機內。ns運行時,會首先向攻擊控制進程(MASTER)所在主機的31335端口發送內容為HELLO的UDP包,標示它自身的存在,隨後攻擊守護進程即處於對端口27444的偵聽狀態,等待master攻擊指令的 到來。
攻擊控制進程(MASTER)在收到攻擊守護進程的HELLO包後,會在自己所在目錄生成一個加密的名為...的可利用主機表文件, MASTER的啟動是需要密碼的,在正確輸入默認密碼gOrave後, MASTER即成功啟動,它一方面偵聽端口31335,等待攻擊守護進程的HELLO包,另一方面偵聽端口27665,等待客戶端對其的連接。當客戶端連接成功並發出指令時, MASTER所在主機將向攻擊守護進程ns所在主機的27444端口傳遞指令。
客戶端不是trinoo自帶的一部分,可用標準的能提供TCP連接的程序,如TELNET,NETCAT等,連接MASTER所在主機的27665端口, 輸入默認密碼betaalmostdone後,即完成了連接工作,進入攻擊控制可操作的提示狀態。
目前版本的trinoo有六個可用命令,mtimer:設定攻擊時長,如mtimer 60,攻擊60秒,如果不設置的話,默認是無限。dos:對某一目標主機實施攻擊,如dos 12.34.45.56 mdie:停止正在實施的攻擊,使用這一功能需要輸入口令killme,mping:請求攻擊守護進程NS回應,監測ns是否工作。mdos, 對多個目標主機實施攻擊,msize:設置攻擊UDP包的大小。
我們來看一次攻擊的實例:
被攻擊的目標主機victim IP為:12.23.34.45
ns被植入三臺sun的主機裏,他們的IP對應關系分別為
client1:11.11.11.11
client2:22.22.22.22
client3:33.33.33.33
master所在主機為masterhost:11.22.33.44
首先我們要啟動各個進程,在client1,2,3上分別執行ns,啟動攻擊守護進程。
其次,在master所在主機啟動master
masterhost# ./master
?? gOrave (系統示輸入密碼,輸入gOrave後master成功啟動)
trinoo v1.07d2+f3+c (連接成功)
在任意一臺與網絡連通的可使用telnet的設備上,執行
telnet 11.22.33.44 27665
Escape character is '^]'.
betaalmostdone (輸入密碼)
trinoo v1.07d2+f3+c..
trinoo> (進入提示符)
trinoo> mping (我們首先來監測一下各個攻擊守護進程是否成功啟動)
mping: Sending a PING to every Bcasts.
trinoo> PONG 1 Received from 11.11.11.11
PONG 2 Received from 22.22.22.22
PONG 3 Received from 33.33.33.33 (成功響應)
trinoo> mtimer 60 (設定攻擊時間為60秒)
mtimer: Setting timer on bcast to 60.
trinoo> dos 12.23.34.45
DoS: Packeting 12.23.34.45......
至此一次攻擊結束,此時ping 12.23.34.45,會得到icmp不可到達反饋,目標主機此時與網絡的正常連接已被破壞。
由於目前版本的trinoo尚未采用IP地址欺騙,因此在被攻擊的主機系統日誌裏我們可以看到如下紀錄:
Mar 20 14:40:34 victim snmpXdmid: Will attempt to re-establish connection.
Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 11.11.11.11.59841: The
message has a wrong header type (0x0)
Mar 20 14:40:35 victim snmpdx: error while receiving a pdu from 22.22.22.22.43661: The
message has a wrong header type (0x0)
Mar 20 14:40:36 victim snmpdx: error while receiving a pdu from 33.33.33.33.40183: The
message has a wrong header type (0x0)
Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type
(0x0).
Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1.
Mar 20 14:40:36 victim snmpXdmid: Will attempt to re-establish connection.
Mar 20 14:40:36 victim snmpXdmid: Error receiving PDU The message has a wrong header type
(0x0).
Mar 20 14:40:36 victim snmpXdmid: Error receiving packet from agent; rc = -1.
由上述日誌,我們不難看出發起攻擊的ip地址,這一問題,通過ip spoof在後期的軟件tfn,tfn2k等軟件中得到了解決,給被攻擊者找出肇事者進一步增加了難度。
Trinoo等DdoS攻擊軟件的出現,對網絡的安全產生了巨大的挑戰,借助這種在網上可以得到的公開軟件,任何一個普通的上網者對網絡的安全都構成了潛在的威脅,那麽能不能做一些預防工作呢?
有一些是可以做的,首先,檢測自己的系統是否被植入了攻擊守護程序,最簡單的辦法,檢測上述提到的udp端口,如netstat -a | grep udp 端口號,如果得到listen等激活狀態,就要註意了,或者用專門的檢測軟件,這裏推薦美國FBI專門研制的Find Distributed Denial of Service (find_ddos) , 最新版本的可檢測到tfn2k client, tfn2k daemon, trinoo daemon, trinoo master, tfn daemon, tfn client, stacheldraht master, stacheldraht client, stachelddraht demon和 tfn-rush client等目前幾乎所有流行攻擊軟件。 它的運行很簡單,解開包,運行find_ddos即可,下面為在一臺可疑設備運行結果,
Logging output to: LOG
Scanning running processes...
/proc/795/object/a.out: trinoo daemon
/usr/bin/gcore: core.795 dumped
/proc/800/object/a.out: trinoo master
/usr/bin/gcore: core.800 dumped
Scanning "/tmp"...
Scanning "/"...
/yiming/tfn2k/td: tfn2k daemon
/yiming/tfn2k/tfn: tfn2k client
/yiming/trinoo/daemon/ns: trinoo daemon
/yiming/trinoo/master/master: trinoo master
/yiming/trinoo/master/...: possible IP list file
NOTE: This message is based on the filename being suspicious, and is not
based on an analysis of the file contents. It is up to you to examine the
file and decide whether it is actually an IP list file related to a DDOS
tool.
/yiming/stacheldrahtV4/leaf/td: stacheldraht daemon
/yiming/stacheldrahtV4/telnetc/client: stacheldraht client
/yiming/stacheldrahtV4/td: stacheldraht daemon
/yiming/stacheldrahtV4/client: stacheldraht client
/yiming/stacheldrahtV4/mserv: stacheldraht master
ALERT: One or more DDOS tools were found on your system.
Please examine LOG and take appropriate action.
看來這臺設備的攻擊守護程序還不少呢,系統管理員要註意啦!
其次,封掉不必要的UDP服務,如echo,chargen,減少udp攻擊的入口。
第三,在路由器連接骨幹網絡的端口結合采用CEF和ip verify unicast reverse-path,擋住一部分ip spoof,syn的攻擊。同時使用access control lists將可能被使用的網絡保留地址封掉。借助使用CAR技術來限制 ICMP 報文大小。具體使用可查閱cisco網站。
第四,在敏感主機如www服務器使用ip filter軟件。
截至目前,實際很徹底的防禦手段還沒有出現,但采用上述做法可以較大地減小不安全性。
Internet的發展,永遠是一場不會停止的網絡安全攻與防的較量。
(t116)
http://tech.ccidnet.com/art/1101/20061109/946061_1.html
對於討論區的安全措施很有用。
頁:
[1]