Linux如何不容易受到病毒,恶意软件和诸如此类的攻击?


71

如何保护Linux免受病毒侵害?


这个问题是本周超级用户问题
阅读博客条目以获取更多详细信息,或者自己撰写博客



1
我想你是说饼干。请参阅:cs.utah.edu/~elb/folklore/afs-paper/node9.html黑客是一个非特定术语。
jnewman 2010年

1
对于Linux,许多软件都是开放源代码,因此,如果病毒编写者与开放源代码一起使用,则社区将帮助修复这个美丽的头脑。并且,如果作者希望选择接近源专有的方式,则他/她应将程序标记为“专有恶意软件”。
kaykay 2011年

我认为这与Windows等文件的结构有关,这使得大多数病毒都攻击文件和注册表等文件的结构,从而容易受到病毒的攻击。但是,在Linux中,文件系统和结构在一起更加稳定,不能轻易操作。我听说有一次特洛伊木马病毒只是坐在Linux桌面上没有任何作用,因为它无法攻击任何文件...
ThunderToes 2014年

Answers:


104

嗯,实际上并非如此……黑客受制于针对Linux系统的病毒的可能性较小。消费者级计算机通常在Windows上运行,因此,在面向广泛受众时,Windows是必经之路。

不要误解Linux和病毒,肯定有Linux病毒。

一些发行版具有附加的保护层,例如Ubuntu中的SELinux(请参阅此处)。然后是默认防火墙,外来文件没有自动执行权限的事实。必须先授予特定的执行权限,然后才能执行。(请参阅此处

然后还有其他一些因素使Linux很难被病毒感染,通常linux系统上的非root用户几乎没有可供使用的可执行文件,这些可执行文件将使病毒无法被发现和传播。有些程序仅要求您以root用户身份登录(或使用sudo),然后才能运行或访问/修改目录(而不是主目录)。要开发一种可以在Windows中传播的病毒,要困难得多。

更新:

如下所述,大多数运行Linux的计算机都是由对自己的工作了解一两件事的人运行的服务器。运行Linux的台式机用户通常会选择这样做,并且也知道自己在做什么。几乎所有不识字的计算机都运行Windows,因此感染这些计算机要容易得多。“ 嘿,这台机器告诉我我已经感染了病毒,我必须购买这个名为'FAKETrojanHunter'的防病毒程序来摆脱它……好吧,让我们开始吧!

因为没有Linux发行/安装本身是相等的,所以很难开发出能够尽可能有效地感染所有恶意软件的恶意软件。此外,几乎所有在Linux上运行的软件都是开源的,这使得恶意软件更容易被检测到,因为其来源是对公众开放的。


47
+1代表there definitely ARE Linux viruses
Sathyajith Bhat

13
请记住,大多数(很多)服务器都运行Linux,因此实际上有一个庞大的安装基础值得攻击。这些服务器大多数不运行防病毒软件,也没有问题。软件包中有漏洞利用,但通常它们不允许任意远程代码执行。
Rich Bradshaw

5
实际上,对于大多数漏洞利用而言,Linux没有比Windows更安全的防御病毒攻击。linux改进了某些类(例如,通过电子邮件发送的可执行文件更难感染用户..但并非不可能)。相同的攻击媒介适用于Linux(大多数访问Internet的程序中的缓冲区溢出)。而且愚蠢..我的意思是,如果经验丰富的用户想要他们想要的东西(裸照,可爱的屏幕保护程序等),那么经验不足的用户也有可能采取额外的步骤来使电子邮件附件可执行文件
Erik Funkenbusch 2010年

4
@Rich:好的。还有很多Windows服务器。但是,服务器通常由了解计算机和安全性的人员来运行,因此很难进行攻击。不了解计算机的人维护着许多计算机。其中绝大多数是Microsoft Windows,其余大部分是Mac OSX,Linux几乎不存在,因为几乎所有个人Linux用户都运行Linux,因为他们了解计算机并选择了Linux。
David Thornley,2010年

4
@ Jase21:我不明白您如何说Linux具有“更好的编码实践”,除非您在这两个平台上都工作过,并且已经看过这两个平台的源代码。@BloodPhilia:这里的答案+1最直接指向问题的根源,而不是FUD吹牛。
Billy ONeal,2010年

37

原因之一是用户特权。

GNU / Linux系统是类Unix的系统,这意味着它们从一开始就是构建为多用户系统。这意味着用户之间的职责之间存在很大的分离。结果,普通用户实际上并不能破坏系统,因为他不需要特权。尽管Windows系统上现在也有有限的帐户,但在GNU / Linux系统上,自然希望用户使用有限的帐户来进行日常使用,而保留root帐户仅用于更改设置(默认情况下,某些发行版甚至不允许用户以root身份登录,因为还有其他更安全的机制可以使用root帐户来修改设置)。

另一方面,许多Windows用户是在Windows 9x时代成长的,或者那个时代对他们产生了很大的影响。那时,只有用户帐户是管理员,并且所有内容都允许该用户使用。即使在当今从多用户Windows NT派生的Windows系统上,通常也要求(或至少是希望)用户使用具有管理特权的帐户,而家庭用户中受限帐户的使用率仍然很低。


4
+1提及权限-sudo是我的朋友。
Thomas O

6
通过以受限用户身份运行并在需要时通过UAC进行提升,您可以在Windows上获得相同的保护。只是说。:)
badp 2010年

2
UAC很烦人,据我所知,许多用户都将其关闭。再说一次,我使用Ubuntu,所以也许我有偏见。
Thomas O

@Thomas O写我的答案时,这就是我的目标。在Windows上,UAC很烦人,通常需要提升的特权。在GNU / Linux上,通常不需要提升特权。同样,在许多发行版中,更改用户设置更为容易,因为它们将“记住”密码一段时间,而UAC提示将显示每个操作。
AndrejaKo 2010年

5
@Thomas-Hello71的意思是UAC在受保护的桌面上工作,并且不允许与交互式用户桌面进行交互,因此在此运行的任何应用都不能“移动鼠标”并单击它。似乎UAC经常被对此一无所知的人误解。
Erik Funkenbusch

22

Linux与Windows相比的一个优势是,为了使文件可执行,您必须专门设置其权限。

这意味着双重扩展技巧(例如“ brittany_spears_naked.jpg.exe ”)将无法正常工作,因为用户需要先将其设为可执行文件才能感染它们-希望他们认为图片需要可执行。


14
Linux根本不使用文件扩展名。
AndrejaKo 2010年

9
从技术上讲不是这样,但是gnome和kde将使用它们来确定某物是例如图片还是音乐文件,并将其传递给适当的程序。
理查德

6
确实,但是GNOME或KDE或任何其他桌面环境都不会假定可以根据文件扩展名执行文件。
瑞安·汤普森

没有权限,无法执行文件。这意味着您的文件管理器将不得不更改权限,甚至尝试执行它。
Thomas O

1
实际上,我的意思是除非桌面文件本身被标记为可执行文件,否则Linux桌面环境将不会启动桌面文件。因此,您不能只下载包含其中的.desktop文件Exec=rm -rf /并意外运行它,而无需先将其标记为可执行文件。
瑞安·汤普森

19

Linux受保护,但并非不可侵犯。

从安全角度看,Linux / Unix与Windows有较高的对比:

  • Linux内核(如果系统权限检查,执行)是比Windows平台上类似小。较小意味着更简单;更简单意味着更易于检查,更少的意外系统交互。在安全性分析中,“更小”和“更简单”是好东西。Windows内核保持高速增长。

  • Linux用户倾向于以比Windows低的权限级别运行,这使得影响整个系统更加困难。

  • Linux从简单,灵活,安全的模型开始。Windows首先要求与没有安全模型的系统向后兼容。

  • Linux一直具有一些功能(例如chroot(2))来减轻注重安全的程序员的工作。

这些都不会使Linux不受恶意软件的侵害。这确实意味着,攻击正确配置的Linux主机比攻击正确配置的Windows主机更加困难。


11
1.实际上,Windows NT开始与OS / 2竞争。一切都在DACL安全模型之上运行,该模型比POSIX权限灵活。2.这里的大多数参数都适用于Win9x时代的操作系统,而不适用于Windows NT。3.实际上,Linux主线的增长比Windows内核快得多。NT内核唯一要做的另一件事就是提供Windowing子系统-无论如何都离安全代码不远。4.大小会影响安全性的主张仅适用于安全代码。添加btrfs到Linux并不会降低安全性。
Billy ONeal 2010年

13

问题的答案取决于您认为“病毒”的种类。

如果您使用正确的病毒定义(即修改现有可执行文件的代码),那么Linux之所以不容易感染病毒,是因为它不是在Linux上传播恶意代码的可行机制。原因是Linux可执行文件很少直接从一台计算机转移到另一台计算机。而是使用程序包管理软件或分发源代码来传输程序。大多数Linux软件都可以从源代码中免费获得,这意味着人们几乎不需要花力气就可以将程序从一台计算机复制到另一台计算机。

如果用“病毒”来表示“蠕虫”,即可以在Internet上复制自身的程序,那么Linux完全无法免受这种攻击。实际上,原始的Internet蠕虫“ Morris Worm ”是使用Sendmail复制的,该程序仍预先安装在许多Linux系统上。几乎所有针对Linux机器的成功攻击都针对易受攻击的面向Internet的应用程序,例如邮件服务器或Web应用程序。

最后,如果您通常指的是恶意代码-通常是“特洛伊木马”,那么保护Linux的主要文化。Linux是很少使用的操作系统,已经限制了它作为目标的价值。但是,当您添加一个事实时,即Linux用户通常非常精明并且具有安全意识,这进一步降低了成功进行攻击的可能性。例如,如果您的攻击计划依靠说服用户下载并运行程序来感染自己,那么说服您的普通Linux用户这样做的可能性要比普通Windows用户大得多。因此,恶意软件作者在选择目标平台时,显然选择了更为有效的目标。


12

Linux有一个专门用于它的怪异社区,即使编写了一些恶意软件,也总有解决方案。


5
如果防病毒公司将目光投向这个平台,那么可以使用相同的怪胎来进行病毒开发。毕竟,病毒和防病毒行业是靠金钱而不是真正的黑客/黑客来推动的。
Mahesh 2010年

@Mahesh啊,我知道这里会有一个阴谋论。(不是说这不是真的,只是说它是什么。)
jnewman 2010年

1
@Josh,哈哈。也许您会觉得这是一个阴谋论,但是为catcom,ePC和许多其他防病毒公司工作的人会给您带来更好的主意。;)
Mahesh 2010年

12

有许多方面有助于此:

  1. 异构环境
    • 有很多不同的口味和许多不同的配置。
    • 即使在相同的分布中,不同可能性的范围也很大。
    • 每个发行版提供多个内核,支持额外的补丁;
    • 每个大公司通常都会推出自己的内核风格。
  2. 对用户的使用方法和强大的权利执行历史
    • 由于面向服务器的开发历史悠久,因此Linux在该领域自然领先。
  3. 病毒无效
    • Linux是全球安装次数最多的系统,但是使用Linux的PC /台式机并不多。
    • 定向时对服务器的攻击效率更高;
    • 由于系统功能有限,通常不值得对嵌入式系统(路由器,电视等)进行攻击。
  4. 病毒创建者当前的关注点与Linux生态系统息息相关
    • 创作者追求最简单的东西。
  5. 在Linux中很难隐藏病毒
    • Linux是一个开放系统,可以公开所有信息,但隐藏起来并不那么容易。
  6. 开源的
    • 尽管Microsoft可能提出相反的说法,但每行代码有数千名审阅者,甚至有能力在几秒钟内修补安全漏洞的人员,肯定会对代码质量和安全性产生积极影响。

3
“ Linux是全球安装最多的系统”?
GeneQ 2010年

@GeneQ当然,它将是什么其他系统?好的,公平地说,我没有考虑用于批量生产嵌入式芯片的那些超级特定的OS系统(是的,有些确实与实际OS一起提供)。
Let_Me_Be 2010年

2
这实际上是不正确的。大多数嵌入式芯片根本不运行任何形式的操作系统。POSIX操作系统通常用于服务器和某些类型的手机,但不适用于诸如汽车和电视机之类的设备,这是小型计算机比台式计算机更常见的惊人统计数据的来源。
Billy ONeal,2010年

5

我认为Linux主要运行开源软件这一事实在这里是一个很大的好处。当任何人都可以阅读代码时,使某人对您的系统执行恶意操作要困难得多。

如果仅从Linux发行版官方软件包存储库安装软件,则可能要比Windows下的安全得多,在Windows下,必须从网络上下载随机的可执行文件和安装程序以获取软件。

当然,人们还有其他方法可以使恶意代码在您的系统上执行,但是我认为无论如何都值得一提。


2
仅仅因为软件是开源的,并不意味着软件本身就具有安全性。开源可以帮助您确定设计是否安全,但是开源并不会做任何事情来独自提高安全性。
Billy ONeal 2010年

+1是的,当然,不能纯粹因为开放源代码而确保软件的安全,但是让许多人能够仔细检查代码肯定会有所帮助。另一方面,我想说专有软件本质上不安全的,因为开发人员很容易在用户不知情的情况下将恶意软件包含在他们的软件中。
雅各布·斯坦利

5

主要原因是Linux怪胎没有制定丰富的目标。

有组织犯罪针对的是那些购买带有台式机的简单系统的人,他们的所有应用程序已经安装并且众所周知。目前,绝大多数此类人都在使用Windows,这使Windows成为了更加有利可图的目标。

如果有足够的资金来追求Linux,我相信今天每天产生成千上万的新病毒变种和虚拟网站的巨大努力很快也会使Linux屈服。并且由于Linux是开源的,黑客甚至不需要反编译任何东西。

对于每个聪明的程序员来说,都有一个聪明的程序员,只有一个是海盗...


3
我有点不同意这一点。早在90年代,Windows在Mac上的病毒数量就存在巨大差异,但目前尚无从病毒中赚钱的机会。这可能存在,但作为一个主要的原因,这是无效的。
Rich Homolka

@Rich Homolka:据统计,Windows没有比其他操作系统更广为人知的漏洞。从逻辑上讲,唯一剩下的区别就是黑客没有集中精力。
harrymc

2
我明白你的观点了,但我不同意你的结论。关于(早期)Outlook病毒的可怕之处在于Outlook的工作方式完全与Microsoft设计的一样。在该术语的正常意义上,没有“脆弱性”。该设计只是一种有效的病毒传播器。
Rich Homolka 2010年

1
@Rich Homolka:您对过去是正确的,还可以列出ActiveX,BHO,Web DAV和Microsoft的其他愚蠢行为。但是,经过几年的努力,如今的情况已大大改善,以至于安全性可与Linux相提并论。当今,大多数攻击都是面向浏览器的,需要在所有主要浏览器中进行修补。对路由器的新攻击实际上是Linux漏洞。
harrymc

5
  • 多用户,多任务操作系统
  • 专为生活在网络世界中而建(为方便起见,没有开放RFC端口)
  • 没有ActiveX(污染的好载体)之类的东西
  • 配置文件中的数据与代码之间也存在很好的分离
  • 借助中央存储库,所有应用程序和OS程序都是最新的
  • 没有动机访问未知站点并从那里下载软件
  • 当有问题要修补时会发生更新,而不是“黑色星期四”
  • 文件扩展名对OS并不意味着任何东西
  • 没有隐藏的混乱,像注册表
  • 由于特权分离-即使您得到了“某物”,重启后也很难幸免(按照病毒的定义)

使应用程序(无论是恶意的还是其他方式)在Linux中“幸免重启”是微不足道的。如果您拥有root用户,则可以插入模块,修改内核并添加或修改init脚本。地狱,即使有人只是危及您的用户帐户他们可以添加一些在〜/ .bashrc,将执行每次登录的时间。

这很简单,但是您说“如果”,对吧?祝你好运与
喷气

您说过“即使您得到了“东西”,(很难)在重启后也很难幸免”,这意味着您已经掌握了它。然后你已经搞砸了。游戏结束。

是的,例如劫持的Flash插件(Adobe所有人),是的,除非您以root用户身份浏览,否则游戏还没有结束
喷射

3

越来越多的人对计算机(或从Windows迁移到计算机)对Ubuntu,LinuxMint或Fedora等现代发行版不了解很多。

他们将阅读任何指南或操作方法,并愉快地下载任何脚本或程序并以root或sudo的身份运行。这些很容易成为特洛伊木马的目标。实际上,除非您限制用户可以使用其计算机执行的操作,否则我认为桌面安全性很困难。


2

恶意软件作者希望有更大的目标市场。运行Mac或Windows的人多于Linux。这就像建立一个网站-您要先确保它能在主要浏览器上正常运行,然后再转到不受欢迎的浏览器上。


对于Linux的许多不同发行版,我相信@BloodPhilia也有很好的观点。开发能够有效地适应自身并在许多不同的Linux发行版中传播的恶意软件将非常困难/耗时。
约书亚

Linux是Linux。相同的内核,相同的核心库。恶意代码与分发无关。找到一种实际的传播方式可能会更加困难,因为如果一个项目遭到入侵,并且恶意代码被添加到最终用户使用的程序包中,则只会影响该分布。像叉子炸弹这样简单的事情将使大多数Linux发行版崩溃。perl -e 'while(1){fork();}'

2

我认为人们在Linux / Windows比较中经常忽略的一件事是用户,他们是谁以及他们的思维,行为和反应方式。您可能会发现有趣的论文《计算机安全的民间模型》

几乎没有预装Linux。必然地,这意味着(几乎)所有安装都是由选择安装的,这是由那些愿意选择Linux而不是其他东西的人,以及至少知道使用该安装程序的人安装的。使用计算机之前对计算机的最低知识进行筛选会有所帮助。

相比之下,Windows是大多数购买的计算机上的默认安装。您可以拥有零技能并购买Windows计算机,然后将其连接到Internet,却对病毒,蠕虫,特洛伊木马等一无所知,并很快成为僵尸。

我还想说我不是在“责备受害者”。计算机是复杂的无限状态机。安全很难。但是设计也很重要。Mac OS X实际上没有任何引人注目的安全功能,使其比Windows更安全。它还预先安装在系统上,这意味着任何人都可以购买Mac,无论其技术水平如何,都可以运行它。但是它是作为系统设计的,具有用户如何思考以及如何与系统交互的想法。这不减少安全漏洞,而是减少用户允许它们被利用的可能性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.