什么是 Linux 内核实时补丁?

应用关键安全更新对于保护您的 Linux 服务器免受潜在攻击者的攻击很重要,但它可能会导致停机,这也不是什么好事。实时内核修补可以应用重要的内核更新,而无需使您的服务器脱机。
什么是实时内核补丁?
在实时内核修补之前,系统管理员需要在保持服务器运行或应用安全更新之间做出选择。这显然不理想,因此麻省理工学院的 Jeff Arnold 在 2008 年创建了 KSplice,这是一种可以通过获取二进制差异并将补丁应用到内存中正在运行的内核来应用更新的工具。

这需要为每个更新编写一个自定义补丁,因此它只保留用于需要快速修复的关键安全漏洞,而不是定期的日常更新。但是,当需要出现时,这个简单的解决方案提供了一种在不影响服务器正常运行时间的情况下应用这些修复的方法。
实际上,实时内核修补并没有看起来那么有用。如果您关心服务器的正常运行时间,您可能还希望满足某种 SLA 或让关键服务保持运行。在高可用性网络中,理论上任何单个服务器都应该能够自发燃烧而不影响应用程序的正常运行时间。理想情况下,您应该在负载均衡器后面有两台或更多服务器,如果您有不止一台服务器,它们可以一次更新一台而不会显着影响服务可用性,尽管您可能会在短时间内达到 50% 的负载能力。
考虑到这一点,一旦有新补丁可用,实时内核补丁通常会自动完成。通过启用实时修补,您的系统应该会自动保持最新状态,并且您不必让某人安排可能停机的滚动服务器更新。对于大多数系统管理员来说,这是一个巨大的好处。
实时修补的缺点
实时内核补丁仍然非常复杂——补丁必须由专家为每个系统编写,并且只保留给重要的安全补丁。即使那样,也不能保证不会使您的系统崩溃。 Ubuntu 通过一次缓慢地向几个用户推出补丁来管理这种风险,同时监控崩溃。
实时内核补丁也不能无所不能——它只能应用于内核代码的一小部分和特定部分,不能用于影响多个组件或更改数据结构的任何重大更新。
谁支持实时修补?
不幸的是,最初的 KSplice 程序在 2011 年被 Oracle 收购并集成到 Oracle Linux 后不再开源。
随着 KSplice 走向闭源,Linux 服务器领域的许多其他公司开发了他们自己的版本。由于需要为每个系统定制编写和测试补丁,这使得维护一个单一的开源“Live Kernel Patcher”变得非常困难。
大多数公司将其作为付费服务提供。 KernelCare 是最接近通用解决方案的东西,并且通过付费订阅支持大多数发行版。 Amazon Linux 2 是为数不多的免费提供它的软件之一。 RHEL 有 kpatch。 Oracle Linux 仍然使用 ksplice。
Ubuntu 有 Canonical Livepatch。它最多可免费用于三台机器,之后您需要为每台机器订阅 Ubuntu Advantage。