yum update 只是将新内核文件写入磁盘,必须重启系统才能加载新内核到内存。确认漏洞修复的核心在于比对当前运行版本与官方公告中的修复版本。
先说结论:更新命令执行完成后,必须重启服务器才能使新内核生效,仅靠 yum 命令无法修复正在运行的内核漏洞。
- 先判断:查阅安全公告确认受影响的内核版本范围,确认是否需要重启
- 优先做:执行 sudo yum update 更新内核包并安排业务低峰期重启
- 再验证:重启后使用 uname -r 确认运行版本已达修复版本,排除热补丁干扰
命令速用版
以下是检查内核版本和更新的核心命令,需在终端以 root 权限或 sudo 执行:
# 查看当前正在运行的内核版本
uname -r
# 查看已安装的所有内核包版本
sudo rpm -qa kernel
# 更新内核及相关包
sudo yum update kernel
# 重启系统
sudo reboot如何查询 CVE 修复版本
在更新前,建议确认当前漏洞是否已通过安全公告修复,以及所需的最小内核版本。
1. 使用 yum updateinfo 查询(适用于 RHEL/CentOS 7+)
如果软件源同步了安全信息,可直接查询特定 CVE 对应的 advisories:
sudo yum updateinfo `--cve`=CVE-XXXX-XXXX
# 或查看安全公告详情
sudo yum updateinfo info 2. 查看内核包 changelog
如果已下载内核包,可检查 changelog 中是否包含该 CVE 修复记录:
rpm -q `--changelog` kernel | grep -i "CVE-XXXX-XXXX"3. 查阅官方公告
访问厂商安全门户(如 Red Hat Security Advisories),搜索 CVE 编号获取修复版本要求。
分步处理
按照以下流程操作,确保更新过程可控且可验证:
1. 确认修复版本
结合上述查询方法,找到修复该漏洞所需的最低内核版本号。不要盲目更新,要确认目标版本。
2. 执行更新命令
在终端执行更新命令。建议先更新内核相关包,避免其他软件干扰判断。
sudo yum update kernel kernel-headers kernel-devel更新过程中留意是否有报错,确保新内核文件已成功写入磁盘。
3. 检查启动项
更新完成后,检查 GRUB 引导菜单是否已将新内核设为默认启动项。大多数情况下 yum 会自动设置,但手动检查更稳妥。
# 查看当前默认启动项(推荐)
sudo grub2-editenv list
# 或者检查 grub 配置变量
cat /etc/default/grub | grep GRUB_DEFAULT注意:UEFI 和 BIOS 启动的配置文件路径可能不同(如 /boot/efi/EFI/centos/grubenv),grub2-editenv 通常能自动识别。
4. 重启系统
在业务低峰期执行重启。如果是物理机或无法轻易重启的环境,需评估停机窗口。生产环境重启前务必备份重要数据并通知相关业务方。
sudo reboot5. 回滚准备
如果新内核启动失败,GRUB 菜单通常允许选择旧内核启动。确保更新前的旧内核包未被立即清理,保留至少一个可用旧版本。
怎么验证是否生效
系统重启完成后,登录服务器进行以下验证:
1. 核对运行版本
使用 uname 命令查看当前运行版本,必须大于或等于安全公告中要求的修复版本。
uname -r2. 核对安装版本
确认磁盘上已安装的新内核版本与运行版本一致。
sudo rpm -qa kernel | sort3. 检查运行时间
确认系统确实是刚刚重启过的,避免误判。
uptime4. 排除热补丁干扰
如果企业使用了 Ksplice 或 kpatch 等热补丁技术,可能无需重启即可修复特定漏洞。需验证补丁加载状态:
# 检查 kpatch 状态
sudo kpatch list
# 或检查 livepatch 目录
ls /sys/kernel/livepatch如果 uname -r 显示的版本低于修复版本,且未启用热补丁,说明系统仍引导了旧内核,需检查 GRUB 配置或重新重启。
常见坑
1. 只更新不重启
这是最常见的误区。很多监控脚本只检查 rpm 包版本,不检查 uname 版本,导致误以为漏洞已修复。务必以 uname -r 为准。
2. 多内核共存导致引导错误
系统可能安装了多个内核版本,GRUB 默认项可能未自动切换到最新的。重启后务必确认引导的是新内核。
3. 忽略 live patch 例外
如果系统加载了热补丁,uname -r 可能显示旧版本但漏洞已修复。需结合 kpatch list 等命令综合判断。
4. 业务兼容性风险
新内核可能变更了某些驱动或参数行为。在生产环境更新前,建议在测试环境验证业务兼容性,避免重启后业务异常。