Linux 拥有数百万行代码和大量设备驱动程序,因此有很多地方可以隐藏活板门和木马。由于理解大型程序需要很长时间,而且软件中总是存在潜在的缺陷,我很难相信 NSA 或 FSB 没有尝试将恶意软件引入 Linux。他们总是在 Windows 和 iOS 中寻找零日漏洞。由于 Linux 可以在包括巡航导弹在内的所有设备上运行,因此这必然是一个问题。
答案1
是的,你所说的攻击(供应链攻击在开源项目上)不仅是可能的,而且经常被恶意行为者尝试(例子)。然而,由于源代码是公开的,恶意代码最终注定会被发现,尤其是对于大型项目。将此与封闭源代码进行比较,在封闭源代码中您无法访问源代码并且被迫隐式信任供应商,您会意识到开源模型通常更安全。
答案2
这个问题虽然很有趣,但包含一些关于“Linux”的相当常见的误解和误解。首先,不存在 Linux 操作系统这样的东西。 Linux 是内核,在这种情况下,这种区别非常重要。
该内核不断发布,无论是主要主要版本还是小补丁版本。一些供应商在不更改其主版本号的情况下修补其存储库内核,这很难做到,如果我担心安全性,我不会使用该方法,因为这样您就添加了第二级可能的错误,首先是原始的 linux内核版本代码库,第二,用于修补发行版存储库中的稳定内核的补丁集。
因此,不存在“linux”这样的东西,即使涉及到 Linux 内核,也会有基于某个时刻所做的某些提交的版本。这些版本可以是长期支持,这意味着目前,Greg Kohn-Hartman 在其支持生命周期内修补这些版本以向后移植安全修复程序等内容,或者发行版已选择一个内核,冻结它,并正在维护该分支,比如说,目前由 IBM 拥有的 Redhat 公司,就其内部文化而言,与不属于另一家公司时相比,这是一个不同的实体。
每当我看到有人问“linux this 或 linux that”时,我都会皱起眉头,因为没有任何实际的东西与这些词相对应,而不是 Windows 10、11 或 OSX 版本 x 或 y 的意义上,或 Android 版本 x 或 y,或 iOS 版本 x 或 y,这些都是众所周知的实体。
假设这个问题是真实存在的,并且安全问题实际上确实是发布者心中最重要的问题,那么我们已经知道以下内容:
- 您没有在访问链中的任何地方运行 Windows,包括服务器。
- 您无法使用 Android、通过电话等访问任何内容。
- 如果我们谈论的是桌面类型的情况,那么您正在使用完全沙盒的浏览器,例如 Chromium,减去谷歌间谍软件。
- 客观地,如果谈论服务器,它没有运行任何 GUI 东西,没有桌面,窗口管理器,没有任何可能引入额外安全漏洞的额外内容。如果是这样,安全显然不是一个优先考虑的问题。
- 正在运行的系统是精简的,并且仅运行您配置的运行内容,并且不包含任何额外的软件包或服务。换句话说,它不是几乎所有发行版的默认安装,除了那些允许基本准系统安装的发行版,例如 Debian Net Install。
如果所有这些都适用,那么我们可能正在考虑相当认真地努力实现安全性,此时,关注 Linux 内核安全功能就开始有意义了,例如正确配置的 SELinux 或其他配置良好的防火墙,如果面临互联网等。
但在开始之前弄清楚这些词的含义非常重要,例如,询问“linux 是否安全”,在这种情况下基本上没有任何意义,例如,假设您正在运行一个已更新的当前内核在每个新版本中,但是您运行的是 Xorg 桌面,其中有一些编写得不好的不安全软件,并且可以通过一些标准的黑客技术(例如简单的缓冲区溢出)从其笼子中弹出,那么安全性就毫无意义了。
如果 SELinux(我个人并不熟悉,但我了解我认为的基本思想)配置正确,那么根据我的理解,可以很好地缓解某些攻击向量。
另一方面,如果您实际上绝对确定安全性确实是您最关心的问题,那么您就会认真考虑 OpenBSD,它是由在安全性方面毫不妥协的人开发的,这就是数字第一,其他一切都是第二位的。顺便说一下,这是一个不错的操作系统,设计得非常好。
由于它受到非常严格的控制,并且具有非常高的编码标准,并且由本领域技术人员进行审查,并且他们根本不允许随机代码或贡献者进入,因此这是真正安全的最佳选择。根据设计,它的攻击面也小得多,因为它不是一个巨大的项目,而且因为它们总是会转储未维护或不可调试的代码,而不是保留它,以避免给某些用户或其他人带来不便。这是安全真正放在第一位的一部分。
对于任何代码库,您都可以引入技巧,特别是如果您随着时间的推移将这些技巧分成明显不相关的提交。我自己在一个旧项目中使用了这个技巧,不是为了邪恶的目的,只是因为我不想让用户知道他们可以以增加失败风险的方式使用它。直到今天,这个伎俩还没有被任何人发现。也非常简单,我使用了该方法,将其拆分为不同的提交,并在代码中明显不同的位置找到使该技巧发挥作用的各个逻辑位。
但话虽如此,做 Linux 的人都非常优秀,他们知道卓越是什么样子,他们遵循 OpenBSD,虽然他们不愿意为企业数据中心用户做出太多妥协,但他们知道这些事情,并且一直积极地修补和修复问题。
因此,如果这不是一个稻草人,我们知道您没有使用 OSX 或 Windows,也没有使用 Android,至少没有使用任何可以访问或处理应该安全的系统的东西。如果情况并非如此,那么这不是一个真正的问题。
非自由软件的本质和本质是你看不到源代码,这意味着你甚至不能问关于 osx 和 windows 的问题,就这样。另外,如果我没记错的话,Windows 最近遭受了一次巨大的数据泄露,并且代码库暴露在地下的破解者手中的时间足够长,以至于它被多次抓取。
令我有些惊讶的是,在安全性和遵循良好的安全实践方面,OpenBSD 实际上给了 OSX 内核(请注意,内核,不是 osx 桌面或程序,可以是任何东西)相当高的分数。然而,这与我个人在与 OSX 交互时所看到的情况并不相符,我发现它是一个草率且非常不健壮的系统,在许多软件领域严重缺乏,这让我对下面的内容没有任何信心封面。不是开源的,所以我们无法检查。
与内核一起运行或在内核中运行的东西越多(额外的模块、驱动程序,你不需要的等等),在内核上运行的东西越多,安全漏洞就越多。
当涉及到 Linux 内核、BSD 内核等时,我认为布局大致是这样的:
内核 > shell、工具、服务器、进程管理等 > 显示 > 桌面 > 桌面程序。基本上,您可以运行一个仅运行服务器的内核,以及一个与其交互的外壳,这将是最安全的。
像 systemd 这样不断增长的 blob 是另一个问题,当您谈论真正的安全性时,这与您高度相关。这有点难以完全跟踪或理解,我认为这是一个重要的风险因素,因为我认为它以 PID 1 运行,但本质上做得太多了。然而,systemd 并不是运行 Linux 所必需的,因此它再次归结为安全优先级,仅运行您需要的内容,并了解为什么安装每个正在运行的东西。
换句话说,我的工作站有一个 / 分区,其中大约有 30 GiB 的数据,其中,可能 1 GiB 是内核,其余的是服务器、程序、桌面、显示管理器等。
这就是大多数人在使用术语“Linux”时所指的内容,这就是为什么这不是一个非常有用的术语。
然而,我倾向于信任使用 Linux 内核的人,而不是任何闭源操作系统,或者具有大型非自由块和 blob 的操作系统,例如非自由的 nvidia 内核驱动程序 blob,甚至是 wifi blob,又名“固件” ”,根据法律要求,它们同样是闭源的,至少在美国是这样。
但除此之外,如果我想把安全性放在第一位,我就运行 OpenBSD,就这样。其次,我正在运行一个运行 Linux 的准系统当前内核服务器,并且只运行它所需的工具,并正确锁定和保护。在我所知的开箱即用的所有操作系统中,只有 OpenBSD 得到了正确的锁定和保护。