为什么 Ubuntu 安全启动对于保护您的计算机至关重要

Why Ubuntu Secure Boot is Essential for Protecting Your Computer

引言

随着我们对技术的依赖日益增长,保护系统免受未经授权的访问和恶意攻击的安全措施的需求也随之增长。一个关键的关注领域是系统的启动过程,这是一个脆弱的阶段,恶意软件、rootkit 和其他威胁可能会渗透并危害整个操作系统。这就是安全启动(UEFI(统一可扩展固件接口)的一个功能)发挥作用的地方,它提供了一种防御机制,防止在启动过程中加载未经授权的软件。

Ubuntu 是最广泛使用的 Linux 发行版之一,它将安全启动作为其保护用户系统免受威胁的策略的一部分。虽然安全启动因其对加密签名的依赖而在开源社区中引发了一些争议,但其在确保系统完整性方面的价值是不可否认的。在本文中,我们将探讨什么是安全启动,Ubuntu 如何实现它,以及它在增强系统安全性方面的作用。

了解安全启动

什么是安全启动?

安全启动是由 PC 行业成员开发的安全标准,旨在确保设备仅使用制造商信任的软件启动。它是 UEFI 固件的一个功能,UEFI 固件在现代系统中已在很大程度上取代了传统的 BIOS。安全启动的根本目的是防止在启动过程中执行未经授权的代码(例如 bootkit 和 rootkit),否则这些代码可能会在底层危害操作系统。

通过要求启动过程中涉及的每件软件都使用受信任的证书签名,安全启动确保只有经过身份验证和验证的代码才能运行。如果检测到不受信任或未签名的引导加载程序或内核,启动过程将停止,以防止加载任何恶意软件。

安全启动的工作原理

安全启动的核心是通过在 UEFI 固件中维护受信任的密钥和签名数据库来运行。当系统通电时,UEFI 会根据这些受信任的密钥验证引导加载程序(通常在 Linux 系统中为 GRUB)的数字签名。如果引导加载程序的签名与已知的受信任密钥匹配,UEFI 将继续加载引导加载程序,然后引导加载程序继续加载操作系统内核。此链中的每个组件都必须具有有效的加密签名;否则,启动过程将停止。

如果系统启用了安全启动,它还会验证内核和模块的完整性。这增加了另一层安全性,确保不仅引导加载程序,而且操作系统组件也是安全的。

安全启动与传统启动

在安全启动之前,系统使用称为传统启动的启动过程,该过程不执行任何签名验证。传统启动只是加载它找到的任何引导加载程序,无论是合法的还是恶意的。传统启动中缺乏验证使系统容易受到 rootkit 的攻击,rootkit 可能会嵌入到引导加载程序中并获得对系统的持久控制。

相比之下,安全启动提供了一种更安全的方法,它需要对引导加载程序和内核进行加密验证,从而显著降低了底层恶意软件的风险。

Ubuntu 的安全启动实现

为什么 Ubuntu 采用安全启动

随着安全启动成为大多数现代硬件(尤其是在运行 Windows 的机器上)的标准功能,像 Ubuntu 这样的 Linux 发行版面临一个选择:要么找到一种方法来遵守安全启动,要么冒着被硬件制造商抛弃的风险。此外,随着越来越多的基于 Linux 的系统被部署在企业环境中,围绕启动时攻击的安全问题变得越来越紧迫。Ubuntu 采用安全启动不仅是为了确保与现代硬件的兼容性,也是为了通过防止未经授权的软件在启动时加载来增强用户系统的安全性。

Ubuntu 如何利用安全启动

Ubuntu 使用安全启动对其引导加载程序 (GRUB) 和内核进行签名,确保只有授权和受信任的软件才能在启动期间运行。这意味着当用户安装或更新 Ubuntu 时,系统会检查引导加载程序和内核是否由 UEFI 固件信任的密钥签名。

Ubuntu 与 Microsoft 的第三方 UEFI 签名服务合作,以确保其引导加载程序受到绝大多数硬件的信任。虽然 Linux 发行版依赖 Microsoft 服务似乎有悖常理,但这是确保 Ubuntu 与最广泛的启用 UEFI 的设备兼容的实用解决方案。

Ubuntu 的密钥管理

安全启动的关键部分是管理用于验证引导加载程序和内核的加密密钥。在 Ubuntu 中,受信任的密钥存储在 UEFI 固件中,这些密钥用于验证系统启动组件的签名。Ubuntu 依赖于一小部分受信任的密钥,包括它自己的密钥和 Microsoft UEFI 第三方证书颁发机构密钥。这些密钥的使用确保了 Ubuntu 系统的安全,同时保持了与 UEFI 硬件的兼容性。

在 Ubuntu 中使用安全启动的好处

防止 Rootkit 和 Bootkit

安全启动最显著的好处之一是它能够防止安装 rootkit 和 bootkit,这两种恶意软件会感染引导加载程序或内核,即使在重新安装操作系统后也可能持续存在。通过验证引导加载程序和内核的完整性,安全启动确保这些类型的恶意软件无法在启动期间运行,从而保护系统免受底层攻击。

确保系统完整性

安全启动不仅可以防御外部威胁,还可以确保系统本身的完整性。如果恶意行为者获得对系统的访问权限并尝试修改引导加载程序或内核,安全启动将检测到未经授权的更改并阻止系统启动。这使得攻击者更难在系统上持久存在,因为对关键启动组件的任何修改都将被标记和阻止。

启用企业安全

许多企业要求系统符合严格的安全标准,尤其是在保护敏感数据方面。安全启动通过确保只有受信任的、签名的软件才能在启动过程中运行,在满足这些标准方面发挥着至关重要的作用。在安全至上的企业环境中,安全启动有助于在系统之间维护一致且安全的基线。

围绕安全启动的挑战和争议

与开源和自定义内核的兼容性

围绕安全启动的主要争议之一,尤其是在 Linux 社区中,是对于想要运行自定义内核或未签名模块的用户来说,安全启动可能会造成的困难。由于安全启动要求所有启动组件都必须签名,因此编译自己的内核或安装未签名的第三方驱动程序的用户可能会发现他们的系统在启用安全启动的情况下无法启动。

Ubuntu 通过允许用户将他们自己的机器所有者密钥 (MOK) 注册到 UEFI 固件中来解决这一挑战。这允许用户对他们自己的内核和模块进行签名,使他们能够灵活地运行自定义软件,同时保持安全启动的安全优势。

双启动问题

双启动 Ubuntu 和 Windows 的用户可能会遇到安全启动问题。Windows 也使用安全启动,它可能拥有自己的一组与 Ubuntu 不同的受信任密钥。如果为两个操作系统都启用了安全启动,则可能会在启动过程中导致冲突。

为了缓解这种情况,许多用户选择在双启动时禁用安全启动。但是,Ubuntu 也提供了关于配置 UEFI 的指南,以便两个操作系统都可以在启用安全启动的情况下共存。

吊销和密钥管理问题

如果密钥被吊销(无论是由于安全漏洞还是证书过期),依赖于该密钥的系统可能会启动失败。Ubuntu 提供了管理吊销和密钥注册的工具,以最大限度地减少此类情况下的中断。但是,有效管理这些密钥需要一定的技术知识,这对于经验不足的用户来说可能具有挑战性。

如何在 Ubuntu 上启用/禁用安全启动

检查是否启用安全启动

用户可以轻松检查他们的系统上是否启用了安全启动。在终端中,运行命令

mokutil --sb-state

将显示当前是否启用或禁用了安全启动

启用安全启动

对于禁用安全启动的系统,启用它需要访问 UEFI 设置。这通常通过在启动期间按 F2 或 Del 等键进入 UEFI/BIOS 菜单来完成。在设置中,用户可以导航到“安全”或“启动”部分并启用安全启动。

禁用安全启动

某些用户可能需要禁用安全启动才能安装未签名的驱动程序或自定义内核。这也可以通过 UEFI 设置完成。但是,重要的是要了解禁用安全启动的安全隐患,因为这可能会使系统在启动过程中面临潜在威胁。

高级用例中的安全启动

用于自定义内核的安全启动

对于编译自己的内核的高级用户,Ubuntu 允许使用他们自己的密钥对这些自定义内核进行签名。此过程涉及生成密钥对、对内核进行签名以及使用 MOK 将密钥注册到 UEFI 固件中。虽然这增加了一些管理自定义内核的复杂性,但它允许用户充分利用安全启动,而不会影响灵活性。

管理安全启动密钥 (MOK - 机器所有者密钥)

MOK 系统为用户提供了一种管理他们自己的安全启动密钥的方法。这允许开发人员和高级用户对他们自己的内核模块或驱动程序进行签名,将他们的密钥注册到 UEFI 固件中,并确保他们的自定义代码可以在启用安全启动的系统上运行。Ubuntu 提供了诸如 mokutil 之类的工具来管理 MOK 密钥,从而尽可能简化用户的流程。

Ubuntu 上安全启动的未来

Ubuntu 安全启动的改进

Ubuntu 在每个新版本中都在不断改进其对安全启动的支持。即将发布的版本预计将包括用于密钥管理的增强工具、对自定义内核签名的更好支持以及与 UEFI 标准的改进集成。随着越来越多的用户和企业采用 Ubuntu,改进安全启动的重点将仍然是优先事项。

安全启动在 Ubuntu 安全路线图中的作用

随着安全威胁的演变,Ubuntu 的安全启动实现将继续在其更广泛的安全策略中发挥关键作用。通过确保系统只能启动受信任的软件,安全启动有助于防御一系列攻击,从恶意软件感染到未经授权的访问。Ubuntu 致力于在安全性和灵活性之间保持平衡,这将推动安全启动的未来发展。

结论

安全启动是保护 Ubuntu 系统免受未经授权的访问并确保系统完整性的重要功能。虽然对于需要运行自定义软件的高级用户来说,它可能会带来挑战,但安全启动的好处远远超过了潜在的不便。通过防止诸如 rootkit 和 bootkit 之类的底层攻击,安全启动确保 Ubuntu 仍然是个人和企业使用的安全可靠的操作系统。随着 Ubuntu 的不断发展,安全启动仍将是其在各种设备上提供安全计算环境的任务中的关键组成部分。

George Whittaker 是 Linux Journal 的编辑,也是一位定期撰稿人。George 撰写技术文章已有二十年,并且是 Linux 用户超过 15 年。在空闲时间,他喜欢编程、阅读和游戏。

加载 Disqus 评论