第 3 章 及时更新系统

这一章阐述了及时更新系统的过程,它包括计划和配置安装安全更新的方法,应用最新升级包所引入的变更,并且使用红帽 Red Hat 客户门户来了解安全更新公告。

3.1. 维护安装的软件

如果发现安全漏洞,为了限制潜在的安全威胁必须更新受影响的软件。如果该软件是 Red Hat Enterprise Linux 分布现在支持的软件包的一部分,Red Hat 尽快发布修复漏洞的更新软件包。
有关特定的安全漏洞的公告经常会伴有补丁(或者源代码)来解决问题。这个补丁会直接应用于 Red Hat Enterprise Linux 软件包并且在经过测试后作为勘误更新来公布。然而,如果公告不包括补丁, Red Hat 的开发者会先和软件维护者共同来解决这个问题。一旦解决了该问题,软件包就会在测试后作为勘误更新来公布。
如果您系统中的使用软件发布勘误更新,我们强烈建议您尽快更新受影响的软件包以便尽量减少系统出现潜在漏洞的时间。

3.1.1. 计划和配置安全更新

所有的软件都包含 bug,通常这些 bug 会造成漏洞让恶意用户侵入您的系统。未更新软件包是造成电脑入侵的共同原因。及时地安装安全补丁计划能快速删除被找到的漏洞,这样它们就不会被利用。
当安全更新可用时,安排安装更新并进行测试。我们需要使用其他的控件在发布更新以及系统安装更新期间保护我们的系统。这些控件取决于每一个匹配的漏洞,但是也包括其他的防火墙原则,外部防火墙的使用和软件设置的变化。
通过使用勘误机制来修复支持软件包中的 bugs。勘误包含一个或者多个 RPM 软件包,并伴有简单的解释说明每一个特定的勘误所处理的问题。所有的勘误都通过 Red Hat 订阅管理 服务分配给积极订阅的客户。处理安全问题的勘误被称为 Red Hat 安全建议

3.1.1.1. 使用 Yum 的安全特征

Yum 软件包管理包含许多与安全相关的特征,可以用来搜索、列表、显示和安装安全勘误。这些特征有可能使用 Yum 来安装安全更新。
在您的系统中检查可用的安全有关的更新,请以 root 运行以下的命令:
~]# yum check-update --security
Loaded plugins: langpacks, product-id, subscription-manager
rhel-7-workstation-rpms/x86_64                  | 3.4 kB  00:00:00
No packages needed for security; 0 packages available
请注意以上命令是在非交互状态下运行,所以它可以在脚本中自动检测是否有可用更新。当安全更新可用时,命令会返回 100 的退出值。当安全更新不可用时,则变为0 。一旦遭遇错误,它就返回 1
在模拟情况下,使用以下命令值安装安全有关的更新:
~]# yum update --security
使用 updateinfo 子命令来显示或者依照可用更新的储存库所提供的信息。updateinfo 子命令本身接受许多命令,其中有与安全相关的使用方法。为获取这些命令的概述,请参考 表 3.1 “可用安全相关的命令以及 yum updateinfo”

表 3.1. 可用安全相关的命令以及 yum updateinfo

命令描述 
advisory [advisories]显示有关一个或者多个建议。使用一个或者多个建议号码来替代 advisory 
cves显示子设备的信息,关于 CVE (常见弱点与揭露)。 
security 或者 sec显示所有安全相关的信息。 
severity 或者 sev severity_level在提供的 severity_level 中显示与安全相关的软件包的信息。 

3.1.2. 更新和安装软件包

当更新系统中的软件包时,从可信资源下载更新是很重要的。攻击者可轻易重建本应用来解决问题的同一版本号的软件包,通过不同的安全漏洞并发布到互联网中。如果发生这种情况,采取例如验证针对原始 RPM 的文件之类的安全措施是无法探测到漏洞。因此,只从可信来源下载 RPMs 是非常重要的,例如从 Red Hat 下载并检查软件包签名以确定其完整性。
想要更多有关如何使用 Yum 软件包管理器的信息,请参考《红帽企业版Linux 7 系统管理指南》。

3.1.2.1. 验证签名的软件包

所有 Red Hat Enterprise Linux 的软件包都标有 Red HatGPG 密钥。GPG 代表 GNU 隐私防护、或者 GnuPG,是用来确保分布式文件真实性的免费软件包。如果验证软件包签名失败,则软件包可能被修改,因此就不能信任此软件包。
Yum 软件包管理器允许所有安装和更新软件包进行自动验证,此为默认的特性。为了在您的系统中配置这个选项,在 /etc/yum.conf 配置文件中就必须把gpgcheck 配置指令设定为 1
在您的文件系统中,使用以下命令手动验证软件包信息。
rpmkeys --checksig package_file.rpm
请参考〈产品签名 (GPG) 密钥〉有关 Red Hat 客户门户的文章,以获取其他有关 Red Hat 软件包签名实践方法的信息。

3.1.2.2. 安装签名的软件包

从您的文件系统中安装验证的软件包(请参考〈第 3.1.2.1 节 “验证签名的软件包”〉,获取更多有关如何验证软件包的信息)。作为 root 用户,请使用 yum install 命令。
yum install package_file.rpm
使用 Shell glob 即刻安装多个软件包。例如,以下命令在现有的目录中安装所有的 .rpm 软件包。
yum install *.rpm

重要

在安装任何安全勘误之前,请确保阅读包含在勘误报告中的所有具体步骤并依次执行。请参考〈第 3.1.3 节 “应用安装更新所引入的变化”〉以获取有关勘误更新所引入变化的基本指令。

3.1.3. 应用安装更新所引入的变化

下载并安装安全勘误和更新后,停止使用旧的软件并开始使用新软件是很重要的。如何做取决于所安装软件的类型。以下列表列出了软件常规分类并提供在软件包升级后使用更新版本的步骤。

注意

通常重启系统是保证使用软件最新版本的最确定的方法,但是并不经常提出此要求,而且系统管理员也无法经常执行这个操作。
应用程序
用户空间应用程序可以是由系统用户启动的任意程序。通常此类程序只有在用户、脚本或者自动任务工具启动时才使用。
当更新这种用户空间程序后,停止系统中该程序的所有事务,并再次启动该程序以便使用更新的版本。
内核
内核是 Red Hat Enterprise Linux 7 操作系统的核心软件组建。它对访问内存、处理器及外围设备进行管理,并调度所有任务。
由于其核心角色,所以无法在不停机的情况下重启 Kernel。因此只有重启系统后方可使用 Kernel 的更新版本。
KVM
当更新 qemu-kvmlibvirt 软件包时,必须停止所有的客户虚拟机,重载相关的虚拟模块(或者重新启动主体系统)并且重启虚拟机。
使用 lsmod 命令来确定从以下文件中下载哪个模块:kvmkvm-intel 或者 kvm-amd。然后使用 modprove -r 命令进行删除,之后使用 modprobe -a 命令重新加载受影响的模块。例如:
~]# lsmod | grep kvm
kvm_intel             143031  0
kvm                   460181  1 kvm_intel
~]# modprobe -r kvm-intel
~]# modprobe -r kvm
~]# modprobe -a kvm kvm-intel
共享库
共享库是代码单元,例如 glibc,它们可用于很多应用程序和服务。使用共享库的应用程序通常在启动时载入共享代码,因此所有使用更新库的应用程序都必须停止并重启。
为确定某个特定的库相联的正在运行的应用程序,请使用 lsof 命令:
lsof library
例如:为确定与 libwrap.so.0 库相联的正在运行的应用程序,请输入:
~]# lsof /lib64/libwrap.so.0
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
pulseaudi 12363 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-set 12365 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-she 12454 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
这个命令会返回所有正在运行的使用 TCP 包装进行主机访问控制的程序。因此,如果更新 tcp_wrappers 软件包,则必须停止并重启列出的程序。
系统服务
系统服务是在引导过程中经常启动的可保留的服务器程序。系统服务的示例包括 sshd 或者 vsftpd
只要机器运行,这些程序就经常被保留在内存中,每项更新的系统服务在软件包更新之后,必须停止并重启。这可以透过 root 用户使用systemctl 命令来完成:
systemctl restart service_name
使用您所希望重启服务的名称来覆盖 service_name,例如 sshd
其他软件
请按照以下的说明,该说明是由链接到以下正确更新的应用程序所概括的。