網絡技術是從1990年代中期發(fā)展起來的新技術,它把互聯(lián)網上分散的資源融為有機整體,實現(xiàn)資源的全面共享和有機協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網絡、傳感器等。 當前的互聯(lián)網只限于信息共享,網絡則被認為是互聯(lián)網發(fā)展的第三階段。 Internet給全世界的人們帶來了無限的生機,真正實現(xiàn)了無國界的全球村。但是還有很多困繞我們的因素,象IP地址的短缺,大量帶寬的損耗,以及政府規(guī)章的限制和編程技術的不足。現(xiàn)在,由于多年來網絡系統(tǒng)累積下了無數(shù)的漏洞,我們將面臨著更大的威脅,網絡中潛伏的好事者將會以此作為缺口來對系統(tǒng)進行攻擊,我們也不得不為以前的疏忽付出更大的努力。雖然大多的網絡系統(tǒng)產品都標榜著安全的旗號,但就我們現(xiàn)在的網絡協(xié)議和殘缺的技術來看,危險無處不在。
拒絕服務攻擊是一種遍布全球的系統(tǒng)漏洞,黑客們正醉心于對它的研究,而無數(shù)的網絡用戶將成為這種攻擊的受害者。Tribe Flood Network, tfn2k, smurf, targa…還有許多的程序都在被不斷的開發(fā)出來。這些程序想瘟疫一樣在網絡中散布開來,使得我們的村落更為薄弱,我們不得不找出一套簡單易用的安全解決方案來應付黑暗中的攻擊。
在這篇文章中我們將會提供:
對當今網絡中的拒絕服務攻擊的討論。 安全環(huán)境中的一些非技術性因素以及我們必須克服的一些障礙問題。 如何認清產品推銷商所提供的一些謊言。
在我們正式步入對這些問題的技術性討論之前,讓我們先從現(xiàn)實的生活中的實際角度來看一下這些困繞我們的問題。
1、當前的技術概況
在我們進入更為詳細的解決方案之前,讓我們首先對問題做一下更深入的了解。
與安全相關的這些小問題如果詳細來講的話都能成為一個大的章節(jié),但限于篇幅的原因,我們只能先作一下大體的了解。
軟件弱點是包含在操作系統(tǒng)或應用程序中與安全相關的系統(tǒng)缺陷,這些缺陷大多是由于錯誤的程序編制,粗心的源代碼審核,無心的副效應或一些不適當?shù)慕壎ㄋ斐傻摹8鶕?jù)錯誤信息所帶來的對系統(tǒng)無限制或者未經許可的訪問程度,這些漏洞可以被分為不同的等級。
典型的拒絕服務攻擊有如下兩種形式:資源耗盡和資源過載。當一個對資源的合理請求大大超過資源的支付能力時就會造成拒絕服務攻擊(例如,對已經滿載的Web服務器進行過多的請求。)拒絕服務攻擊還有可能是由于軟件的弱點或者對程序的錯誤配置造成的。區(qū)分惡意的拒絕服務攻擊和非惡意的服務超載依賴于請求發(fā)起者對資源的請求是否過份,從而使得其他的用戶無法享用該服務資源。
錯誤配置也會成為系統(tǒng)的安全隱患。這些錯誤配置通常發(fā)生在硬件裝置,系統(tǒng)或者應用程序中。如果對網絡中的路由器,防火墻,交換機以及其他網絡連接設備都進行正確的配置會減小這些錯誤發(fā)生的可能性。如果發(fā)現(xiàn)了這種漏洞應當請教專業(yè)的技術人員來修理這些問題。
如果換個角度,也可以說是如下原因造成的:
錯誤配置。錯誤配置大多是由于一些沒經驗的,無責任員工或者錯誤的理論所導致的。開發(fā)商一般會通過對您進行簡單的詢問來提取一些主要的配置信息,然后在由經過專業(yè)培訓并相當內行的專業(yè)人士來解決問題。
軟件弱點。由于使用的軟件幾乎完全依賴于開發(fā)商,所以對于由軟件引起的漏洞只能依靠打補丁,安裝hot fixes和Service packs來彌補。當某個應用程序被發(fā)現(xiàn)有漏洞存在,開發(fā)商會立即發(fā)布一個更新的版本來修正這個漏洞。
拒絕服務攻擊。拒絕服務攻擊大多是由于錯誤配置或者軟件弱點導致的。某些DoS攻擊是由于開發(fā)協(xié)議固有的缺陷導致的,某些DoS攻擊可以通過簡單的補丁來解決,還有一些導致攻擊的系統(tǒng)缺陷很難被彌補。最后,還有一些非惡意的拒絕服務攻擊的情況,這些情況一般是由于帶寬或者資源過載產生瓶頸導致的,對于這種問題沒有一個固定的解決方案。
2、深入DoS
DoS的攻擊方式有很多種。最基本的DoS攻擊就是利用合理的服務請求來占用過多的服務資源,致使服務超載,無法響應其他的請求。這些服務資源包括網絡帶寬,文件系統(tǒng)空間容量,開放的進程或者向內的連接。這種攻擊會導致資源的匱乏,無論計算機的處理速度多么快,內存容量多么大,互連網的速度多么快都無法避免這種攻擊帶來的后果。因為任何事都有一個極限,所以,總能找到一個方法使請求的值大于該極限值,因此就會使所提供的服務資源匱乏,象是無法滿足需求。千萬不要自認為自己擁有了足夠寬的帶寬就會有一個高效率的網站,拒絕服務攻擊會使所有的資源變得非常渺小。 傳統(tǒng)上,攻擊者所面臨的主要問題是網絡帶寬,由較小的網絡規(guī)模和較慢的網絡速度,無法使攻擊者發(fā)出過多的請求,然而,類似"the ping of death"的攻擊類型緊需要很少量的包就可以摧毀一個沒有打過補丁的UNIX系統(tǒng)。當然,多數(shù)的DoS攻擊還是需要相當大的帶寬的,但是高帶寬是大公司所擁有的,而以個人為主的黑客很難享用。為了克服這個缺點,惡意的攻擊者開發(fā)了分布式的攻擊。這樣,攻擊者就可以利用工具集合許多的網絡帶寬來對同一個目標發(fā)送大量的請求。
以下的兩種情況最容易導致拒絕服務攻擊:
由于程序員對程序錯誤的編制,導致系統(tǒng)不停的建立進程,最終耗盡資源,只能重新啟動機器。不同的系統(tǒng)平臺都會采取某些方法可以防止一些特殊的用戶來占用過多的系統(tǒng)資源,我們也建議盡量采用資源管理的方式來減輕這種安全威脅。
還有一種情況是由磁盤存儲空間引起的。假如一個用戶有權利存儲大量的文件的話,他就有可能只為系統(tǒng)留下很小的空間用來存儲日志文件等系統(tǒng)信息。這是一種不良的操作習慣,會給系統(tǒng)帶來隱患。這種情況下應該對系統(tǒng)配額作出考慮。
從安全的角度來看,本地的拒絕服務攻擊可以比較容易的追蹤并消除。而我們這篇文章主要是針對于網絡環(huán)境下的DoS攻擊。下面我們大體討論一下較為常見的基于網絡的拒絕服務攻擊:
Smurf (directed broadcast)。廣播信息可以通過一定的手段(通過廣播地址或其他機制)發(fā)送到整個網絡中的機器。當某臺機器使用廣播地址發(fā)送一個ICMP echo請求包時(例如PING),一些系統(tǒng)會回應一個ICMP echo回應包,也就是說,發(fā)送一個包會收到許多的響應包。Smurf攻擊就是使用這個原理來進行的,當然,它還需要一個假冒的源地址。也就是說在網絡中發(fā)送源地址為要攻擊主機的地址,目的地址為廣播地址的包,會使許多的系統(tǒng)響應發(fā)送大量的信息給被攻擊主機(因為他的地址被攻擊者假冒了)。使用網絡發(fā)送一個包而引出大量回應的方式也被叫做"放大器",這些smurf放大器可以在www.netscan.org網站上獲得,一些無能的且不負責任的網站仍有很多的這種漏洞。
SYN flooding 一臺機器在網絡中通訊時首先需要建立TCP握手,標準的TCP握手需要三次包交換來建立。一臺服務器一旦接收到客戶機的SYN包后必須回應一個SYN/ACK包,然后等待該客戶機回應給它一個ACK包來確認,才真正建立連接。然而,如果只發(fā)送初始化的SYN包,而不發(fā)送確認服務器的ACK包會導致服務器一直等待ACK包。由于服務器在有限的時間內只能響應有限數(shù)量的連接,這就會導致服務器一直等待回應而無法響應其他機器進行的連接請求。
Slashdot effect 這種攻擊手法使web服務器或其他類型的服務器由于大量的網絡傳輸而過載,一般這些網絡流量是針對某一個頁面或一個鏈接而產生的。當然這種現(xiàn)象也會在訪問量較大的網站上正常發(fā)生,但我們一定要把這些正常現(xiàn)象和拒絕服務攻擊區(qū)分開來。如果您的服務器突然變得擁擠不堪,甚至無法響應再多的請求時,您應當仔細檢查一下這個資源匱乏的現(xiàn)象,確認在10000次點擊里全都是合法用戶進行的,還是由5000個合法用戶和一個點擊了5000次的攻擊者進行的。
拒絕服務一般都是由過載導致的,而過載一般是因為請求到達了極限。
網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發(fā)展,這正是網絡迅速走向進步的催化劑。
|