可能的重复:
开源与闭源系统
几乎所有在 Windows 上长大的人都一定有过 Linux比 Windows更安全的概念(我曾经有过) ——原因之一是您不必担心在 Linux 上使用防病毒软件!
这个概念的基础是什么?它在多大程度上是真实的?
这与 Linux 的开源特性有关吗?它的社区支持?它的底层架构(以及与 Windows 的区别)?
可能的重复:
开源与闭源系统
几乎所有在 Windows 上长大的人都一定有过 Linux比 Windows更安全的概念(我曾经有过) ——原因之一是您不必担心在 Linux 上使用防病毒软件!
这个概念的基础是什么?它在多大程度上是真实的?
这与 Linux 的开源特性有关吗?它的社区支持?它的底层架构(以及与 Windows 的区别)?
我将在这里提出一些不好的想法:
1) 由于市场份额较小,Linux 更安全。
不是在服务器市场,公共机器整天被机器人、病毒、黑客等猛烈抨击:
http://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Servers
2) Windows 在最近的版本中更加安全。
至少在内核级别,您会看到更多关于 Windows 中远程执行漏洞和权限提升的 CVE 报告,更多针对 Linux 中多用户环境的本地 DoS 攻击,您还会在 Windows 上找到更多关键的 CVE(我有一堆来自 CVE 数据库的统计细分,但我找不到我几个月前发布的那个帖子,太令人沮丧了!谷歌没有帮助我找到它......)。
如您所见,Server 2008的 CVE 严重性加权平均值要高得多:
http://www.cvedetails.com/top-50-product-cvssscore-distribution.php(另外,1.2 天内的所有 Linux 漏洞与 2008 年过去 5 年的开发相比!)
当然,您使用 Ubuntu 之类的东西运行,它带有一堆软件和在其之上的预配置,它们是在其上运行的软件的心血来潮。
我对这个问题的看法:Linux 是围绕大量 Unix 概念构建的,40年的软件开发和人们将这些盒子打死,主要是通过 Unix 的试炼来保证它的安全,这非常有帮助,吸取了很多教训并直接应用于Linux。
这与 Linux 的开源特性有关吗?
这在很大程度上与此有关,至少与处理大量CVE 的速度有关。这也允许发现和修复许多较小的问题(主要是由于它的流行,因为没有流行的开源意味着很少关注代码并且没有兴趣修复)。
它的底层架构(以及与 Windows 的区别)?
围绕多用户环境构建有很大帮助,这些系统的构建是为了同时拥有大量人员,并且任何用户都不应该能够打断另一个用户。
正当理由:
此外,您可能会争辩说 Linux 通常具有更安全的设计(这可能不再那么真实,因为其他操作系统已经赶上了),这有点值得商榷。
su
/ sudo
,在旧版本的 Windows 中并不存在。ssh
. 您通过 ssh 与另一台远程计算机的标准连接非常方便且功能强大,在安全性方面远远优于任何 Windows 远程身份验证。每当您连接到一台 ssh 机器时,您都会以加密方式检查另一台机器的主机密钥是否与之前使用的密钥相比没有改变;您可以使用您的 ssh 私钥来响应质询令牌,而不会让窃听者使用重放攻击或键盘记录器看到您的密码。然后所有流量在两台机器之间加密发送;此外,在 Linux 机器上设置也很简单。无效的原因:
我怀疑 Linux 上的病毒/恶意软件情况几乎是“正常”的情况,而 Windows 上的病毒/恶意软件情况是一个统计怪胎,更像是“龙王”而不是黑天鹅。
Windows 有一组不同寻常的巴洛克式 API,Win32、NT 本机 API,不断地不断,并且它们之间存在一些问题,例如 Win32 基本上是 ASCII 接口,而 NT 本机是 Unicode。这至少促进了恶意软件。作为一个洛可可细节的例子,想想在任何目录中工作的神奇设备文件名、AUX、CON、LP。
Windows 原生 API 从来没有真正被记录过,这种缺乏文档会流向其他事情,例如:可执行文件的文件扩展名集是什么?为什么文件名决定文件是否可执行?例如,NIMDA 蠕虫不是通过“.eml”文件的一些问题传播的。当时没有人知道 .eml 文件是可执行的。
Windows 没有特权分离的传统,实际上它有一个单一的、root 用户的传统。许多应用程序仍然假设这一点。Windows 没有将数据与可执行文件分离的传统。我为您提供嵌入在 .doc 文件中的 Word 宏,作为历史上导致病毒问题的未分离数据和指令的示例。
Linux 至少有与上述所有点相反的传统:温和有效的自主访问控制,简单到可以在日常基础上应用,但又足够全面,可以阻止传统的文件类型病毒。系统调用接口只是适度复杂,并且由于源代码是免费的,因此存在多个文档来源。可执行文件通常位于“bin”目录中,而数据位于另一个目录中。每个可执行文件都有自己的配置文件,而不是共享大型注册表。数据文件位于每个用户的目录中,几乎从不包含 Word 等数据文件包含的那种全能宏。
此外,“linux”并不像“Windows”那样真正存在。存在数百个发行版,每个发行版都自定义了低级细节的几乎每个方面。不同的编译器版本,不同的 linux 内核,一些全模块化,一些没有模块。从内核到电子邮件客户端,几乎系统的每个软件方面都是如此。“Windows”用户普遍使用 Outlook 电子邮件客户端,而 Linux 用户使用数百个不同的客户端,每个客户端都有数十个版本。任何给定软件的任何给定版本都没有用户群:用户群不仅支离破碎,而且已经破碎。这使得在合适数量的主机上找到漏洞或编写可在足够多的软件实例上运行的漏洞利用变得更加困难。
恕我直言,有3个主要原因:
撇开第一点不谈,Linux 本质上是否比 MSWindows 更安全是有争议的(恕我直言,但这是一个相当冗长和无聊的论点)。
鉴于 MSWindows 现在比以前拥有更好的权限分离,有趣的是,有一个特定的 Linux 发行版具有很强的市场渗透率,被无产阶级使用,它有一种非常不寻常的权限分离方法——这吸引了大量的恶意软件开发工作 - Android。
虽然我不建议不要在 MSWindows 机器上运行防病毒和防火墙,但到目前为止,保持计算机清洁的最重要的事情是正确配置它并与供应商提供的补丁保持同步。