第一部分 Unix歷史與發(fā)展
1.1 UNIX簡介
UNIX 已有數(shù)十年的歷史,在這期間,它的改變即使沒有上億次,也有數(shù)百萬次了,有成千上萬的個人和公司實現(xiàn)了上千種不同的版本,有上百萬系統(tǒng)管理員在從微型嵌入式系統(tǒng)到超級 計算機(jī)上都安裝過它。無可爭論,沒有兩個實際的UNIX操作系統(tǒng)是完全相同的。
UNIX”一詞是屬于Open Group的一個商標(biāo),該組織是一個要求符號得到正確歸屬的國際 協(xié)會。在這數(shù)十年當(dāng)中,該標(biāo)識已經(jīng)被沖淡到?jīng)]有具體含義。雖然如此,Open Group仍發(fā)布 了“The Single UNIX Specification”,這可以在http://www.UNIX-systems.org/online. html上看到。
“Unix”是雙關(guān)語,表示名字Multics,它最初被寫作“Unics”,表示UNiplexed Information and Computing System。“Unix”和“UNIX”在如今都被廣泛使用。曾經(jīng)有一段時間,Dennis Ritchie試圖宣布用小寫版本,因為“UNIX”不是開頭字母組成。
許多運(yùn)行Linux等類似UNIX系統(tǒng)的人認(rèn)為他們運(yùn)行的是UNIX。正式UNIX系統(tǒng)和非正式UNIX系統(tǒng)通常被認(rèn)為屬于一類----不論是書中、媒介、網(wǎng)上還是社會公認(rèn)。
按照UNIX FAQ的定義,UNIX是“一個用C語言編寫的操作系統(tǒng),它有層次文件系統(tǒng)并集成了文件和設(shè)備I/O,其系統(tǒng)調(diào)用接口包括fork ( )和pipe ( )等服務(wù),用戶界面包括cc、troff、grep、awk等工具和一個被選擇的shell”??梢栽偌右恍琔NIX為多任務(wù)提供一致的方式,并內(nèi)置有創(chuàng)建、同步和終止進(jìn)程的操作,它可在不同種類計算機(jī)間進(jìn)行移植。
1.2 UNIX發(fā)展與歷史
1969年,Ken Thompson、Dennis Ritchie和其他一些人在AT&T貝爾實驗室開始進(jìn)行一個“little-used PDP-7 in a corner”的工作,它后來成為UNIX。10年里,UNIX在AT&T的發(fā)展經(jīng)歷了數(shù)個版本。V4(1974)用C語言重寫,這成為系統(tǒng)間操作系統(tǒng)可移植性的一個里程碑。V6(1975)第一次在貝爾實驗室以外使用,成為加州大學(xué)伯克利分校開發(fā)的第一個UNIX版本的基 礎(chǔ)。
貝爾實驗室繼續(xù)在UNIX上工作到80年代,有1983年的System V(“五”,不是字母)版本和1989年的System V,Release 4(縮寫為SVR4)版本。同時,加利福尼亞大學(xué)的程序員改動了AT&T發(fā)布的源代碼,引發(fā)了許多主要論題。Berkeley Standard Distribution(BSD)成為第 2個主要“UNIX”版本。1984年的BSD 4.2版在大學(xué)和公司計算部門中得到廣泛應(yīng)用,它的一 些特征被吸收到SVR4中。
從90年代開始,AT&T的源代碼許可證創(chuàng)造了市場的繁榮,不同開發(fā)者開發(fā)了數(shù)百種UNIX版本 。AT&T在1993年把UNIX產(chǎn)業(yè)賣給了Novell, Novell兩年后又把它賣給了Santa Cruz Operation。同時,UNIX商標(biāo)被轉(zhuǎn)讓給X/Open協(xié)會,X/Open協(xié)會后來成為了Open Group。
當(dāng)UNIX的經(jīng)營從一個實體到另一個實體傳遞時,幾個長期的開發(fā)開始收獲果實。傳統(tǒng)上,要得到一個運(yùn)行的BSD系統(tǒng),用戶需要從AT&T得到源代碼許可證。但到90年代早期,伯克利的開發(fā)者在BSD上做了許多工作,使原始的AT&T源代碼大部分被改動了。后續(xù)的程序員,從William和Lynne Jolitz開始在網(wǎng)絡(luò)分布環(huán)境中開發(fā)BSD,后來在1992年成為386BSD 0.1版。這個最初的“免費(fèi)源代碼”BSD具有三個分支,即:Net BSD、Free BSD和Open BSD,都以BSD 4.4為基礎(chǔ)。
1984年,程序員Richard Stallman開始開發(fā)來源于UNIX的免費(fèi)GNU(GNU Not UNIX)。到90年代早期,GNU項目出現(xiàn)了幾個編程里程碑,包括GNU C庫和Bourne Again Shell (bash)的發(fā)行。整個系統(tǒng)除了一個關(guān)鍵因素即工作內(nèi)核外基本完成。
接下來是芬蘭赫爾辛基大學(xué)的學(xué)生Linus Torvalds。Linus看到了一個叫作Minix的小型UNIX系統(tǒng),覺得自己能做得更好。1991年秋天,他發(fā)行了一個叫“Linux”的免費(fèi)軟件內(nèi)核的源代碼—是他的姓和Minux的組合。到1994年,Linus和一個內(nèi)核開發(fā)小組發(fā)行了Linux 1.0版。Linus和朋友們有一個免費(fèi)內(nèi)核,Stallman和朋友們擁有一個免費(fèi)的UNIX克隆系統(tǒng)的其余部分。人們把Linux內(nèi)核和GNU合在一起組成一個完整的免費(fèi)系統(tǒng),該系統(tǒng)被稱為“Linux”,盡管Stallman更愿意取名為“GNU/Linux System”[6]。有幾種不同類別的GNU/Linux:一些可以被公司用來支持商業(yè)使用,如Red Hat、Caldera Systems和S.U.S.E;其他如Debian GNU/Linux,更接近于最初的免費(fèi)軟件概念。
Linux現(xiàn)已發(fā)展到內(nèi)核2.2版。Linux能在幾種不同體系結(jié)構(gòu)的芯片上運(yùn)行,并已經(jīng)被各界接納或支持。其支持者有惠普、硅谷圖像和Sun等有較長歷史的UNIX供應(yīng)商,還有康柏和Dell等PC供應(yīng)商以及Oracle和IBM等主要軟件供應(yīng)商?;蛟S最具諷刺的是,微軟承認(rèn)無所不在的免費(fèi)軟件的競爭性威脅,但它不愿或不能公開自己的軟件源代碼。
后來微軟開始推出Windows NT (Windows 2000)。到90年代末,許多供應(yīng)商開始放棄UNIX服務(wù)器平臺而轉(zhuǎn)向Windows NT。例如Silicon Graphics 公司已決定把Intel硬件和NT作為未來的圖形平臺
第二部分 Unix典型安全隱患
2.1 RPC守護(hù)進(jìn)程程序的錯誤使入侵者可以直接獲得root權(quán)限
對Unix威脅最大可以說就是rpc上面的漏洞,遠(yuǎn)程過程調(diào)用(Remote Procedure Call)允許一臺計算機(jī)上的程序去執(zhí)行另一臺計算機(jī)上的程序。它們廣泛的應(yīng)用在各種網(wǎng)絡(luò)服務(wù)中,如文件共享服務(wù)NFS。有很多漏洞是RPC本身的缺陷導(dǎo)致的,它們正不停的涌現(xiàn)出來。有很明顯的證據(jù)表明,1999年末2000年初大規(guī)模的分布式拒絕服務(wù)攻擊中,很多被作為攻擊跳板的犧牲品就是因為存在RPC漏洞。在Solar Sunrise事件期間,對美國陸軍廣為人知的成功攻擊就是因為在數(shù)百臺國防部的系統(tǒng)中找到了一個RPC漏洞。
2.2 一些應(yīng)用的遠(yuǎn)程漏洞
遠(yuǎn)程漏洞可以使遠(yuǎn)程攻擊者在只對開放了有漏洞服務(wù)的應(yīng)用利用的情況下,就可以得到一些權(quán)限或者root權(quán)限。
例如:BIND程序存在的問題,利用nxt,qinv,in.named可直接得到root權(quán)限
BIND(Berkeley Internet Name Domain)軟件包是域名服務(wù)(DNS)的一個應(yīng)用最廣泛的實現(xiàn)軟件--我們所有人都通過它來定位Internet上的系統(tǒng),只需知道域名(如www.cnns.net)而不用知道IP地址,由此可體會它的重要性--這使它成為最受歡迎的攻擊目標(biāo)。
2.3 本地漏洞
本地漏洞雖然沒有上面兩種漏洞那么嚴(yán)重,但是他也是評估系統(tǒng)安全與否的一個重要因素,它可以使權(quán)限地的系統(tǒng)用戶來提升自己的系統(tǒng)權(quán)限,或者使一個得到了一些權(quán)限的遠(yuǎn)程攻擊者,擴(kuò)大自己的戰(zhàn)果,提升權(quán)限。
例如,ff.core緩沖區(qū)溢出漏洞,一個普通用戶只要執(zhí)行一個簡單的腳本,就可以令緩沖區(qū)溢出從而的到一個root shell。
2.4 暴露系統(tǒng)信息
嚴(yán)格的說這不是漏洞,但是他核你的系統(tǒng)安全相關(guān)。舉例子來說,finger暴露了系統(tǒng)合法用戶名,默認(rèn)shell等等信息,這就可以被攻擊者利用起來猜密碼。再如某個軟件的版本號暴露,就會令攻擊者,針對此版本來進(jìn)行攻擊,這就使攻擊者更容易的入侵的系統(tǒng)。
新聞熱點(diǎn)
疑難解答
圖片精選