修复Linux内核漏洞— 记一次Centos 7 内核升级全过程

作者: 杨圣亮 分类: Linux技巧 发布时间: 2018-04-13 23:39:36

公司使用的网站服务器为centos  内核版本为:3.10.0-693.21.1.el7.x86_64,   2018年4月13号服务器商发来一条高危漏洞提示短信。

loudong.png

点击后台提供的修复却被提示升级到企业版云盾,一年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

显示为:

image.png

说明升级成功,检查了下各部分,均无异常, 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.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

79  −  78  =  

微信