最近因需要OracleLinux内网打补丁,整理一下经验,其实这些很简单,只是自己太菜了,如果有不足之处请指正。
常规的方式就是根据漏洞提示去寻找rpm包进行安装,接下来说一下这种漏洞怎么解决。漏扫的结果可能会提示某个漏洞需要下载安装哪个版本的rpm包,但是并没有告诉你去哪里下载。漏洞要求安装某版本的rpm包,一种是常规的软件包,另外一种是内核相关的安装包,即kernel-uek相关的。首先到OracleLinux的网站http://yum.oracle.com/index.html,根据你的Linux版本进行选择
使用命令uname -r查看内核号版本,如4.14.35-1902.10.7.el7uek.x86_64,则点击Oracle Linux 7,事实上一般打补丁打到最高版本是最好的,当然也可以按照要求的版本去找。
我们选择Latest下的x86_64,这里根据自己的情况来选择。点击进入这个页面里是很多的rpm包但是不包含kernel-uek相关的。这时可以根据漏洞提示的要求安装的包名称,浏览器里用crtl+F进行搜索定位,比如我的某个漏洞提示bpftool这个包当前版本bpftool-3.10.0-1062.7.1.el7低于需要安装的bpftool-3.10.0-1062.12.1.el7,则搜索bpftool
可以看到定位到了bpftool的多个版本,最好选择最高版本进行下载,也可以就按照要求的版本,一般情况下这两者是同一个。
另外一种是要求升级内核版本的,即kernel-uek相关的,关于uek的理解,可以参考其他博客,我的理解就是可以让redhat、centos和oracleLinux直接升级到OracleLinux的内核,这个内核是对OracleLinux的许多软件进行了优化的,所以redhat和centos也可以使用这个kernel-uek进行内核的升级和打补丁。比如
根据提示我们到https://linux.oracle.com/errata/ELSA-2020-5533.html页面去查看漏洞说明,如果内核漏洞涉及多个,通常我们只找ELSA-年份-漏洞号最大的那一个,页面拖至最下方
我们看到这里有很多的rpm包,根据你自己的内核版本和系统架构选择,其中后缀名为.src.rpm的为源码包,可以不用安装。然后,在Oracle Linux 7页面里点击UEK Release 5: 下的x86_64,这里可以下载到上面提到的内核所需的版本uek的安装包及依赖文件。
rpm包下载完成之后,上传到服务器进行安装,如果安装过程中提示需要依赖,那么还要再继续下载依赖包。
经过上面的步骤我们已经差不多能够解决查询漏洞所需的rpm包的方式,当然如果这里没有,你可以自己在网上搜索,下面是我找到的其他的一些可以下载rpm包的地址,至于搜索的方法,可以根据自己内核版本改变url,当然这些也是我百度得到的,如果找不到请自行百度搜索。
http://mirrors.163.com/centos/6/os/x86_64/Packages/
https://centos.pkgs.org/
https://oss.oracle.com/ol7/SRPMS-updates/
http://rpmfind.net/linux/centos/
找到了要安装的rpm包,那么如何安装呢,比如如果要安装bpftool-3.10.0-1062.12.1.el7.x86_64.rpm,你可以cd到安装包的存放路径,使用命令
sudo rpm -ivh bpftool-3.10.0-1062.12.1.el7.x86_64.rpm
安装,如果提示conflict with files ...则可能是系统已经安装了一个不同版本的该包,可以使用命令
rpm -qa|grep bfptool
来进行确认,如果bfptool已经安装有了一个不同于当前版本的,则可以使用命令
sudo rpm -ivh bpftool-3.10.0-1062.12.1.el7.x86_64.rpm --replacefiles --force
强制安装,进度100%即表示安装成功,使用命令
rpm -qa|grep bfptool
再次查看确认,看到有两个不同的版本,假如另外一个版本是bpftool-3.10.0-1062.1.2.el7.x86_64.rpm,可以使用命令
sudo rpm -e --nodeps bpftool-3.10.0-1062.1.2.el7.x86_64.rpm
进行卸载旧的软件包,
关于kerne-uek相关的包,安装完成之后,如何进行内核版本的切换(但是就我安装来说不需要做额外的操作重启之后系统就会自动切换过来,可以重启试试。)可以自己网上查询
# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.12.4-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-a43cc2091b4557f1fd10a52ccffa5db2) 7 (Core)
切换完成后重启系统uname -r确认内核版本已进行切换完成了,再卸载旧的内核包。
有时候安装kernel-uek相关的rpm包的时候可能会提示缺少依赖
sudo rpm -ivh kernel-uek-5.4.17-2011.4.4.el7uek.x86_64.rpm
sudo: /etc/sudoers.d is owned by uid 1000, should be 0
error: Failed dependencies:
linux-firmware >= 999:20200124-999.4.git1eb2408c is needed by kernel-uek-5.4.17-2011.4.4.el7uek.x86_64
类似上面的linux-firmware >= 999:20200124-999.4.git1eb2408c,可以在latest下面找到,但是文件名不一定一致,可以通过搜索关键字如linux-firmware进行查找,然后自己根据后面的数字找,比如linux-firmware >= 999:20200124-999.4.git1eb2408c对应的就是下面的linux-firmware-20200124-999.4.git1eb2408c.el7.noarch.rpm
除此之外如果扫描了weblogic,那么weblogic的补丁也要打补丁,至于weblogic如何打补丁,以及如何通过增大jvm参数来加快速度可以自行搜索。
如果你的系统比较老那就比较尴尬了,毕竟linux下 的包依赖本来就不该是手工管理的,但是内网条件所限制。
最简单粗暴的方式,如果你可以自己选择镜像重装,当然这样做的前提是这样的操作是被允许的。我其中一个就是这样做的(因为我搞坏了rpm工具,没错,我用了rpm的--nodeps参数安装了rpm工具的依赖包,导致rpm命令无法正常使用,网上找了各种办法没能恢复,所以安装的时候别随便使用--nodeps参数!),网上下载了最新版的OracleLinux7.6的iso镜像,自己用VMware安装了虚拟机,然后配置了一些基础的环境之后,直接命令
yum -y update
同时更新了软件和内核版本,之后导出voa文件重装了系统,经过漏扫之后发现中高危漏洞都消失了,只剩下一些安全基线的配置。如果直接使用镜像重装不可行,那么也可以考虑下载最新镜像配置yum源,网上这种教程不少,然后进行yum更新,之后再扫描如果还有漏洞相对的会没有那么多。
其实这中间过程非常曲折,镜像是百度网盘找的(官网下载速度太慢),下载镜像之后VMware安装iso,当然得先联网(NAT联网配置)这里我参考的是https://blog.csdn.net/phs999/article/details/77448639,配置ssh等方便本机登录(主要是为了使用xshell方便复制粘贴...)
另外加过过程中出现-bash:command not found可能是修改了path路径,这样的话vi等命令都找不到,vi可以使用/bin/vi,简单的可以直接export PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin,这样可以能够使用正常的命令,然后去寻找path路径涉及的几个文件进行修改,关于那几个文件的关系最好能搞清楚https://www.cnblogs.com/lh03061238/p/9952659.html。
防火墙开启端口可以使用命令firewall-cmd --add-port=1521/tcp
关于安全基线配置https://www.cnblogs.com/nsh123/p/9166090.html
注意加固过程中修改了某些配置文件等如果不生效,考虑先退出当前shell在重新登录看看,还有是否有.swp文件生成了没有删掉,或者某些配置文件需要source,或者重启才能生效,不要钻牛角尖。
关于有些漏洞提示python3等,可以通过编译安装python3,但是目前发现的一个问题是编译安装的python3无法被rpm识别到,当有些rpm包依赖python3时则可能无法安装,网上的说法是通过rpmbuild等将源码生成python3的rpm安装包,目前还 尚未解决.
rpm命令如何强制安装低版本的安装包:
原来只需要加一个 --oldpackage 参数
rpm -Uvh --oldpackage gitlab-ce-9.1.4-ce.0.el6.x86_64.rpm
对于在oraclelinux上找不到rpm包,可以在http://mirrors.163.com/centos/6/os/x86_64/Packages/上查找,
也可以在https://pkgs.org/上找找,注意输入内容等有提示之后点击,可能还要输验证码。