【.com速译】如果你自己管理服务器,迟早会遇到这样的问题:你不得不重启操作系统,但服务器正在提供一项你不能中断的重要服务。但是为什么要重启?运行apt-getupgrade命令后,一切似乎都很顺利和正常。然而,一切都不能在表面上看到。即使系统在每次升级后继续运行而无需像Windows那样强制重启,它仍可能需要重启。例如,当发现系统核心(kernel)存在漏洞时,将补丁以新软件包的形式推送到服务器。安装打过补丁的内核时,一些文件会写入磁盘,但旧内核仍然处于控制之中,因为它是加载到内存中的内容。这意味着您的服务器仍然容易受到先前发现的安全漏洞的攻击。如果不重新启动操作系统,则无法重新加载其他进程、守护进程和服务。然而,内核位于系统的核心,只能在下次启动时重新加载。UbuntuLivepatch可以解决这个问题,让您无需重启即可修复内核安全漏洞。这样,您可以在不影响安全性的情况下避免或延迟重启数周或数月。实时修补背后的核心思想很简单:当函数存在漏洞时,重写函数,消除漏洞,并将新函数加载到内存中。调用此函数时,不是在内核中运行代码,而是重定向调用以使用重写的代码。然而,实现和技术细节并不是那么简单。如何在Ubuntu上安装Livepatch?转到此页面并创建您的UbuntuOne帐户。(如果您已有帐户,只需登录即可。)查看您的电子邮件并单击帐户确认链接。接下来,访问CanonicalLivepatch服务页面(https://auth.livepatch.canonical.com/)。选择您是“Ubuntu用户”,然后单击按钮生成令牌。下一页将向您展示在服务器上输入的确切命令。在第一个命令后,输入:sudosnapinstallcanonical-livepatch并等待几秒钟,直到安装snap包。之后,您将得到类似于下图的结果。最后,使用Canonical页面上的最后一个命令:sudocanonical-livepatchenable#PASTE_YOUR_TOKEN_HERE,该服务将变为活动状态,并在必要时自动将安全补丁应用到您的内核,无需您输入。如有必要,安装Snap守护程序在极少数情况下,上面的第一个命令可能会失败并显示以下错误消息:-bash:/usr/bin/snap:没有这样的文件或目录。在这种情况下,这意味着您的服务器提供商拥有默认不包含snap守护程序服务的Ubuntu操作系统映像。使用此命令安装它:sudoaptupdate&&sudoaptinstallsnapd现在再次运行以上两个命令。更新服务器Livepatch将对内核应用所有必要的安全更新。但是,您仍然应该使用以下命令定期升级系统的其余部分:sudoaptupdate&&sudoaptupgrade。如果可能,您应该每周或更频繁地进行一次。重要的系统包可能会提示您需要重新启动才能使最新的安全修复生效。这些通常是从容重启,这意味着在此过程中不会中断任何服务。就像这里一样,SSH守护进程在不中断活动SSH会话的情况下重新启动。在其他情况下,您可以自行重启服务以确保新的修补代码已重新加载并且安全修复已生效。例如,如果你注意到nginx包已经升级,你可以运行:systemctlrestartnginx.service来重新加载nginx守护进程到内存中。否则,即使升级了软件包,它仍可能使用易受攻击的遗留代码运行,使服务器面临已知攻击的风险。一些包升级会为你做这件事,但其他人不会。这就是为什么要习惯注意“aptupgrade”的作用,必要时重新启动一些服务。您还可以检查日志以查看这是否已自动完成。结论如您所见,Canonical使在服务器上执行此操作变得非常容易。至于内核,你不需要做任何维护工作。您只需不时运行canonical-livepatchstatus进行检查。原标题:如何使用UbuntuLivepatch避免服务器重启,作者:AlexandruAndrei
