腾讯云主机安全 Linux 内核漏洞升级参考指南(CentOS)

一、背景

Linux 内核漏洞相较于其它 Linux 软件漏洞,修复起来较为麻烦,本文章旨在指导运维人员根据 腾讯云主机安全 告警信息,对 Linux 内核漏洞进行修复,鉴于Linux 内核漏洞的危害及其对业务的影响,建议在测试环境经过充分测试后,再对生产环境进行操作,操作前请做好快照备份。

二、CentOS 升级内核方式

2.1.、漏洞重要信息获取

进入 漏洞管理 - Linux 软件漏洞,点击漏洞名称可查看漏洞详情页面,根据页面中展示的信息,可发现以下关键信息:

存在漏洞的软件包名称 存在漏洞的软件包版本 针对当前系统的升级命令

漏洞管理页面
漏洞详情页-漏洞版本及软件包名称

2.2、漏洞修复

以手动修复为例,使用自动修复功能的用户,仅需要在重启后,执行删除旧软件包的操作 重启删除旧的软件包后,重新检测,漏洞状态将变成已修复状态

2.2.1、升级内核

根据漏洞详情页说明字段给出的升级命令,对存在漏洞的软件包进行升级操作

代码语言:shell
复制
# 根据给出的修复命令,执行升级操作
[root@VM-32-9-centos ~]# yum update kernel
### 省略非关键部分
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for updates
kernel-3.10.0-1160.66.1.el7.x86_64.rpm                                                                                                                                                                                                 |  50 MB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : kernel-3.10.0-1160.66.1.el7.x86_64                                                                                                                                                                                                        1/1
  验证中      : kernel-3.10.0-1160.66.1.el7.x86_64                                                                                                                                                                                                        1/1

已安装:
kernel.x86_64 0:3.10.0-1160.66.1.el7

完毕!

2.2.2、查看当前操作系统内核启动顺序

通过查看当前操作系统内核启动顺序,并设置新的内核为第一优先级

代码语言:shell
复制
# 查看当前系统中的内核启动顺序,通过调整启动顺序,可指定系统重启后使用新的内容
[root@VM-32-9-centos ~]# awk -F' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
0 : CentOS Linux (3.10.0-1160.66.1.el7.x86_64) 7 (Core)
1 : CentOS Linux 7 Rescue c826e431706f4f9c8cf816eb6faebe27 (3.10.0-957.el7.x86_64)

根据漏洞详情页给出的软件版本,当前系统启动使用的为该内核

2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-21acf41b46a64ca4a55e93cb350a7749) 7 (Core)
4 : CentOS Linux (0-rescue-5f7dd4855c7a401c9cdd2c258707993d) 7 (Core)

根据上述命令给出的可用内核信息,可通过一下命令指定使用编号为0的内核进行系统启动

[root@VM-32-9-centos ~]# grub2-set-default 0

2.2.3、卸载旧版本内核包

重启后,只有删除旧版本内核包,重新检测,漏洞状态才会置为已修复状态

代码语言:shell
复制
# 查看当前未重启前系统采用的内核
[root@VM-32-9-centos ~]# uname -r
3.10.0-957.el7.x86_64

重启后系统采用的的内核版本

[root@VM-32-9-centos ~]# uname -r
3.10.0-1160.66.1.el7.x86_64

通过漏洞详情页给出的漏洞软件名称及版本,卸载对应的软件包(重启后,重新检测漏洞前操作)

漏洞详情页给出的软件名称:kernel

漏洞详情页中给出的软件版本:3.10.0-957.el7

[root@VM-32-9-centos ~]# rpm -qa kernel
kernel-3.10.0-957.el7.x86_64 # 根据名称、版本信息,可确认该版本为旧版本,需要删除
kernel-3.10.0-1160.66.1.el7.x86_64

使用 rpm -e xxx --nodeps 卸载旧版本,若漏洞详情页展示多个软件包,则需要卸载多个旧版本软件包

[root@VM-32-9-centos ~]# rpm -e kernel-3.10.0-957.el7.x86_64 --nodeps

再次查看,旧版本软件包已不存在

[root@VM-32-9-centos ~]# rpm -qa kernel
kernel-3.10.0-1160.62.1.el7.x86_64

三、注意事项

1、操作前,请务必做好快照,并在测试环境中充分测试;

2、在升级后,务必删除旧版本软件包(重要);

主机安全在检测漏洞时,会根据软件包版本判断,如果同时存在安全版本和漏洞版本,漏洞版本的软件包会被检测到,仍然会检出漏洞,请务必删除旧版本软件包后再复测。