閒聊下為什麼Linux系統下病毒這麼少?

Linux Windows 軟件 UNIX 波波說運維 2019-05-25

概述

很多人認為 Linux 病毒少是因為Linux不像Windows那麼普及,其實這種觀點很早已經被人批駁過了,一個最有力的論據是:如果寫病毒的人寫 Windows 病毒是因為 Windows 用戶多而因此破壞性大,那麼 Internet 上大多數服務器都是基於 Unix/Linux 的,攻擊這些服務器,破壞性豈不是更大麼?

閒聊下為什麼Linux系統下病毒這麼少?



Linux賬號限制

對一個二進制的 Linux 病毒,要感染可執行文件,這些可執行文件對啟動這個病毒的用戶一定要是可寫的。而實際情況通常並不是這樣的。實際情況通常是,程序被 root 擁有,用戶通過無特權的帳號運行。而且,越是沒有經驗的用戶,他擁有可執行文件的可能性就越小。因此,越是不瞭解這種危險的用戶的主目錄越不適合病毒繁殖。

即使這個病毒成功地感染了這個用戶擁有的一個程序,由於這個用戶權限受限,它進一步傳播的任務也會非常困難(當然,對於運行單用戶系統的 Linux 新手,這個論證可能不適用。這樣的用戶可能會對 root 帳戶比較粗心)。

閒聊下為什麼Linux系統下病毒這麼少?


Linux網絡限制

Linux 網絡程序構建地很保守,沒有使現在 Windows 病毒如此快速傳播變的可能的高級宏工具。這並不是 Linux 的固有特徵;它僅僅是兩種用戶基礎的不同和這種不同導致的在這兩種市場中的成功產品的不同的反映


Linux內核和用戶空間

linux的內核和用戶空間分得很清晰,用戶甚至可以在啟動時定義自己的init=XXX參數使得用戶空間的第一個進程是自己定義的,這種內核空間和內核空間的不耦合是十分重要的,內核在init內核線程中通過execve一個用戶進程讓用戶接手系統,這個進程是可以自己定義的,不過一般是/sbin/init進程,這樣的結果就是即使用戶空間全部被注入了,那麼你第一,可以刪除這些骯髒的文件;第二,可以設置一個你自己定義的乾淨的init進程,需要做的就是重新啟動一下系統,一切就搞定了,linux中強大shell命令使得你可以很簡單的備份一份乾淨的無病毒的根文件系統,因此在linux下殺毒將是一件很簡單的事情。用戶可以自主控制用戶空間的第一個進程是這裡的要點,在windows下這是很難的,你想替換smss程序,試試看,系統會提示你“請確定磁盤未滿或未被寫保護而且文件未被使用”,並且system32下的dllcache也是一個讓你又愛又恨的目錄,不信的話,請手動刪除一下IE試試看。

閒聊下為什麼Linux系統下病毒這麼少?


開源的Linux

Linux的應用軟件和系統軟件幾乎都是開源的。這對病毒有兩方面的影響。首先,病毒很難藏身於開源的代碼中間。其次,對僅有二進制的病毒,一次新的編譯安裝就截斷了病毒一個主要的傳播途徑。雖然 Linux 發行商也提供大量的二進制軟件包,但是用戶大都是從發行商提供的可靠的軟件倉庫中下載這些軟件包,大都具有 md5 驗證機制,安全性極高。


一個計算機病毒,像生物病毒一樣,要想傳播開來,其繁殖速度必須超過其死亡(被消滅)的速度。上面提到的障礙有效地降低了 Linux 病毒的繁殖速度。我們沒有看到一個真正的 Linux 病毒瘋狂傳播,原因就在於存在的 Linux 病毒中沒有一個能夠在 Linux 提供的敵對的環境中茁壯成長。

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

閒聊下為什麼Linux系統下病毒這麼少?

相關推薦

推薦中...