閑聊下為什么Linux系統(tǒng)下病毒這么少?
概述
很多人認(rèn)為 Linux 病毒少是因?yàn)長(zhǎng)inux不像Windows那么普及,其實(shí)這種觀點(diǎn)很早已經(jīng)被人批駁過(guò)了,一個(gè)最有力的論據(jù)是:如果寫(xiě)病毒的人寫(xiě) Windows 病毒是因?yàn)?Windows 用戶多而因此破壞性大,那么 Internet 上大多數(shù)服務(wù)器都是基于 Unix/Linux 的,攻擊這些服務(wù)器,破壞性豈不是更大么?
Linux賬號(hào)限制
對(duì)一個(gè)二進(jìn)制的 Linux 病毒,要感染可執(zhí)行文件,這些可執(zhí)行文件對(duì)啟動(dòng)這個(gè)病毒的用戶一定要是可寫(xiě)的。而實(shí)際情況通常并不是這樣的。實(shí)際情況通常是,程序被 root 擁有,用戶通過(guò)無(wú)特權(quán)的帳號(hào)運(yùn)行。而且,越是沒(méi)有經(jīng)驗(yàn)的用戶,他擁有可執(zhí)行文件的可能性就越小。因此,越是不了解這種危險(xiǎn)的用戶的主目錄越不適合病毒繁殖。
即使這個(gè)病毒成功地感染了這個(gè)用戶擁有的一個(gè)程序,由于這個(gè)用戶權(quán)限受限,它進(jìn)一步傳播的任務(wù)也會(huì)非常困難(當(dāng)然,對(duì)于運(yùn)行單用戶系統(tǒng)的 Linux 新手,這個(gè)論證可能不適用。這樣的用戶可能會(huì)對(duì) root 帳戶比較粗心)。
Linux網(wǎng)絡(luò)限制
Linux 網(wǎng)絡(luò)程序構(gòu)建地很保守,沒(méi)有使現(xiàn)在 Windows 病毒如此快速傳播變的可能的高級(jí)宏工具。這并不是 Linux 的固有特征;它僅僅是兩種用戶基礎(chǔ)的不同和這種不同導(dǎo)致的在這兩種市場(chǎng)中的成功產(chǎn)品的不同的反映。
Linux內(nèi)核和用戶空間
linux的內(nèi)核和用戶空間分得很清晰,用戶甚至可以在啟動(dòng)時(shí)定義自己的init=XXX參數(shù)使得用戶空間的第一個(gè)進(jìn)程是自己定義的,這種內(nèi)核空間和內(nèi)核空間的不耦合是十分重要的,內(nèi)核在init內(nèi)核線程中通過(guò)execve一個(gè)用戶進(jìn)程讓用戶接手系統(tǒng),這個(gè)進(jìn)程是可以自己定義的,不過(guò)一般是/sbin/init進(jìn)程,這樣的結(jié)果就是即使用戶空間全部被注入了,那么你第一,可以刪除這些骯臟的文件;第二,可以設(shè)置一個(gè)你自己定義的干凈的init進(jìn)程,需要做的就是重新啟動(dòng)一下系統(tǒng),一切就搞定了,linux中強(qiáng)大shell命令使得你可以很簡(jiǎn)單的備份一份干凈的無(wú)病毒的根文件系統(tǒng),因此在linux下殺毒將是一件很簡(jiǎn)單的事情。用戶可以自主控制用戶空間的第一個(gè)進(jìn)程是這里的要點(diǎn),在windows下這是很難的,你想替換smss程序,試試看,系統(tǒng)會(huì)提示你“請(qǐng)確定磁盤(pán)未滿或未被寫(xiě)保護(hù)而且文件未被使用”,并且system32下的dllcache也是一個(gè)讓你又愛(ài)又恨的目錄,不信的話,請(qǐng)手動(dòng)刪除一下IE試試看。
開(kāi)源的Linux
Linux的應(yīng)用軟件和系統(tǒng)軟件幾乎都是開(kāi)源的。這對(duì)病毒有兩方面的影響。首先,病毒很難藏身于開(kāi)源的代碼中間。其次,對(duì)僅有二進(jìn)制的病毒,一次新的編譯安裝就截?cái)嗔瞬《疽粋€(gè)主要的傳播途徑。雖然 Linux 發(fā)行商也提供大量的二進(jìn)制軟件包,但是用戶大都是從發(fā)行商提供的可靠的軟件倉(cāng)庫(kù)中下載這些軟件包,大都具有 md5 驗(yàn)證機(jī)制,安全性極高。
一個(gè)計(jì)算機(jī)病毒,像生物病毒一樣,要想傳播開(kāi)來(lái),其繁殖速度必須超過(guò)其死亡(被消滅)的速度。上面提到的障礙有效地降低了 Linux 病毒的繁殖速度。我們沒(méi)有看到一個(gè)真正的 Linux 病毒瘋狂傳播,原因就在于存在的 Linux 病毒中沒(méi)有一個(gè)能夠在 Linux 提供的敵對(duì)的環(huán)境中茁壯成長(zhǎng)。