对运维人员来说,内核安全更新一直是个两难问题:不打补丁,漏洞可能被利用;打了补丁,就必须重启服务器,业务要中断,凌晨加班做维护成了家常便饭。Canonical针对Ubuntu推出的Livepatch实时内核补丁服务,让内核在不停机、不重启的情况下完成安全修复,对数据库、Web服务等长期运行的进程几乎零影响。本文将从原理、安装、使用和注意事项几个方面,全面介绍这项实用的技术。

Livepatch是什么,它解决什么问题
Livepatch是Canonical提供的一项内核热补丁服务,全称是Canonical Livepatch Service。它的核心能力是:在Linux内核持续运行的状态下,将安全补丁的代码动态注入内核内存,替换掉存在漏洞的函数,从而消除安全隐患。整个过程不需要重启系统,也不需要停止任何用户态服务。
要知道为什么这个能力重要,得先理解传统内核更新的流程。通常执行apt upgrade安装新内核后,新内核只是躺在磁盘上,必须重启机器、引导进入新内核后补丁才真正生效。对于普通桌面机器,重启几十秒就完事,但对于承载核心业务的生产服务器,一次重启意味着服务中断、连接断开、可能还需要人工值守,运维成本很高。如果服务器做了高可用集群,滚动重启还牵扯流量切换,操作复杂且风险不小。
Livepatch的价值就在于把这些麻烦全部省掉。Canonical会为高危的内核CVE漏洞(通常是评分较高的安全漏洞)发布对应的livepatch包,服务器上的livepatch客户端自动拉取并应用,几秒内完成修复,业务方完全无感知。需要注意的是,Livepatch定位是应急止损手段,并不是彻底替代正常的内核升级,常规的内核更新维护依然要定期执行。
Livepatch的工作原理:ftrace与函数替换
Livepatch的技术基础是Linux内核的livepatch框架(自4.0版本起合入主线),而要理解livepatch,就要先说ftrace。ftrace是内核内置的跟踪机制,可以在函数入口插入探针。livepatch正是利用ftrace的这条路径:当需要打补丁时,内核把目标函数的入口地址重定向到补丁函数上,之后所有对该函数的调用都会先进入新的补丁函数,执行完修复逻辑后,可以选择继续调用原函数(部分替换),或者完全由新函数接管(整体替换)。
举个具体例子:假设内核中某个函数sys_mount存在权限校验漏洞,攻击者可以利用它提权。Canonical的工程师会编写一个修补版的函数,编译成独立的内核模块,这个模块里记录着原函数和新函数的对应关系。当模块被加载时,livepatch框架通过ftrace把原函数入口挂钩到新函数,漏洞路径立即被切断。由于只是修改了函数调用的入口指向,正在内核态执行的旧代码不会被破坏,系统状态保持完整。
这种函数级别的替换也带来一些限制。如果漏洞涉及的代码改动范围很大,比如修改了数据结构布局、改变了函数调用约定,热补丁就很难安全实现。所以并非所有内核漏洞都有对应的livepatch,Canonical主要针对高危且可局部修复的漏洞提供热补丁支持,覆盖范围以官方发布的补丁列表为准。
如何安装和启用Livepatch服务
启用Livepatch的第一步是获取令牌。访问Canonical Livepatch的官网(ubuntu.com/security/livepatch),使用Ubuntu One账号登录后,可以申请一个Livepatch token。免费额度对个人用户非常友好:每个账号最多可以在5台机器上免费使用,对绝大多数小团队和个人服务器来说完全够用。
拿到token后,在服务器上执行安装和启用即可。整个操作只需要两条命令:先安装snap版本的客户端,再执行enable并附上token。启用成功后,可以用status子命令查看当前状态,输出信息会显示内核版本、机器ID以及每个补丁的状态(applied表示已应用)。建议把客户端加入定时刷新,snap版本默认会自动更新补丁,无需额外配置定时任务。
日常运维中常用的管理命令包括:查看补丁应用状态、手动触发补丁刷新、查看支持的内核版本等。如果发现补丁状态一直是apply失败,首先要检查内核版本是否在Livepatch支持列表内,其次是查看系统日志中是否有模块加载报错。HWE内核、GA内核的支持节奏不同,升级内核后记得确认新版内核是否已被Livepatch覆盖。
使用Livepatch的注意事项与常见问题
第一点要明确:Livepatch不等于永久免重启。热补丁解决的是安全修复的紧迫性问题,但内核中累积的补丁越来越多,且一些非安全类的内核改动无法通过热补丁完成,所以定期的维护窗口和计划内重启仍然必要。合理的做法是把高危漏洞的应急响应交给Livepatch,把常规内核升级安排在业务低峰期。
第二点是企业环境的使用。超过5台机器就需要购买Ubuntu Pro订阅(Ubuntu Advantage),订阅按机器数量计费,除了Livepatch外还附带扩展安全维护、更长周期的支持等服务。对于金融、电商等对停机敏感的行业,这笔投入通常远低于一次意外停机的损失。企业版还提供管理控制台,可以集中查看多台服务器的补丁状态。
第三点是一些实际限制:Livepatch只支持64位的Ubuntu LTS版本内核;KVM虚拟机、物理机、云主机都可以用,但自定义编译的内核不在支持范围;如果系统使用了DKMS模块且补丁涉及相关内核接口,可能存在兼容性风险。另外,第三方提供的类似方案(如Oracle的Ksplice、红帽的kpatch)思路相近,但彼此不通用,选择时要与发行版匹配。只要理解了它应急止损的定位,Livepatch就能成为服务器安全运维工具箱里非常趁手的一件武器。
Livepatch内核热补丁Ubuntu内核更新修改时间:2026-09-17 00:42:36