第 3 章 使您的系统保持最新状态
本章论述了保持系统最新的过程,涉及计划和配置安装安全更新的方式,应用新更新的软件包引入的变化,以及使用红帽客户门户网站来跟踪安全公告。
3.1. 维护已安装的软件
发现安全漏洞时,必须更新受影响的软件,以限制任何潜在的安全风险。如果软件是当前支持的 Red Hat Enterprise Linux 发行版中的一个软件包的一部分,红帽会发布可尽快修复漏洞的更新软件包。
通常,针对给定安全漏洞的公告会附带一个修复此问题的补丁(或源代码)。然后,这个补丁适用于 Red Hat Enterprise Linux 软件包,并作为勘误更新进行测试并发布。但是,如果公告不包括补丁,红帽开发人员首先与软件维护人员合作,以解决问题。修复此问题后,软件包将作为勘误更新进行测试并发布。
如果为系统上使用的软件发布勘误更新,强烈建议您尽快更新受影响的软件包,以最大程度降低系统可能存在安全漏洞的时间。
3.1.1. 规划和配置安全更新
所有软件都包含 bug。通常,这些 bug 可能会导致漏洞使您的系统暴露给恶意用户。未更新的软件包是计算机入侵的常见原因。实施及时安装安全补丁的计划,以快速消除发现的漏洞,因此无法利用它们。
当安全更新可用时,测试安全更新,并将其调度到安装。在更新发行及其系统中安装时,需要使用其他控制来保护系统。这些控制取决于确切的漏洞,但可能包括其他防火墙规则、使用外部防火墙或更改软件设置。
支持的软件包中的错误使用勘误机制修复。勘误由一个或多个 RPM 软件包组成,并附带特定勘误处理的问题的简短说明。所有勘误都通过 红帽订阅管理服务 提供给具有有效订阅的客户。解决安全问题的勘误被称为 红帽安全公告。
有关使用安全勘误的更多信息,请参阅 第 3.2.1 节 “在客户门户网站中查看安全公告”。有关红帽订阅管理服务的详细信息,包括如何从 RHN Classic 迁移的说明,请参阅与此服务相关的文档: 红帽订阅管理。
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 的 exit 值。0在遇到错误时,它会返回 1。
类似地,使用以下命令只安装与安全相关的更新:
~]# yum update --security
使用 updateinfo 子命令显示有关可用更新的存储库提供的信息。updateinfo 子命令本身接受多个命令,一些与安全相关的用途相关。有关这些命令的概述信息,请参阅 表 3.1 “与安全相关的命令,用于 yum updateinfo”。
命令 | 描述 | |
---|---|---|
公告 [公告] | 显示有关一个或多个公告的信息。使用 公告 号或数字替换公告。 | |
CVE | 显示与 CVE 相关的信息子集(常见漏洞和暴露)。 | |
Security 或 sec | 显示所有与安全相关的信息。 | |
[severity_level] 或 sev [severity_level] | 显示提供的 severity_level 的安全相关软件包的信息。 |
3.1.2. 更新和安装软件包
更新系统上的软件时,务必要从可信源下载更新。攻击者可以轻松重建具有相同版本号的软件包,其版本号应该与应该解决问题但存在不同的安全漏洞,并在互联网上释放它。如果发生这种情况,使用安全措施(如针对原始 RPM 验证文件)不会检测漏洞。因此,仅从可信源(如红帽)下载 RPM 非常重要,并检查软件包签名以验证其完整性。
有关如何使用 Yum 软件包管理器的详细信息,请参见 Red Hat Enterprise Linux 7 系统管理员指南中的 Yum 章节。
3.1.2.1. 验证签名的软件包
所有 Red Hat Enterprise Linux 软件包都使用 Red Hat GPG 密钥签名。GPG 代表 GNU Privacy Guard 或 GnuPG,这是用于确保分布式文件真实性使用的免费软件包。如果软件包签名验证失败,则可以更改软件包,因此无法信任。
Yum 软件包管理器允许自动验证其安装或升级的所有软件包。此功能默认为启用。要在您的系统中配置这个选项,请确保在
/etc/yum.conf
配置文件中将 gpgcheck
配置指令设置为 1
。
使用以下命令手动验证文件系统中的软件包文件:
rpmkeys --checksig package_file.rpm
有关红帽软件包签名实践的更多信息,请参阅红帽客户门户网站上的 产品签名(GPG)密钥 文章。
3.1.2.2. 安装签名软件包
yum install package_file.rpm
使用 shell 通配一次性安装多个软件包。例如,以下命令会在当前目录中安装所有
.rpm
软件包:
yum install *.rpm
重要
在安装任何安全勘误前,请务必阅读勘误报告中包含的任何特殊指令,并相应地执行它们。有关应用勘误更新所做的更改的一般说明,请参阅 第 3.1.3 节 “应用由安装更新引入的变化”。
3.1.3. 应用由安装更新引入的变化
下载并安装安全勘误和更新后,停止使用旧软件并开始使用新软件非常重要。具体操作方式取决于已更新的软件类型。以下列表列出了软件的一般类别,并提供在软件包升级后使用更新的版本的说明。
注意
通常,重新引导系统是确保使用最新版本的软件包的确定方式;但是,此选项并非始终是必需的,也并非总是可用于系统管理员的。
- 应用程序
- 用户空间应用程序是用户可以启动的任何程序。通常,只有在用户、脚本或自动任务实用程序启动它们时,才会使用此类应用。更新这样的用户空间应用程序后,停止系统上的任何应用程序实例,然后再次启动程序以使用更新的版本。
- 内核
- 内核是 Red Hat Enterprise Linux 7 操作系统的核心软件组件。它管理对内存、处理器和外围设备的访问,并且调度所有任务。由于其中央角色,在没有重新启动计算机的情况下,无法重新启动内核。因此,在系统重启前,无法使用内核版本。
- KVM
- 更新 qemu-kvm 和 libvirt 软件包后,需要停止所有客户虚拟机,重新载入相关的虚拟化模块(或重启主机系统),并重新启动虚拟机。使用 lsmod 命令确定从以下哪些模块被加载:
kvm
、kvm-intel
或kvm-amd
。然后,使用 modprobe -r 命令删除并随后使用 modprobe -a 命令重新加载受影响的模块。fox 示例:~]# 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 软件包时,任何列出的程序都必须停止并重新启动。 - systemd 服务
- systemd 服务是通常在引导过程中启动的持久服务器程序。systemd 服务示例包括
sshd
或vsftpd
。因为只要机器正在运行,这些程序通常会在内存中保留,因此在升级其软件包后,每个更新的 systemd 服务都必须停止并重新启动。这可以以root
用户身份使用 systemctl 命令完成:systemctl restart service_name
使用您要重启的服务的名称替换 service_name,如sshd
。 - 其他软件
- 按照下方链接的资源概述的说明,正确更新以下应用程序。
- Red Hat Directory Server - 请参阅 中有关的 Red Hat Directory Server 版本的发行注记。https://access.redhat.com/documentation/zh-CN/Red_Hat_Directory_Server/
- Red Hat Enterprise Virtualization Manager - 请参阅有关的 Red Hat Enterprise Virtualization 版本的 安装指南,网址为 https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Virtualization/。