现场修补正在慢慢流行,但不是出于您可能想到的原因。
在本文中,我将解释Linux内核实时修补是什么,它不是什么,有什么服务,谁可以使用它以及为什么。我将展示Livepatch(在Ubuntu上),Kpatch(在Red Hat上)以及另一个在两者上运行的KernelCare的基本安装步骤。
什么是实时补丁?
实时修补是恶魔操作的无辜名称:更新Linux内核而不停止它。
实时修补是一种在不影响服务器停机的情况下将Linux内核更新为最新的关键安全修补程序的方法。在过去的十年中,这种诱人的想法在Linux越来越流行的滑坡中默默无闻。安全,而不是性能或可用性,已经成为内核开发人员的当务之急,因为他们试图将Linux的优势从服务器转移到桌面市场。系统管理员现在将实时修补视为其系统健康的网络安全策略的重要组成部分,而不仅仅是为自己提供便利。
当研究人员发现Linux内核中的错误或其他问题时,宣布它们之后的第一步是对它们进行分类。最重要的内核问题是漏洞。这些是在没有操作员的知情或同意的情况下,某人可能破坏,破坏或渗透Linux系统的方式的发现和描述。其中许多涉及通过利用其程序逻辑中的错误来破坏Linux内核的行为。
漏洞的重要性与它影响的系统数量,复制的容易程度以及发生的情况有关。如果答案是'很多','简单'和'任何',那么内核维护者就会疯狂地寻找解决方案。当它们这样做时,它意味着更新内核。
但是,由于Linux内核的原因,更新也意味着重启。对于个人和业余爱好者来说,这没什么大不了的。但对于企业而言,重启需要规划和协调,这需要时间和金钱。同时,至少在理论上,他们的系统是脆弱的。
实时修补可缩短发布漏洞修复程序与在受影响系统上安装之间的时间。缩小或消除这种差距可降低利用未修补漏洞的风险。
实时修补的优点和缺点是什么?
实时修补仅适用于严重的安全问题。
当开发人员将漏洞追踪到孤立的内核代码片段时,软件补丁可以修复它们而不会影响内核的其他部分。但是,对于影响许多部分的问题,或影响数据结构的部分,不能进行实时修补。
实时修补不能完全消除重启。
实施实时修补策略并不意味着您永远不会再次重启。它确实意味着您可以将其关闭,直到它更方便,并且在此之前,您的系统可以安全地利用已修补的问题。
并非每个内核都支持实时修补。
所有实时修补方法都不同。一些使用核心内核函数,而另一些使用开源和闭源方法的混合。没有通用的多平台解决方案(尽管KernelCare很接近)。
现场打补丁很容易; 制作补丁不是。
任何具有技术知识的人都可以为他们选择的Linux平台构建和安装实时修补软件。源代码和信息是可用的,但它有多容易取决于您拥有哪个平台。
但是,对于所有实时修补方法,修补程序的创建是一个巨大的技术障碍。它需要详细了解内核源代码,其编程模型和约定。即使您可以创建补丁,在尝试安装补丁之前,您有责任对其进行彻底测试。
实时修补不是免费的。
成本一直是Linux非企业核心粉丝群采用的真正障碍。Oracle Ksplice,Red Hat Kpatch,SUSE Kgraft和KernelCare都要求提供不同金额的月度,年度或三年期订阅。之所以提到这个原因:创建补丁并不容易。要了解所涉及的难度,请查看Kpatch补丁编写指南?您将了解为什么公司已成功提供实时补丁作为付费服务。
哪些公司提供实时补丁?
Ksplice是第一个为Linux提供实时补丁的人。他们在2010年推出了商业服务,支持一系列Linux风格。当甲骨文在2011年收购它们时,除了甲骨文自己的Linux之外,其他所有产品都得到了支持。这对红帽和SUSE的其他大公牛来说是一面红旗。每个人都急于创建他们自己的实时补丁解决方案,他们分别在2014年以Kpatch和Kgraft的形式独立发布。不久之后两者都成了商业服务。同样在那一年,KernelCare进入了戒指,填补了Ksplice留下的空间,并取消了对旧内核和其他口味的支持。
现场补丁多少钱?
截至2019年,五家公司提供现场打补丁的商业服务。价格根据地理区域而有所不同 - 显示的是美国,并且按降序排列。
- Oracle的Ksplice for Oracle Linux 5,6和7可订阅Oracle Linux Premier Support,每年起价2299美元。
- SUSE的Live Patching每年2198美元,实时修补服务(699美元)和SUSE Enterprise Linux与优先服务器订阅(1499美元)的总成本。
- Red Hat的红帽企业版Linux 7 kpatch可以高级支持订阅,每年1299美元。
- 适用于Ubuntu 14.04,16.04和18.04 LTS 的Canonical Livepatch服务可免费使用1到3台机器,然后每年225美元可获得4台或更多机器。
- KernelCare 每年45美元。它运行在Ubuntu,Red Hat,Oracle Linux,Debian,CentOS,Amazon Linux 等等。
对于本文的其余部分,我将只考虑三种低到中等成本选项:Canonical,Livepatch,Red Hat Kpatch和KernelCare。
谁需要实时补丁?
根据订阅成本,拥有数百台服务器的公司似乎是Oracle,Red Hat和SUSE的目标。对于企业而言,实时修补的好处是毫无疑问的,因此将服务捆绑在支持合同中是完全合理的。
对于个人而言,实时修补仍然是一个非必要的好奇心,对家庭媒体服务器,宿舍游戏服务器,加密货币挖掘或任何重启动作的情况都很有用。他们开始的好方法是使用Ubuntu 18.04 LTS。对于最多三台机器,实时修补是一个痛苦且无成本的介绍。
对于企业家,中小企业和成长型公司来说,选择的选择较少。他们需要成本和覆盖范围的灵活性,这种解决方案不能将其锁定到特定平台,并且可以随着增长而扩展。对他们来说,KernelCare非常适合。
如何安装Linux内核实时修补?
使用Canonical Livepatch服务实时修补Ubuntu内核
Canonical Livepatch Service适用于14.04,16.04和18.04 LTS的服务器和桌面版本。最简单的尝试方法是在18.04 LTS桌面版上。当您在干净安装后首次重新启动时,Ubuntu对话窗口中的新功能的第二个屏幕为您提供了设置Livepatch的机会。如果您错过了,请打开软件更新程序并转到设置的Updatestab,您可以从中登录以激活它。
在安装之前,您必须注册密钥。执行此操作时,页面将显示这些命令,以便通过终端进行安装。
sudo snap install canonical-livepatch
sudo canonical-livepatch enable <your key>
从现在开始,守护进程将检查关键内核安全修补程序,并默认情况下每60分钟自动安装一次。如果你想修补,这里有一些使用canonical-livepatch命令行工具的例子。
检查状态: canonical-livepatch status
显示所有补丁信息: canonical-livepatch status --verbose
强制立即刷新: sudo canonical-livepatch refresh
更改检查间隔(例如,更改为90分钟): sudo canonical-livepatch config check-interval=90
使用Kpatch实时修补RHEL 7内核
Red Hat的Kpatch还没有用户友好的界面来进行设置。通过一些努力,它适用于Fedora和CentOS,以及一些基于Debian的系统,如Ubuntu和Gentoo(但在这些情况下,您必须编写和测试自己的补丁)。
要在Red Hat Enterprise Linux 7上安装kpatch:
sudo yum install kpatch
Kpatch没有自动化功能。而是使用标准命令行工具yum来检查和安装修补程序。包名称提供关键安全修补程序kpatch-patch。如果您有支持订阅,您可以向Red Hat索取自定义补丁,您可以将其作为.rpm文件获取。两者的安装如下所示。
sudo yum install kpatch-patch # From Red Hat's repositories
sudo yum install kpatch-patch-<version>.el7.<your arch>.rpm # Downloaded custom patch
使用KernelCare实时修补Ubuntu和RHEL7 / CentOS 7 Linux内核
KernelCare使用相同的两行命令在Ubuntu 14.04,16.04和18.04 LTS以及Red Hat Enterprise Linux 7或CentOS 7上进行安装。
在开始之前,获取30天免费试用密钥。
注册页面显示了您的注册密钥以及安装KernelCare所需的这两个命令。
sudo wget -qq -O - https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash
sudo /usr/bin/kcarectl --register <your key>
如果一切正常,您将看到消息服务器已注册。从现在开始,KernelCare守护程序每四个小时检查一次关键的内核安全补丁。如果有任何可用,它将安装它们而无需重新启动,无需进一步干预。
就像canonical-livepatch
,kcarectl实用程序允许您在命令行上执行操作。
- 检查状态:
kcarectl --info
- 显示所有补丁信息:
kcarectl --patch-info
- 强制立即刷新:
sudo kcarectl --auto-update
- 取消注册许可证:
sudo kcarectl --unregister
结论
Linux的实时修补正处于转折点。
虽然不是企业客户的默认选择,但Canonical通过在Ubuntu 18.04 LTS上轻松使用Livepatch Service取得了很大进展。我希望随着用户进入专业领域,随着他们熟悉它们,它的受欢迎程度将会提高。那些能够在各种平台上运行的更具成本效益的实时修补解决方案的人将会发现自己倾向于使用KernelCare。
在任何情况下,商业实时补丁提供的不仅仅是实时补丁的能力,而是访问补丁本身,安全托管,及时交付,测试和验证,并保证在没有任何有害影响的情况下工作。