监控系统实践第6天:给CentOS打补丁升级内核与升级软件包

Posted 家铭didphp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控系统实践第6天:给CentOS打补丁升级内核与升级软件包相关的知识,希望对你有一定的参考价值。

监控系统实践第6天:给CentOS打补丁升级内核与升级软件包

之前说到拿到服务器的时候,不要急,要先同步时间,再给系统打补丁,不然后面出问题了有得受。

上次介绍了同步时间的方法,也就是将本地时间与网络时间进行校对,使二者统一。

今天来介绍一下升级CentOS内核与软件包的方法。

另外什么是给系统打补丁呢?我个人理解,就是升级系统内核与升级软件包了。

为什么要升级内核?

升级内核,就是给系统升级,给系统安装安全程序,给系统安装漏洞补丁,通俗点,就是给系统打补丁。

众所周知,系统一般都是要升级的。

不升级的系统通常都存在一些缺陷,有些会影响系统的正常使用,有些是别有用心的人会利用这个缺陷来攻击或控制你的系统。升级系统往往可以解决这些缺陷引发的问题。


升级系统是有必要的,可以解决一些问题,同时也会造成一些新问题的出现,是利是弊,看个人的选择。

我个人目前发现的升级系统的好处有如下几个:

  1. 修正系统存在的重大缺陷;
  2. 修正系统未公开的缺陷(一般人不会知道)。

如果加上其它的操作系统,不好的地方感觉会更多点:

  1. 可能会引发一些新的问题(比如有次 Windows 2016 升级,系统上运行的一个基于 .net framework 开发的程序直接挂掉);
  2. 为了增加验证补丁(Windows 以安全补丁的名义,偷偷的增加验证盗版的程序进入你的系统);
  3. 限制你的硬件速度(Apple做过,手机是最典型的,当然他们也没放过 Macbook);

下面引用一则文章内容

“Phoenix Talon”漏洞可被攻击者利用来发起DOS攻击,且在符合一定利用条件的情况下可导致远程代码执行,包括传输层的TCP、DCCP、SCTP以及网络层的IPv4和IPv6协议均受影响。如攻击者利用该漏洞发起攻击可导致部署Linux操作系统的网站服务器、应用服务器、中间服务器宕机或被控制!

这件事事发于2017年中旬,2017年的Linux系列的系统中,Centos7为当时最高的版本的系统,但是内核还是3.10,基本当时市面上几乎所有的Linux系统都受了影响。

那一年,我手头上正好有一台服务器被人通过这个漏洞安装了挖矿程序拿去挖矿了。

当时是每天晚上CPU 100%,一开始以为是程序写得太差,后来索性停掉了所有得程序,发现还是CPU 100%

还好那个挖矿程序比较规范,它会生成日志。通过日志,在网上找到了对应的解决办法,轻松的删除它了。

一般我个人的习惯是,一个问题解决后,要验证一个月再写总结。

也是巧,当我正要写总结的时候,有朋友找我帮忙,想我帮他通宵赶一下项目,第二天早上 7 点上线,不然第二天合同违约,他自己本来就是赔本赚吆喝,违约就更麻烦了。想着服务器也愉快的运行了一个月,自己近期也休息得很好,通宵一晚上也可以,就帮帮忙,答应了他。

也是很自信,没过多久就已经做了一半了,觉得自己可以不用那么赶了,还熬个什么夜啊,先睡,睡了好再战。

结果醒来发现起晚了,还不知道能不能即时完成。正当我火急火燎赶进度的时候,岂料屋漏偏逢连夜雨,船迟又遇打头风。

一个系统监控短信飞了过来,那愉快的运行了一个月的服务器突然出问题了。又是CPU 100%,当天还在跑业务呢,赶紧处理。

发现原来的解决方法解决不了了,而且网上也找不到相关的解决办法了。后面的故事想必已经可以脑补了,就不多啰嗦了。

最后给我一个深刻的教训:有什么事提前做到,不要等到最后一秒。


为什么要升级软件包?

软件包可以理解为程序。每个软件包都是一个独立的程序。在性质上,软件包的升级,跟升级系统有点相似。因为系统本身就是由很多个独立的程序组成。

软件包同样也会存在缺陷,也会被人利用。尤其是使用云服务商提供安全服务的朋友,经常会在安全中心里看到服务器上有某某软件存在远程利用漏洞、存在重大隐患的提示。

因此升级软件包也同样重要。

升级软件包

由于我本身只是用来放监控系统的服务器,所以这里我只做需要的升级。

说到升级,不管是升级软件包,还是升级内核,都会需要用到系统自带的程序yum。它是CentOS系统中,用来管理软件包的管理器。可以用它进行软件的下载、安装、删除等操作。

你可以不使用yum来升级软件包和内核,但是如果你怕翻车,怕出意外,建议还是用yum来进行操作。特殊的软件版本除外。


由于yum的下载软件包是通过远程下载文件来实现的,这里我们可以考虑更换软件源(软件源即软件的下载地址)。更换的原因是默认的地址速度太慢了,有些直接连不上。当然,不换也行。

更换软件源方法:

  1. 怕出意外,备份原有的yum源配置文件;
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 下载系统所需的yum源配置文件;
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo
  1. 删除原有的源缓存,生成新的源缓存
yum clean all
yum makecache
  1. 升级所有软件包
yum upgrade

问:是不是有点不理解第3步?
答:怕安装和升级软件包的时候,不小心调用到系统中旧的软件包安装文件。这里删除原来的软件包安装文件,重新下载新的软件包安装文件。俗称“删除原有的源缓存,生成新的源缓存。”

问:第4步也有点模糊的感觉?
答:是的,yum upgrade后面接空格加软件包名称,只给指定软件包升级,步接名称就是给所有的软件包升级。因为我这个是一台空的服务器,什么都没装,也不怕影响了什么,所以我无所谓,直接升级全部软件包。

问:除了yum upgrade好像还有个yum update
答:是的,不要急,那个我下面会讲到,因为这个会多升一种东西。


升级内核

已经知道升级软件包的方法了,现在来介绍一下升级内核的方法。

yum update

问:就一个update,没有什么生成缓存之类的操作?
答:是的,就一个update,因为升级软件包的时候,已经重新生成了。

问:一个update有点不放心,需要怎么做可以更放心?
答:依次执行yum clean allyum makecacheyum update

问:yum upgrade不需要执行吗?怎么没了?
答:不需要,因为yum update包含了升级软件包和内核,yum upgrade只是升级软件包,实际你不执行yum upgrade都可以,直接执行yum update

最后的啰嗦

说到yum升级软件包和内核,这里需要再啰嗦强调一下。

如果只需要升级软件包,直接执行:

yum upgrade

一次性升级软件包和内核,直接执行:

yum update

如果没有被特定的软件限制,一劳永逸的办法就是定期执行yum update

利用yum虽然可以升级软件包和内核,但是有时候升级后,未必是该软件包或内核的最新版本,这个时候就需要自己手动安装了。

也不是所有的升级都是顺利的。有些软件之间有关联,会互相调用互相依赖。但是因为升级后兼容性没有完全顾及到,可能因此罢工。


前面说到被人利用,最后被当成矿机来挖矿的内核漏洞叫 Phoenix Talon

当时受影响的内核版本是:Linux kernel 2.5.69Linux kernel 4.11

那个时候,去官网下载最新版本,或者通过yum update来升级内核,最高的内核版本也才3.10,在受影响的范围内。

所以这个时候,只能收到那个升级高于4.11的内核了。

个人不建议手动升级内核,如果升级不当容易无法正常使用系统。

物理服务器还好,可以在开机启动的时候挽救。云服务器,可能大部分时候没得救了,除非哪天服务器商开放了查看开机启动的权限。

去年我就给物理服务器升级内核到5.0之上的版本,结果这个内核版本无法正常加载显卡驱动,导致系统无法进入,最后切换回4.13的内核版本才进入系统。那个时候也不想折腾显卡驱动,就没有去管了。


好了,今天就先到这里。为了强调细节,啰嗦的举例部分占了很多篇幅,实操的内容很少,希望得到谅解。

以上的阐述只对有基础的朋友有作用,如果对以上的知识点有质疑或者不懂的可以在下方留言。

以上是关于监控系统实践第6天:给CentOS打补丁升级内核与升级软件包的主要内容,如果未能解决你的问题,请参考以下文章

centos7.6内核升级

2017.2.28学习笔记------------uboot 与linux内核的打补丁,编译,烧写

CentOS 6.4系统中编译和升级内核

centos 6.5内核升级

CentOS6.4内核升级, 2.6.*版本升级 Kernel 3.10.*

Docker-01 无人值守升级 CentOS 6.x 系统内核到 3.10.101