Linux 或 Windows - 安全问题

信息安全 视窗 linux
2021-09-01 14:38:55

可能的重复:
开源与闭源系统

几乎所有在 Windows 上长大的人都一定有过 Linux比 Windows更安全的概念(我曾经有过) ——原因之一是您不必担心在 Linux 上使用防病毒软件!

这个概念的基础是什么?它在多大程度上是真实的?

这与 Linux 的开源特性有关吗?它的社区支持?它的底层架构(以及与 Windows 的区别)?

4个回答

我将在这里提出一些不好的想法:

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 的区别)?

围绕多用户环境构建有很大帮助,这些系统的构建是为了同时拥有大量人员,并且任何用户都不应该能够打断另一个用户。

正当理由:

  1. Linux 中较小的用户群使桌面 Linux 成为不那么有吸引力的目标。如果只有 0.1% 的计算机运行 Ubuntu 10.04,而您的特洛伊木马只能在该特定版本的 Linux 上运行,那么它可能永远无法捕获。如果你的木马只在 Windows XP 上运行,你仍然可以攻击大约 25% 的市场。
  2. 通常(并非总是)更有知识和更注重安全的用户群。也就是说,像 Ubuntu 这样的操作系统让 Linux 更易于访问,你会发现有人在上面做蠢事。

此外,您可能会争辩说 Linux 通常具有更安全的设计(这可能不再那么真实,因为其他操作系统已经赶上了),这有点值得商榷。

  1. 良好的权限分离和访问控制su/ sudo,在旧版本的 Windows 中并不存在。
  2. 假设您需要一些未预装在您的操作系统中的新软件(图像编辑器、LaTeX 或 Python 等)。在 Linux 中,99% 的时间您使用包管理器来自动下载和安装经过信任链验证的加密签名软件。它也会自动将其用于更新(因此很容易使系统范围内的所有软件保持最新,快速修补安全漏洞)。在 Windows 中,大多数时候当我需要安装新东西时,我必须在网上搜索它,从一些随机的 http 网站下载并安装,这些网站可能会加载带有间谍软件/膨胀软件/特洛伊木马的软件,否则我可能会成为主题到 MITM 攻击并下载/安装一些病毒,每个应用程序都有自己的(不同的)安装程序/自动更新程序。(也就是说,我发现人们太信任 PPA,
  3. ssh. 您通过 ssh 与另一台远程计算机的标准连接非常方便且功能强大,在安全性方面远远优于任何 Windows 远程身份验证。每当您连接到一台 ssh 机器时,您都会以加密方式检查另一台机器的主机密钥是否与之前使用的密钥相比没有改变;您可以使用您的 ssh 私钥来响应质询令牌,而不会让窃听者使用重放攻击或键盘记录器看到您的密码。然后所有流量在两台机器之间加密发送;此外,在 Linux 机器上设置也很简单。
  4. 各种免费的Linux安全工具:SELinux、AppArmor、wireshark、iptables(或者像ufw这样的包装器)、ssh、cron、top(真的是htop)、fail2ban、tripwire、GPG、OpenSSL、md5sum/sha256sum等。易于设置脚本,扫描日志文件并通过电子邮件发送警报,以及从命令行执行所有操作等。当然,其中大多数(全部?)可能具有 Windows 等价物,但它们往往不是免费的,或者在两者之间变化很大版本。设置一个 cronjob 基本上是为了自动化一些任务,这与过去 20 年几乎相同;而在 Windows 中设置自动化任务将在操作系统之间产生巨大的变化。

无效的原因:

  1. Linus 定律:“只要有足够的眼球,所有的错误都是浅的”,因此开源软件比闭源软件更安全。我不觉得这个论点特别有说服力,因为在开源东西(例如, Debian OpenSSL中已经发现了数月/数年的重大安全漏洞。更糟糕的是,攻击者可以阅读源代码、查找错误(甚至尝试将伪装的错误引入代码库))。然而,我也不相信闭源软件本质上更安全——人们仍然会犯错误,而且你可以很容易地花钱请人在专有代码库中引入漏洞(而且由于眼球较少,可能无法注意到);显然,安全漏洞和后门通常确实存在于闭源软件中,并且也会受到攻击。(我认为这或多或少是平局。)

我怀疑 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个主要原因:

  • 直到最近,MSWindows 还没有有效的权限分离。
  • Linux 往往被更多技术知识渊博的人使用(他们会对宣称“我爱你”的电子邮件持怀疑态度)
  • Windows 具有更大的市场渗透率。

撇开第一点不谈,Linux 本质上是否比 MSWindows 更安全是有争议的(恕我直言,但这是一个相当冗长和无聊的论点)。

鉴于 MSWindows 现在比以前拥有更好的权限分离,有趣的是,有一个特定的 Linux 发行版具有很强的市场渗透率,被无产阶级使用,它有一种非常不寻常的权限分离方法——这吸引了大量的恶意软件开发工作 - Android。

虽然我不建议不要在 MSWindows 机器上运行防病毒和防火墙,但到目前为止,保持计算机清洁的最重要的事情是正确配置它并与供应商提供的补丁保持同步。