修复Linux内核漏洞— 记一次Centos 7 内核升级全过程
公司使用的网站服务器为centos 内核版本为:3.10.0-693.21.1.el7.x86_64, 2018年4月13号服务器商发来一条高危漏洞提示短信。
点击后台提供的修复却被提示升级到企业版云盾,一年1000多块钱,能节省就节省吧,当然不会花这个钱了。网上查了一圈,硬是没有修复的方法,也找不到漏洞的补丁。想了一下,既然说是内核漏洞,应该可以通过升级内核来解决这个问题。
linux 大神们对漏洞的修复一向积极,将内核更新,问题不就解决了吗?以下是实际步骤,忘了说一下,系统是:centos 7.4 64位服务器版本。
Linux内核升级通常有两种方式
1. 下载新版内核到服务器上,进行编译安装,之后删除老内核,优点是:可完全控制编译项,缺点是:慢,且容易失败;
2. 采用yum 方式安装,优点是:快捷方便,成功率高。
我这里采用第二种方式来安装,毕竟网站还在使用,不能耽误。采用yum安装最多也就三五分钟的事,万一失败,还能补救。
说明:以下步骤如未特殊声明,均在 shell环境下执行命令行
一:导入key
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
二:安装elrepo的yum源
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
三:安装内核(默认安装最新稳定版本内核)
# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
四:查看启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
新的内核版本默认会在最前面,下面将选择系统启动时的内核版本,顺序为 0 。
五:选择默认内核版本
# grub2-set-default 0
六:重启服务器,使之生效
# reboot
七:验证内核版本
# uname -a
显示为:
说明升级成功,检查了下各部分,均无异常, good!
重新登陆了下服务器,使用漏洞检测工具验证,漏洞修复完成, 历时20分钟。
下面是整个升级命令行的执行过程
完整内核升级过程如下:
[root@iZ23gbeynf2Z ~]# rpm -qa | grep kernel
kernel-devel-3.10.0-693.21.1.el7.x86_64
kernel-3.10.0-693.5.2.el7.x86_64
kernel-3.10.0-693.2.2.el7.x86_64
kernel-3.10.0-514.26.2.el7.x86_64
kernel-3.10.0-693.17.1.el7.x86_64
kernel-tools-libs-3.10.0-693.21.1.el7.x86_64
kernel-headers-3.10.0-693.21.1.el7.x86_64
kernel-ml-4.16.2-1.el7.elrepo.x86_64
php-symfony-http-kernel-2.8.12-2.el7.noarch
kernel-devel-3.10.0-693.5.2.el7.x86_64
abrt-addon-kerneloops-2.1.11-48.el7.centos.x86_64
kernel-devel-3.10.0-693.2.2.el7.x86_64
kernel-3.10.0-693.21.1.el7.x86_64
kernel-devel-3.10.0-514.26.2.el7.x86_64
kernel-devel-3.10.0-693.17.1.el7.x86_64
kernel-tools-3.10.0-693.21.1.el7.x86_64
[root@iZ23gbeynf2Z ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@iZ23gbeynf2Z ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
Preparing... ################################# [100%]
package elrepo-release-7.0-3.el7.elrepo.noarch is already installed
[root@iZ23gbeynf2Z ~]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
Loaded plugins: langpacks
Package kernel-ml-4.16.2-1.el7.elrepo.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml-devel.x86_64 0:4.16.2-1.el7.elrepo will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===================================================================================================================================================================
Package Arch Version Repository Size
===================================================================================================================================================================
Installing:
kernel-ml-devel x86_64 4.16.2-1.el7.elrepo elrepo-kernel 12 M
Transaction Summary
===================================================================================================================================================================
Install 1 Package
Total download size: 12 M
Installed size: 45 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-devel-4.16.2-1.el7.elrepo.x86_64.rpm | 12 MB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : kernel-ml-devel-4.16.2-1.el7.elrepo.x86_64 1/1
Verifying : kernel-ml-devel-4.16.2-1.el7.elrepo.x86_64 1/1
Installed:
kernel-ml-devel.x86_64 0:4.16.2-1.el7.elrepo
Complete!
[root@iZ23gbeynf2Z ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.16.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.17.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.5.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)
CentOS Linux, with Linux 0-rescue-45461f76679f48ee96e95da6cc798cc8
[root@iZ23gbeynf2Z ~]# grub2-set-default 0
[root@iZ23gbeynf2Z ~]# reboot
Connection closed by foreign host.
更多阅读