題 Linux如何不容易受到病毒,惡意軟件和類似的攻擊?


Linux如何防禦病毒?


這個問題是一個 本週超級用戶問題
  閱讀 博客文章 了解更多詳情或 為博客做貢獻 你自己


71
2017-10-03 15:38


起源


也可以看看 superuser.com/questions/11969/... - Robert Munteanu
我認為你的意思是餅乾。看到: cs.utah.edu/~elb/folklore/afs-paper/node9.html 黑客是一個非特定的術語。 - jnewman
@JoshN:謝謝!編輯。 - ykombinator
對於Linux,許多軟件都是開源的,所以如果病毒編寫者使用開源軟件,那麼社區將有助於修復這個美麗的頭腦。如果作者想要選擇密切的源專有方式,那麼他/她應該將該程序標記為“專有惡意軟件”。 - kaykay
我認為這與Windows等中的文件結構有關,因為大多數病毒會攻擊文件和註冊表等結構,因此容易受到病毒的攻擊。但是在Linux中,文件系統和結構都很穩定,不能輕易操作。我曾經聽說曾經坐在Linux桌面上的木馬病毒什麼都不做,因為它無法攻擊任何文件...... - ThunderToes


答案:


嗯,它實際上不是......它不再受黑客開發針對Linux系統的病毒的影響。消費級計算機通常在Windows上運行,因此,當針對廣泛的受眾時,Windows是可行的方式。

不要誤解Linux和病毒,肯定存在Linux病毒。

一些發行版有額外的保護層,如SELinux(見 這裡)例如在Ubuntu中。然後是默認防火牆以及外來文件不會自動擁有執行權限的事實。必須在執行之前授予特定執行權限。 (看到 這裡

然後還有其他幾個因素使Linux成為病毒的一個難處,通常Linux系統上的非root用戶沒有可用的小文件可以讓病毒保持不被檢測和傳播。有些程序只需要您以root身份登錄(或使用 sudo)在他們運行或訪問/修改您家以外的目錄之前。開發一種可以在Windows中傳播的可行病毒要困難得多。

更新:

如下所述,大多數運行Linux的計算機都是由知道一兩件事的人運行的服務器。運行Linux以供桌面使用的人通常會選擇並且也知道他們正在做什麼。幾乎所有計算機文盲都運行Windows,因此感染這些計算機要容易得多。 “嘿,這台機器告訴我,我有病毒,我必須購買這個名為'FAKETrojanHunter'的反病毒程序來擺脫它......好吧,讓我們做吧!

因為沒有Linux發行版/安裝本身是相同的,所以開發能夠盡可能高效地感染它們的惡意軟件更加困難。此外,幾乎所有在Linux上運行的軟件都是開源軟件,因為它的源代碼向公眾開放,使得惡意軟件更易於檢測。


104
2017-10-03 15:42



+1為 there definitely ARE Linux viruses - Sathya♦
請記住,大多數(好吧,很多......)服務器運行Linux,因此實際上有一個巨大的安裝基礎值得攻擊。這些服務器中的大多數都沒有防病毒,也沒有問題。包中有漏洞,但通常它們不允許任意遠程代碼執行。 - Rich Bradshaw
實際上,對於絕大多數漏洞來說,linux對病毒攻擊的安全性並不比Windows強。有些類,linux改進了(例如,通過電子郵件發送的可執行文件更難以感染用戶......但並非不可能)。相同的攻擊向量適用於Linux(主要訪問Internet的程序中的緩衝區溢出)。愚蠢...呃我的意思是沒有經驗的用戶就像他們想要的那樣(nudie圖片,可愛的屏幕保護程序等),可以採取額外的步驟來製作電子郵件附件。 - Erik Funkenbusch
@Rich:好的。還有很多Windows服務器。但是,服務器通常由具有計算機和安全性線索的人員運行,因此更難以攻擊。有很多計算機周圍都是由不懂計算機的人維護的。其中絕大多數是Microsoft Windows,其餘大多數是Mac OSX,Linux幾乎不存在,因為幾乎所有個人Linux用戶都運行它,因為他們了解計算機並選擇了Linux。 - David Thornley
@Jase21:我不明白你怎麼能說Linux有“更好的編碼實踐”,除非你已經在這兩個平台上工作過,並且看過兩個平台的源代碼。 @BloodPhilia:+1這裡的答案最直接指向問題的根源,而不是FUD大肆宣傳。 - Billy ONeal


其中一個原因是用戶權限。

GNU / Linux系統是類Unix系統,這意味著它們可以從頭開始構建為多用戶系統。這意味著用戶之間的責任分離很大。因此,普通用戶實際上不會損壞系統,因為他沒有所需的權限。雖然現在在Windows系統上也可以使用有限的帳戶,但在GNU / Linux系統上,用戶當然希望今天使用有限帳戶使用並僅保留root帳戶以更改設置(默認情況下某些分發甚至不允許用戶以root身份登錄,因為還有其他更安全的機制可以使用root帳戶修改設置)。

另一方面,許多Windows用戶在Windows 9x時代長大,或那個時代對他們產生了很大的影響。當時只有用戶帳戶是管理員,一切都被允許給該用戶。即使在今天,在多用戶Windows NT的Windows系統上,通常需要(或至少預期)用戶使用具有管理權限的帳戶,並且在家庭用戶中使用有限的帳戶是相當低的。


37
2017-10-03 16:00



+1提及權限 - sudo是我的朋友。 - Thomas O
您可以通過以受限用戶身份運行並在需要時通過UAC升級來獲得Windows上的相同保護。只是說。 :) - badp
UAC令人討厭,據我所知,許多用戶將其關閉。然後我再次使用Ubuntu所以也許我有偏見。 - Thomas O
@Thomas O當我寫下答案時,我的目標是什麼。在Windows上,UAC很煩人,通常需要提升權限。在GNU / Linux上,經常不需要提升權限。此外,在許多發行版上更改用戶設置更容易,因為他們將“記住”密碼一段時間,而UAC提示將顯示每個操作。 - AndrejaKo
@Thomas - Hello71所說的是UAC在受保護的桌面上工作,不允許與交互式用戶桌面交互,因此在那裡運行的任何應用都無法“移動鼠標”並單擊它。似乎UAC經常被那些對此一無所知的人誤解。 - Erik Funkenbusch


Linux對Windows的一個優點是,為了使文件可執行,您必須專門設置其權限。

這意味著雙擴展技巧(例如“brittany_spears_naked.jpg.exe“)將無法工作,因為用戶需要在它感染它們之前使其可執行 - 並且希望他們認為圖片需要可執行的奇怪之處。


22
2017-10-03 15:46



Linux根本不使用文件擴展名。 - AndrejaKo
從技術上講,它沒有,但是gnome和kde將使用它們來確定某些東西,例如圖片或音樂文件,並將其傳遞給適當的程序。 - Richard
實際上,但GNOME和KDE以及任何其他桌面環境都不會假定文件可以基於文件擴展名執行。 - Ryan Thompson
沒有權限就無法執行文件。這意味著您的文件管理器必須更改權限甚至嘗試執行它。 - Thomas O
實際上,我的意思是Linux桌面環境不會啟動桌面文件,除非桌面文件 本身 標記為可執行文件因此,您不能只下載包含的.desktop文件 Exec=rm -rf / 並且在沒有先將桌面文件標記為可執行文件的情況下意外運行它 - Ryan Thompson


Linux受到保護,但不是無懈可擊的。

從安全的角度來看,將Linux / Unix與Windows進行高級對比:

  • Linux內核(檢查並強制執行系統權限)是 許多 小於Windows等價物。較小意味著更簡單;更簡單意味著更容易檢查,減少意外的系統交互。 “更小”和“更簡單”是安全性分析中的好東西。 Windows內核保持高速增長。

  • Linux用戶傾向於以低於Windows的權限級別運行,從而更難以影響整個系統。

  • Linux以簡單,靈活的安全模型開始。 Windows開始時要求向後兼容沒有安全模型的系統。

  • Linux一直有功能(例如, chroot(2))緩解安全意識程序員的任務。

這些都不會使Linux無法攻擊惡意軟件。這確實意味著攻擊正確配置的Linux主機比攻擊正確配置的Windows主機更加困難。


19
2017-10-03 22:14



實際上,Windows NT起初是OS / 2的競爭對手。一切都在DACL安全模型之上運行,即 更多 比POSIX權限靈活。這裡的大多數論點都適用於Win9x操作系統時代,而不適用於Windows NT。實際上,Linux主線的增長速度遠遠超過Windows內核。 NT內核唯一能做的就是提供Windowing子系統 - 無論如何它都不是安全碼附近的任何地方。 4.大小對安全性有影響的斷言僅適用於安全代碼。添加 btrfs Linux不會降低安全性。 - Billy ONeal


您的問題的答案取決於您認為的“病毒”。

如果你使用 正確 病毒的定義 - 也就是說,修改現有可執行文件的代碼 - 那麼Linux不容易出現病毒的原因是因為它不是在Linux上傳播惡意代碼的可行機制。原因是Linux可執行文件很少直接從一台計算機傳輸到另一台計算機。相反,使用包管理軟件或通過分發源代碼來傳輸程序。事實上,大多數Linux軟件都是免費提供的,這意味著人們幾乎沒有密集的程序將程序從一台計算機複製到另一台計算機。

如果用“病毒”你的意思是“蠕蟲” - 一個在互聯網上複製自己的程序,那麼Linux完全不受這種攻擊的影響。事實上,原來的互聯網蠕蟲,“莫里斯蠕蟲“,使用Sendmail複製,這個程序仍然預先安裝在許多Linux系統上。幾乎所有針對Linux機器的成功攻擊都針對易受攻擊的面向Internet的應用程序,例如郵件服務器或Web應用程序。

最後,如果您指的是一般的惡意代碼 - 通常是“特洛伊木馬”,那麼保護Linux的主要是文化。 Linux是一種很少使用的操作系統,它已經將其價值限制為目標。但是當你再加上Linux用戶通常非常精明和安全意識的事實時,它進一步降低了成功攻擊的可能性。例如,如果您的攻擊計劃依賴於說服用戶下載並運行程序來感染自己,那麼與普通的Windows用戶相比,您說服普通Linux用戶的可能性大大降低。因此,惡意軟件作者在選擇一個平台進行定位時,會選擇明顯更富有成效的目標。


13
2017-10-04 00:55





Linux有一個高度專注的怪異社區為它工作,即使編寫了一些惡意軟件,總有一個解決方案。


12
2017-10-03 16:15



如果防病毒公司將目光投向這個平台,那麼可以採用同一組極客來開發病毒。畢竟,病毒和反病毒行業是靠資金而不是真正的破解者/黑客來感動的。 - Mahesh
@Mahesh啊,我知道這裡會有一個陰謀論。 (不是說它不是真的,只是稱它為它。) - jnewman
@Josh,大聲笑。也許你會覺得這是陰謀論,但為catcom,ePC和許多其他反病毒公司工作的人會給你更好的想法。 ;) - Mahesh


有許多方面可以促成這一點:

  1. 異構環境
    • 有許多不同的口味和許多不同的配置;
    • 即使在相同的分佈中,不同可能性的範圍也是巨大的;
    • 每個發行版都提供多個內核,支持額外的補丁;
    • 每個大公司通常會推出自己的內核風格。
  2. 對用戶和強有力的執法歷史的處理方法
    • 由於面向服務器的開發歷史悠久,Linux在這一領域自然領先。
  3. 病毒無效
    • Linux是全球安裝最多的系統,但Linux上的PC /台式機並不多;
    • 在指示時對服務器的攻擊效率更高;
    • 由於系統功能有限,對嵌入式系統(路由器,電視機等)的攻擊通常不值得。
  4. 當前病毒創建者的關注點並不適合Linux生態系統
    • 創作者追求最簡單的東西。
  5. 病毒在Linux中更難隱藏
    • Linux是一個公開的系統,可以公開所有信息,而不是那麼容易隱藏的東西。
  6. 開源
    • 儘管微軟可能聲稱相反,但每行代碼有數千名審閱者,甚至更多人能夠在幾秒鐘內修補安全漏洞,這肯定會對代碼質量和安全性產生積極影響。

12
2017-10-04 05:48



“Linux是全球安裝最多的系統”? - GeneQ
@GeneQ當然,還有什麼其他系統?好吧,平心而論,我不會考慮那些用於批量生產的嵌入式芯片的超級特定操作系統(是的,有些確實帶有實際操作系統)。 - Let_Me_Be
這實際上是不正確的。大多數嵌入式芯片根本不運行任何形式的操作系統。 POSIX操作系統通常用於服務器和某些類型的手機,但不適用於汽車和電視機等,而小型計算機的驚人統計數據比桌面大小的計算機更為常見。 - Billy ONeal