第 1 章 概述

1.1. RHEL 9.0 的主要变化

安全性

使用 SHA-1 消息摘要用于加密目的在 RHEL 9 中已被弃用。SHA-1 生成的摘要不被视为是安全的,因为已发现多个基于哈希进行的安全攻击。RHEL 核心加密组件不再默认使用 SHA-1 创建签名。RHEL 9 中的应用程序已更新,以避免在与安全相关的用例中使用 SHA-1。

其中一个例外是,仍然可以使用 SHA-1 创建 HMAC-SHA1 消息验证代码和 Universal Unique Identifier(UUID)值,因为这些用例目前不存在安全风险。另外,为了保持一些重要的互操作性和兼容性,SHA-1 还会在一些有限的情况下使用,例如 Kerberos 和 WPA-2。如需了解更多详细信息,请参阅使用使用不符合 FIPS 140-3 的加密系统的 RHEL 应用程序列表

有关仍需要 SHA-1 的系统的兼容性问题的解决方案,请查看以下 KCS 文章:

OpenSSL 现在提供的版本为 3.0.1,它添加了一个供应商(provide) 概念、一个新的版本控制方案、改进的 HTTP(S)客户端、支持新的协议、格式和算法以及许多其他改进。

对系统范围的加密策略进行了调整,以提供最新的安全默认值。

OpenSSH 在 8.7p1 版本中发布,与版本 8.0p1 相比(在 RHEL 8.5 中发布),它提供了很多改进、错误修复和安全改进。

SFTP 协议取代了以前在 OpenSSH 中使用的 SCP/RCP 协议。SFTP 提供了更可预测的文件名处理方式,远程端的 shell 不再需要 glob(3) 模式扩展。

SELinux 性能显著提高,包括将 SELinux 策略加载到内核、内存开销和其他参数的时间。如需更多信息,请参阅验证 SELinux 博客文章的性能和空间效率

RHEL 9 提供了上游版本 1.1 中的 fapolicyd 架构。在其他改进中,您现在可以使用新的 rules.d/trust.d/ 目录、fagenrules 脚本和 fapolicyd-cli 命令的新选项。

SCAP 安全指南(SSG)软件包在 0.1.60 版本中提供,它引入了 delta 定制、更新了安全配置集并包括一些其他改进。

如需更多信息,请参阅 第 4.7 节 “安全性”

在 DEFAULT 加密策略中对使用 SHA-1 进行签名进行了限制。除了 HMAC 外,TLS、DTLS、SSH、IKEv2、DNSSEC 和 Kerberos 协议中不再允许使用 SHA-1。

如果您需要使用 SHA-1 来验证现有或第三方加密签名,您可以输入以下命令启用它:

# update-crypto-policies --set DEFAULT:SHA1

或者,您可以将系统范围的加密策略切换到 LEGACY 策略。请注意,LEGACY 也启用了其他一些不安全的算法。

Cyrus SASL 现在使用 GDBM 而不是 Berkeley DB,而网络安全服务(NSS)库不再支持信任数据库的 DBM 文件格式。

在内核中删除了通过 /etc/selinux/config 文件中的 SELINUX=disabled 选项禁用 SELinux 的支持。当您只通过 /etc/selinux/config 禁用 SELinux 时,系统会在启用 SELinux 的情况下启动,但不会载入策略。如果您需要禁用 SELinux,请在内核命令行中添加 selinux=0 参数。

有关 RHEL 9 和 RHEL 8 之间的安全性区别的更多信息,请参阅使用 RHEL 9 的注意事项中的安全部分。

网络

您可以使用新的 MultiPath TCP 守护进程(mptcpd)配置 MultiPath TCP(MPTCP)端点,而无需使用 iproute2 实用程序。要使 MPTCP 子流和端点持久,请使用 NetworkManager 分配器脚本。

默认情况下,NetworkManager 现在使用密钥文件存储新的连接配置集。请注意,ifcfg 格式仍被支持。

有关本发行版本中引入的功能以及现有功能更改的更多信息,请参阅新功能 - 网络

WireGuard VPN 技术现在作为技术预览提供。详情请查看技术预览 - 网络

teamd 服务和 libteam 库已弃用。作为替换,配置绑定而不是网络组。

iptables-nftipset 已被弃用。这些软件包包括了相关的工具,如 iptablesip6tablesebtablesarptables。使用 nftables 框架配置防火墙规则。

有关已弃用功能的更多信息,请参阅已弃用功能 - 网络

network-scripts 软件包已被删除。使用 NetworkManager 配置网络连接。有关不再是 RHEL 功能一部分的更多信息,请参阅 采用 RHEL 9 时的考虑 文档中的 网络 部分。

动态编程语言、网页和数据库服务器

RHEL 9.0 提供以下动态编程语言:

  • Node.js 16
  • Perl 5.32
  • PHP 8.0
  • Python 3.9
  • Ruby 3.0

RHEL 9.0 包括以下版本控制系统:

  • Git 2.31
  • Subversion 1.14

以下 web 服务器随 RHEL 9.0 一起发布:

  • Apache HTTP Server 2.4.51
  • nginx 1.20

以下代理缓存服务器可用:

  • Varnish Cache 6.6
  • Squid 5.2

RHEL 9.0 提供以下数据库服务器:

  • MariaDB 10.5
  • MySQL 8.0
  • PostgreSQL 13
  • Redis 6.2

如需更多信息,请参阅 第 4.13 节 “动态编程语言、网页和数据库服务器”

编译器和开发工具

系统工具链

RHEL 9.0 提供了以下系统工具链组件:

  • GCC 11.2.1
  • glibc 2.34
  • binutils 2.35.2

RHEL 9 系统工具链组件包括对 POWER10 的支持。

性能工具和调试器

RHEL 9.0 提供了以下性能工具和调试器:

  • GDB 10.2
  • Valgrind 3.18.1
  • SystemTap 4.6
  • Dyninst 11.0.0
  • elfutils 0.186
性能监控工具

RHEL 9.0 有以下性能监控工具:

  • PCP 5.3.5
  • Grafana 7.5.11
编译器工具集

RHEL 9.0 提供以下编译器工具集:

  • LLVM Toolset 13.0.1
  • Rust Toolset 1.58.1
  • Go Toolset 1.17.7

具体更改请查看 第 4.14 节 “编译器和开发工具”

RHEL 9 中的 Java 实现

RHEL 9 AppStream 软件仓库包括:

  • java-17-openjdk 软件包,提供 OpenJDK 17 Java 运行时环境和 OpenJDK 17 Java 软件开发组件。
  • java-11-openjdk 软件包,提供 OpenJDK 11 Java 运行时环境和 OpenJDK 11 Java 软件开发组件。
  • java-1.8.0-openjdk 软件包,提供 OpenJDK 8 Java 运行时环境和开源 JDK 8 Java 软件开发组件。

如需更多信息,请参阅 OpenJDK 文档

Java 工具

RHEL 9.0 提供以下 Java 工具:

  • Maven 3.6
  • Ant 1.10

如需更多信息,请参阅 第 4.14 节 “编译器和开发工具”

Desktop

GNOME 环境已从 GNOME 3.28 更新至具有许多新功能的 GNOME 40。

X.org 显示服务器已弃用,并将在以后的主 RHEL 发行版本中删除。现在,在大多数情形中,默认桌面会话都是 Wayland 会话。

当使用 NVIDIA 驱动程序时,如果驱动程序配置支持 Wayland,则桌面会话现在默认选择 Wayland 显示协议。在以前的 RHEL 版本中,NVIDIA 驱动程序总是禁用 Wayland。

PipeWire 服务现在管理所有音频输出和输入。在常用用例中,PipeWire 代替了 PulseAudio 服务,并在专业用例中代替了 JACK 服务。

如需更多信息,请参阅 第 4.16 节 “Desktop”

虚拟化

在 RHEL 9 中,libvirt 库使用 modular 守护进程来处理您主机上的单个虚拟化驱动程序集。这样便可对涉及虚拟化驱动程序的各种任务进行微调,如资源负载优化和监控。

QEMU 模拟器现在使用 Clang 编译器构建。这可让 RHEL 9 KVM 管理程序使用许多高级安全和调试功能。其中一个功能是 SafeStack,它可以使在 RHEL 9 上托管的虚拟机(VM)显著减小了针对基于面向返回编程(ROP)的攻击风险。

另外,vTPM(Virtual Trusted Platform Module)现已被完全支持。通过使用 vTPM,您可以为虚拟机添加一个 TPM 虚拟加密处理器,然后可用于生成、存储和管理加密密钥。

最后,virtiofs 功能已经实现,可用于更有效地在 RHEL 9 主机及其虚拟机间共享文件。

有关这个版本中引入的虚拟化功能的更多信息,请参阅 第 4.20 节 “虚拟化”