如何检查安全更新列表并执行Linux补丁程序管理RHEL 6/7/8

时间:2020-02-23 14:40:13  来源:igfitidea点击:

在本文中,我们将研究LIVE生产环境中的Red Hat Linux修补程序管理,如何通过yum和外部来源来检查可用的漏洞列表,安全更新列表以及应该从何处获取RHEL Linux的补丁程序。
分布。
补丁程序管理和应用补丁程序方法的步骤因发行版本而异。
如果我们要支付来自Red Hat或者SUSE的支持费用,则要通过他们的补丁程序管理系统来支付部分支持费用,以应用补丁程序。

什么是安全补丁?

安全补丁程序是修复特定漏洞的更新。
它合并了源代码中的更改。
安全修补程序通常应用于特定的软件组件(例如内核)或者服务(例如vsFTP)。
安全补丁程序可能会修复错误,解决漏洞问题等

识别安全漏洞列表

Linux平台上不时报告多个与安全相关的漏洞列表。
如果我们已经为Red Hat或者SUSE发行版的订阅付费,则可以收到有关这些漏洞列表和安全更新列表的电子邮件警告。

我们可以使用以下页面获取全局标识的漏洞列表和CVE(常见漏洞和披露)列表

  • 国家漏洞数据库

  • 红帽CVE列表

  • SuSE的CVE列表

现在,每天都会发现数千个安全漏洞列表,因此任何人都无法单独检查这些漏洞列表,然后将其映射到环境。
因此,我们在Linux机器上执行安全扫描,以识别影响系统的这些漏洞列表,然后相应地应用安全更新列表。

有许多可用的工具可用于扫描Linux环境,其中一些是

  • Nessus

  • Qualys Guard

  • IBM App Scanner

  • Accunetix

  • nmap

我们在我们的环境中使用" Nessus"和" Accunetix"来扫描我们的Linux系统,以识别所有漏洞列表并相应地应用补丁。

安全修补程序源

安全修补程序和升级有多种来源。
最好的来源通常是为发行版预先配置的升级存储库。
但是,发行版开发人员处理来自其他来源(例如内核)或者服务(例如Apache Web服务器)的更新时,通常会存在延迟。

根据支持合同,我们可以要求开发人员确定补丁程序交付时间表的优先级。
如果我们需要赶时间,可以从与服务直接相关的上下载软件包。
虽然不是为发行而构建的,但它可以尽快使新功能投入使用。

现在,根据环境,我们可以选择"在线补丁源"或者"离线补丁源"。
我们将在本文后面深入讨论这两个主题。

在RHEL 6/7/8 Linux中执行补丁程序管理

理想情况下,Linux补丁程序管理是指当我们报告有关键任务漏洞时(由于本文全部涉及安全修补程序,因此我们将漏洞视为我们的根本原因),并且客户正在请求立即修复以应用补丁程序。

在这种情况下,我们可能会提供一个小的修补程序,该修补程序将根据客户环境中的安全更新列表将修补程序应用到所有节点上。
现在,此安全修补程序可以联机和脱机应用补丁程序和安全更新。

在线申请补丁

要使用在线linux补丁管理,RHEL Linux系统必须在Red Hat Network上注册,并映射到正确的订阅通道,以获取所需的安全更新。

如果我们有大量的Linux计算机,则购买,配置一台或者多台计算机并将其专用于补丁程序管理任务可能具有成本效益。
例如,假设我们有一个由100台计算机组成的网络,并且linux补丁程序管理要求每台计算机每天下载20MB。
在企业级Internet连接上,每天每天额外下载2GB的内容可能会非常昂贵。

在RHEL 7和8中,可以使用yum-security插件来实现,对于RHEL 6,我们必须手动安装yum-plugin-securityrpm

RHEL 6

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

# yum install yum-plugin-security

列出可用的安全性勘误表

要列出所有可用的安全勘误而不安装它们,请运行:

# yum updateinfo list available
RHSA-2014:1031 Important/Sec. 389-ds-base-1.3.1.6-26.el7_0.x86_64
RHSA-2014:0416 Important/Sec. 389-ds-base-1.3.3.1-13.el7.x86_64
RHBA-2014:0626 bugfix         389-ds-base-1.3.3.1-15.el7_1.x86_64
RHSA-2014:0895 Important/Sec. 389-ds-base-1.3.3.1-16.el7_1.x86_64
RHBA-2014:1554 bugfix         389-ds-base-1.3.3.1-20.el7_1.x86_64
RHBA-2014:1960 bugfix         389-ds-base-1.3.3.1-23.el7_1.x86_64
RHBA-2014:2351 bugfix         389-ds-base-1.3.4.0-19.el7.x86_64
<Output trimmed>

安全更新列表

要从安全更新列表中列出所有可用的rpm而不安装它们,请运行:

# yum updateinfo list security all
  RHSA-2016:3056 Moderate/Sec.  samba-client-4.8.3-4.el7.x86_64
  RHSA-2019:2099 Moderate/Sec.  samba-client-4.9.1-6.el7.x86_64
i RHSA-2015:0006 Moderate/Sec.  samba-client-libs-4.2.3-11.el7_2.x86_64
i RHSA-2015:0448 Moderate/Sec.  samba-client-libs-4.2.3-12.el7_2.x86_64
i RHSA-2015:0612 Critical/Sec.  samba-client-libs-4.2.10-6.el7_2.x86_64
<Output trimmed>
# yum updateinfo list sec
i RHSA-2014:0678 Important/Sec. kernel-3.10.0-123.1.2.el7.x86_64
i RHSA-2014:0786 Important/Sec. kernel-3.10.0-123.4.2.el7.x86_64
i RHSA-2014:0923 Important/Sec. kernel-3.10.0-123.4.4.el7.x86_64
i RHSA-2014:1023 Important/Sec. kernel-3.10.0-123.6.3.el7.x86_64
i RHSA-2014:1281 Moderate/Sec.  kernel-3.10.0-123.8.1.el7.x86_64
<Output trimmed>

要从当前安装的安全更新列表中获取rpm列表,可以使用以下命令:

# yum updateinfo list security installed
RHSA-2014:0678 Important/Sec. kernel-3.10.0-123.1.2.el7.x86_64
RHSA-2014:0786 Important/Sec. kernel-3.10.0-123.4.2.el7.x86_64
RHSA-2014:0923 Important/Sec. kernel-3.10.0-123.4.4.el7.x86_64
RHSA-2014:1023 Important/Sec. kernel-3.10.0-123.6.3.el7.x86_64
<output trimmed>

若要在应用补丁程序之前从安全更新列表中了解有关此通报的更多信息,请执行以下操作:

[root@rhel-fews-cc ~]# yum updateinfo RHSA-2019:2135
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
===============================================================================
  Moderate: qt5 security, bug fix, and enhancement update
===============================================================================
  Update ID : RHSA-2019:2135
    Release : 0
       Type : security
     Status : final
     Issued : 2019-08-06 08:04:56 UTC
    Updated : 2019-08-06 08:04:44 UTC       Bugs : 1564000 - Rebase qt5-qtbase to 5.9.7
            : 1564001 - Rebase qt5-qtcanvas3d to 5.9.7
            : 1564002 - Rebase qt5-qtconnectivity to 5.9.7
            : 1564003 - Rebase qt5-qtdeclarative to 5.9.7
            : 1564004 - Rebase qt5-qtdoc to 5.9.7
            : 1564006 - Rebase qt5-qtgraphicaleffects to 5.9.7
            : 1564007 - Rebase qt5-qtimageformats to 5.9.7
            : 1564008 - Rebase qt5-qtlocation to 5.9.7
			<output trimmed>
            : refer to the CVE page(s) listed in the References
            : section.
            :
            : Additional Changes:
            :
            : For detailed information on changes in this
            : release, see the Red Hat Enterprise Linux 7.7
            : Release Notes linked from the References section.
   Severity : Moderate
updateinfo info done
<Output trimmed>

如果我们只想为一个特定的咨询应用补丁:

# yum update --advisory=RHSA-2014:0159

要列出所有可用的安全更新列表,并详细说明它们适用的问题:

# yum info-sec
===============================================================================
  GeoIP bug fix and enhancement update
===============================================================================
  Update ID : RHBA-2019:2224
    Release : 0
       Type : bugfix
     Status : final
     Issued : 2019-08-06 08:14:36 UTC
    Updated : 2019-08-06 08:14:34 UTCDescription : GeoIP is a C library that enables the user to find the country
            : that any IP address or host name originates from.
            : It uses a file-based database that can be,
            : optionally, updated on a weekly basis by
            : installing the GeoIP-update package.
            :
            : For detailed information on changes in this
            : release, see the Red Hat Enterprise Linux 7.7
            : Release Notes linked from the References section.
            :
            : Users of GeoIP are advised to upgrade to these
            : updated packages.
   Severity : None
<Output trimmed>

使用CVE查看和安装漏洞列表

使用以下方法查看影响系统的漏洞列表或者CVE:

# yum updateinfo list cves
 CVE-2016-14633   Moderate/Sec.  kernel-3.10.0-957.1.3.el7.x86_64
 CVE-2016-14646   Moderate/Sec.  kernel-3.10.0-957.1.3.el7.x86_64
 CVE-2016-18397   Important/Sec. kernel-3.10.0-957.5.1.el7.x86_64
 CVE-2016-18559   Important/Sec. kernel-3.10.0-957.5.1.el7.x86_64
 CVE-2016-9568    Important/Sec. kernel-3.10.0-957.10.1.el7.x86_64
 CVE-2016-17972   Important/Sec. kernel-3.10.0-957.10.1.el7.x86_64
<utput trimmed>

安装影响特定CVE编号的软件包

# yum update --cve CVE-2008-0947

更新所有可用的安全更新列表

使用以下语法运行yum update security以从托管的Red Hat Network或者Red Hat Network Satellite下载并应用所有可用的安全更新列表:

# yum -y update --security

重要的提示:

它将安装具有至少一个安全勘误的任何软件包的最新可用版本,因此如果它们提供了该软件包的更新版本,则可以安装非安全勘误。

仅安装具有安全勘误表的软件包

# yum update-minimal --security -y

离线申请补丁

大多数生产环境未连接到Internet,因此无法进行在线修补程序管理。
因此,在这种情况下,客户有两种可能的方法。

  • 创建一个始终与Red Hat Network同步的本地仓库。

如果可以配置代理服务器,则可以从Internet下载一次Linux补丁程序数据,然后网络上的100台计算机可以在本地下载补丁程序。

然后,我们可以节省Internet连接的额外费用。

说明:

这种配置要求我们拥有具有良好CPU,内存速度以及最重要的是大型存储设备的快速物理服务器来存储所有这些安全更新。

  • 使用所有程序包创建一个安全修补程序。
    此修补程序将包含用于创建本地存储库并在单个节点或者某些HTTP服务器上本地更新程序包的脚本。

这样,我们就不需要访问生产环境中的外部网络,并且是执行补丁程序管理和应用安全修补程序的最安全方法。

创建脱机安全修补程序的步骤

根据Nessus扫描报告,我们将获得影响Linux节点的CVE列表或者漏洞列表。
因此,我们可以按照在线补丁程序管理中的说明下载修复相应CVE的rpm。

将来自安全更新列表的所有rpm放在任何Linux节点上的一个位置下,例如,在我们的示例中,我们将所有rpm保留在/tmp/rhel_security_updates

# mkdir /tmp/rhel_security_updates

接下来,在获得需要下载的rpm列表之后,我们可以从RHN下载这些rpm及其相关性,并将其保留在相同的路径下以应用补丁。

接下来执行createrepo,如下所示

# cd /tmp/rhel_security_updates
# createrepo .

这将创建创建离线仓库所需的必要" repodata"文件。

现在,我们的repo目录已准备就绪,可以脱机应用补丁程序(安全修补程序)。
我们可以创建一个脚本,该脚本现在可以执行以下任务列表

  • 创建在单个节点上创建存储库所需的创建存储库文件。
    示例内容位于下面
[rhel74_updates]
name=rhel74_updates
baseurl=file:///tmp/rhel_security_updates
gpgcheck=1
enabled=1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  • 使用(yum update -y)更新所有rpm。

  • 验证更新是否成功

应用安全修补程序后执行回滚或者回退

现在非常重要的是,在生产环境中,我们可以选择进行回滚或者回退。
因此,在应用补丁程序后,要回退或者回滚到RHEL Linux主机的较早工作状态,我们必须知道最后一个状态。

其中我的意思是,假设现有的(在我们应用补丁或者安全修补程序之前)RHEL系统具有500 rpm,然后在回退之后,可以将系统恢复为500 rpm的相同设置。

现在,在应用安全修补程序之前,我在内核rpm的列表下方,因此在回退之后,我也应该具有相同的rpm组

# rpm -qa | grep kernel
kernel-tools-libs-3.10.0-957.21.3.el7.x86_64
kernel-3.10.0-957.21.3.el7.x86_64
kernel-tools-3.10.0-957.21.3.el7.x86_64

这确实很棘手,因为在RHEL Linux主机上安装的每个安全更新中,都安装了许多依赖项和其他rpm。

现在例如,由于某些漏洞,我希望更新samba-commonrpm。
目前,我的RHEL系统具有samba-common-4.8.3-4.el7.noarch

# rpm -qa | grep samba
samba-common-libs-4.8.3-4.el7.x86_64
samba-common-4.8.3-4.el7.noarch
samba-client-libs-4.8.3-4.el7.x86_64

尽管samba-common-4.9.1-6.el7.noarch有可用的安全更新。

# yum updateinfo list sec | grep samba
RHSA-2019:2099 Moderate/Sec.  samba-client-libs-4.9.1-6.el7.x86_64
RHSA-2019:2099 Moderate/Sec.  samba-common-4.9.1-6.el7.noarch
RHSA-2019:2099 Moderate/Sec.  samba-common-libs-4.9.1-6.el7.x86_64

所以我打算更新samba-commonrpm

# yum update samba-common
<Output trimmed>
Dependencies Resolved
=============================================================================================
 Package                  Arch          Version              Repository                 Size
=============================================================================================
Updating:
 samba-common             noarch        4.9.1-6.el7          rhel-7-server-rpms        209 k
Updating for dependencies:
 libsmbclient             x86_64        4.9.1-6.el7          rhel-7-server-rpms        137 k
 libtevent                x86_64        0.9.37-1.el7         rhel-7-server-rpms         40 k
 libwbclient              x86_64        4.9.1-6.el7          rhel-7-server-rpms        111 k
 samba-client-libs        x86_64        4.9.1-6.el7          rhel-7-server-rpms        4.9 M
 samba-common-libs        x86_64        4.9.1-6.el7          rhel-7-server-rpms        170 k

如我们所见,由于依赖性原因,我还应该更新其他rpm。

但是"没有这样的保证",在执行将" samba-common"降级到4.8.3-4.el7.noarch时,我们将获得相同的依赖项列表。

在这种情况下,我们可以手动下载单个rpm→识别依赖性,然后使用rpm命令降级rpm。
"但是这很忙,不建议这样做"。

我建议使用LVM快照功能执行这种安全修补程序的后备。

在这种情况下,如果我们希望回退,则可以使用LVM快照还原。
从RHEL 7.7和RHEL 8开始,我们还可以使用BOOM使用LVM快照来引导RHEL系统。

对于此类用例,这是最可靠的解决方案。
尽管要执行LVM快照,我们还需要一些必备的准备工作,我已在另一篇文章中详细介绍了这些前提条件。

现在向我们展示执行LVM快照的分步指南将超出本文的讨论范围,因此我在其他文章中添加了超链接,并其中通过示例进行了详细说明。