4.7. 安全性

系统范围的 crypto-policies 现在更为安全

在这个版本中,系统范围的加密策略已被调整,以提供最新的安全默认值:

  • 在所有策略中禁用 TLS 1.0、TLS 1.1、DTLS 1.0、RC4、Camellia、DSA、3DES 和 FFcontainerruntime-1024。
  • 在 LEGACY 中增加了最小 RSA 密钥大小和最小 Diffie-Hellman 参数的大小。
  • 使用 SHA-1 禁用 TLS 和 SSH 算法,在 Hash-based Message Authentication Codes (HMACs) 中使用 SHA-1 除外。

如果您的场景需要启用一些禁用的算法和密码,请使用自定义策略或子策略。

(BZ#1937651)

RHEL 9 提供 OpenSSL 3.0.1

RHEL 9 提供了上游版本 3.0.1 的 openssl 软件包,其中包括很多改进和程序错误修复。最显著的变化包括:

  • 添加了新的供应商概念。供应商是算法的集合,您可以为不同的应用程序选择不同的供应商。
  • 以以下格式引入了新版本方案: <major>.<minor>.<patch>
  • 添加了对证书管理协议(CMP、RFC 4210)、证书请求消息格式(CRMF)和 HTTP 传输(RFC 6712)的支持。
  • 引入了支持 GET 和 POST、重定向、普通和 ASN.1- 编码的内容、代理和超时的 HTTP(S)客户端。
  • 添加了新的 Key Derivation Function API(EVP_KDF)和消息身份验证代码 API(EVP_MAC)。
  • 使用 enable-ktls 配置选项编译对 Linux Kernel TLS(KTLS)的支持。
  • 添加了 CAdES-BES 签名验证支持。
  • 向 CMS API 添加了 CAdES-BES 签名方案和属性支持(RFC 5126)。
  • 添加了对新算法的支持,例如:

    • KDF 算法"SINGLE STEP"和"SSH"
    • MAC 算法"GMAC"和"KMAC"。
    • KEM 算法"RSASVE"。
    • 密码算法 "AES-SIV"
  • 添加了使用 AES_GCM 的 AuthEnvelopedData 内容类型结构(RFC 5083)。
  • PKCS #12 使用 PKCS12_create() 功能创建的默认算法改为更现代的 PBKDF2 和基于 AES 的算法。
  • 添加了一个新的通用 trace API。

(BZ#1990814)

Openssl 现在包含了供应商

包括在 RHEL 9 中的版本 3.0.1 的 OpenSSL 工具包中增加了一个供应商(provider)的概念。供应商是算法的集合,您可以为不同的应用程序选择不同的供应商。openssl 目前包括以下供应商:base, default, fips, legacy, 和 null

默认情况下,OpenSSL 载入并激活 default 供应商,其中包括常用的算法,如 RSA、DSA、DH、CAMELLIA、SHA-1 和 SHA-2。

当在内核中设置 FIPS 标志时,OpenSSL 会自动加载 FIPS 供应商,并只使用 FIPS 批准的算法。因此,您不必手动将 OpenSSL 切换到 FIPS 模式。

要更改为系统级别上的不同供应商,请编辑 openssl.cnf 配置文件。例如,如果您的场景需要使用传统供应商,请取消注释对应的部分。

警告

明确激活提供程序会覆盖默认提供程序的隐式激活,并可能使系统能够远程访问,例如 OpenSSH 套件。

有关每个供应商中包含的算法的详情,请查看相关的 man page。例如,legacy 供应商的 OSSL_PROVIDER-legacy(7) man page。

(BZ#2010291)

OpenSSL 随机位生成器现在支持 CPACF

这个 openssl 软件包版本引进了对 OpenSSL NIST SP800-90A-based determineistic random bit generator(DRBG)中的 Cryptographic Functions(CPACF)的支持。

(BZ#1871147)

openssl-spkac 现在可以创建使用 SHA-1 和 SHA-256 签名的 SPKAC 文件。

openssl-spkac 工具现在可以创建使用与 MD5 不同的哈希签名的 Netscape 签名的公钥和质询(SPKAC)文件。现在,您可以创建和验证使用 SHA-1 和 SHA-256 哈希签名的 SPKAC 文件。

(BZ#1970388)

RHEL 9 提供 openCryptoki 3.17.0

RHEL 9 带有 openCryptoki 版本 3.17.0。与 3.16.0 相比,重要的程序错误修复和增强包括:

  • p11sak 实用程序添加了列出密钥的新功能。
  • opencryptoki 现在支持:

    • OpenSSL 3.0.
    • 事件通知。
    • ICA 令牌中的软件回退。
  • 在启用了硬件加密适配器时,WebSphere Application Server 不会再出现无法启动的问题。

RHEL 9 包括了带有额外补丁的 OpenSSL,它们特定于 RHEL。如果系统处于 Federal Information Processing Standards(FIPS)模式,OpenSSL 会自动加载 FIPS 供应商和基础供应商,并强制应用程序使用 FIPS 供应商。因此,RHEL 9 中的 openCryptoki 的行为与上游社区版本中的不同:

  • 依赖 OpenSSL 的加密操作(软令牌和 ICA 令牌软件回退)的令牌现在只支持 FIPS 批准的机制(未批准但被列为可用的机制不被支持)。
  • openCryptoki 支持两种不同的令牌数据格式:旧数据格式(使用非FIPS 批准的算法(如 DES 和 SHA1)以及新的数据格式(只使用 FIPS 批准的算法)。

    旧数据格式不再可以正常工作,因为 FIPS 供应商只允许使用 FIPS 批准的算法。

    重要

    为了在 RHEL 9 上使用 openCryptoki,请在为系统启用 FIPS 模式前将令牌迁移为使用新数据格式。这是必要的,因为旧数据格式仍然是 openCryptoki 3.17 中的默认设置。当系统改为启用 FIPS 时,使用旧令牌数据格式的现有 openCryptoki 安装将无法正常工作。

    您可以使用 pkcstok_migrate 程序(由 openCryptoki 提供),将令牌迁移为使用新的数据格式。请注意,pkcstok_migrate 在迁移过程中使用非FIPS 批准的算法。因此,在系统中启用 FIPS 模式前使用这个工具。如需更多信息,请参阅迁移到 FIPS 合规性 - pkcstok_migrate 工具程序

(BZ#1869533)

GnuTLS 的版本为 3.7.3

在 RHEL 9 中,gnutls 软件包在上游版本 3.7.3 中提供。与之前的版本相比,这提供了很多改进和程序错误修复,最重要的是:

  • 引入了 FIPS 140-3 明确指示符的 API。
  • 强化用于导出 PKCS#12 文件的默认值。
  • 修复了早期数据的时间(零往返数据,0-RTT)交换。
  • 在签署证书签名请求(CSR)时,certutil 工具不再从证书颁发机构(CA)发布点继承 CRL(Certificate Revocation List)分布点。

(BZ#2033220)

RHEL 9 提供 NSS 3.71

RHEL 9 提供网络安全服务(NSS)库版本 3.71 提供。主要变更包括:

  • 对旧的 DBM 数据库格式的支持已被完全删除。NSS 仅支持 RHEL 9 中的 SQLite 数据库格式。
  • PKCS #12 加密密码现在使用带有 PBKDF2 和 SHA-256 算法的 AES-128-CBC(而不是 PBE-SHA1-RC2-40 和 PBE-SHA1-2DES)。

(BZ#2008320)

NSS 不再支持少于 1023 位的 RSA 密钥

网络安全服务(NSS)库的更新将所有 RSA 操作的最小密钥大小从 128 位改为 1023 位。这意味着 NSS 不再执行以下功能:

  • 生成大于 1023 位的 RSA 密钥。
  • 使用少于 1023 位的 RSA 密钥进行签名或验证 RSA 签名。
  • 使用超过 1023 位的 RSA 密钥加密或解密值。

(BZ#2099438)

OpenSSH 中的最小 RSA 密钥位长度选项

意外使用短的 RSA 密钥可能会使系统容易受到攻击。有了这个更新,您可以为 OpenSSH 服务器和客户端设置 RSA 密钥最小位长度。要定义最小 RSA 密钥长度,请在 /etc/ssh/sshd_config 文件中为 OpenSSH 服务器,在 /etc/ssh/ssh_config 文件中为 OpenSSH 客户端使用新的 RSAMinSize 选项。

(BZ#2119694)

OpenSSH 的版本为 8.7p1

RHEL 9 包括 OpenSSH 版本 8.7p1。与 OpenSSH 版本 8.0p1 相比,这个版本提供了很多改进和程序错误修复,它在 RHEL 8.5 中发布,重点包括:

新功能

  • 支持使用 SFTP 协议作为之前使用 SCP/RCP 协议的替换。SFTP 提供了更可预测的文件名处理方式,远程端的 shell 不再需要 glob(3) 模式扩展。

    默认启用 SFTP 支持。如果您的环境无法使用 SFTP 或存在不兼容的情况,您可以使用 -O 标志来强制使用原始 SCP/RCP 协议。

  • LogVerbose 配置指令,允许按 file/function/line pattern 列表来强制限制最大的调试日志记录。
  • 使用新的 sshd_config PerSourceMaxStartupsPerSourceNetBlockSize 指令,基于客户端地址的速率限制。这比全局 MaxStartups 限制提供更精细的控制。
  • Host basedbasedAcceptedAlgorithms 关键字现在根据签名算法过滤,而不是根据密钥类型进行过滤。
  • sshd 守护进程中的 Include sshd_config 关键字,允许使用 glob 模式包含其他配置文件。
  • 支持由 FIDO 联盟指定的 Universal 2nd Factor (U2F)硬件身份验证器。U2F/FIDO 是广泛用于网站身份验证的双重认证硬件的、成本低的开放标准。在 OpenSSH 中,FIDO 设备由新的公钥类型 ecdsa-sked25519-sk 以及相应的证书类型提供支持。
  • 支持需要每个用途的 FIDO 密钥。您可以使用 ssh-keygen 和新的 verify-required 选项生成这些密钥。当使用 PIN-required 密钥时,系统会提示用户完成签名操作。
  • authorized_keys 文件现在支持一个新的 verify-required 选项。这个选项需要 FIDO 签名,以断言用户在签名前存在的令牌验证。FIDO 协议支持多种验证方法,OpenSSH 目前仅支持 PIN 验证。
  • 添加了对验证 FIDO Webauthn 签名的支持。webauthn 是在 Web 浏览器中使用 FIDO 密钥的标准。这些签名是普通 FIDO 签名的一种稍有不同格式,因此需要明确支持。

bug 修复

  • ClientAliveCountMax=0 关键字的明确语义。现在,它完全禁用连接终止,而不是之前的行为在第一个存活度测试后立即终止连接,而不考虑成功。

安全性

  • 修复了在 XMSS 密钥类型的私钥解析代码中可利用的整数溢出错误。这个密钥类型仍是实验性的,默认情况下不会编译它。便携式 OpenSSH 中没有面向用户的 autoconf 选项以启用它。
  • 为 RAM 中剩余的私钥添加保护,以防规范和内存侧通道攻击,如 Spectre、Mltdown 和 Rambleed。当私钥没有与来自随机数据的非对称密钥一起使用时加密它们(当前为 16 KB)。

(BZ#1952957)

在 OpenSSH 中默认禁用区域设置转发

在小镜像(如容器和虚拟机)中使用 C.UTF-8 本地设置,这与传统的 en_US.UTF-8 设置相比,可减少其大小并提高性能。

大多数发行版本都会默认发送本地设置(locale)环境变量,并在服务器端接受它们。但是,这意味着,从使用 CC.UTF-8 以外的本地设置的客户端 SSH 到没有 glibc-langpack-englibc-all-langpacks 软件包的服务器时,用户使用体验会有所降低。特别是,UTF-8 格式的输出无法正常工作,有些工具无法正常工作或频繁发出警告信息。

在这个版本中,OpenSSH 默认关闭本地设置转发功能。即使客户端使用最小安装(仅支持少量的本地设置)连接到服务器,也可以保留本地设置。

(BZ#2002734)

OpenSSH 支持 U2F/FIDO 安全密钥

在以前的版本中,保存在硬件中的 OpenSSH 密钥只通过 PKCS #11 标准支持,这限制了在 SSH 中使用其他安全密钥。支持 U2F/FIDO 安全密钥由上游开发,现在已在 RHEL 9 中实施。这会提高独立于 PKCS #11 接口的 SSH 中的安全密钥的可用性。

(BZ#1821501)

libreswan 的版本为 4.6

在 RHEL 9 中提供了上游的 Libreswan 版本 4.6。这个版本提供了很多程序错误修复和增强,特别是对使用 IKEv2(Internet Key Exchange version 2)的被标签的 IPsec 的改进。

(BZ#2017355)

libreswan 默认不接受 IKEv1 软件包

因为 IKEv2(Key Exchange v2) 现已广泛部署,所以 Libreswan 不再支持 IKEv1 数据包。IKEv2 提供更安全的环境,并对安全攻击更具有防御性。如果您需要使用 IKEv1,可以在 /etc/ipsec.conf 配置文件中添加 ikev1-policy=accept 选项来启用它。

(BZ#2039877)

RHEL 9 提供 stunnel 5.62

RHEL 9 带有 stunnel 软件包版本 5.62。重要的程序错误修复和增强包括:

  • 在 FIPS 模式的系统中,stunnel 现在总是使用 FIPS 模式。
  • NO_TLSv1.1, NO_TLSv1.2, 和 NO_TLSv1.3 选项现在已分别被重新命名为 NO_TLSv1_1, NO_TLSv1_2, 和 NO_TLSv1_3
  • 新的服务级 sessionResume 选项启用和禁用会话恢复。
  • 现在,在使用 protocol 选项的 stunnel 客户端中支持 LDAP。
  • 现在提供了 Bash 补全脚本。

(BZ#2039299)

RHEL 9 提供 nettle 3.7.3

RHEL 9 提供了 nettle 软件包 3.7.3 版本,提供多个程序错误修复和增强。主要变化如下:

  • 支持新的算法和模式,例如 Ed448SHAKE256AES-XTSSIV-CMAC
  • 为现有算法添加特定于架构的优化。

(BZ#1986712)

RHEL 9 提供 p11-kit 0.24

RHEL 9 提供带有 0.24 版本的 p11-kit 软件包。这个版本提供多个程序错误修复和增强。值得注意的是,存储不受信任的证书颁发机构的子目录已重命名为 blocklist

(BZ#1966680)

cyrus-sasl 现在使用 GDBM 而不是 Berkeley DB

cyrus-sasl 软件包构建时没有 libdb 依赖项,sasldb 插件使用 GDBM 数据库格式而不是 Berkeley DB。要迁移以旧 Berkeley DB 格式存储的现有简单身份验证和安全层(SASL)数据库,请使用 cyrusbdb2current 工具,语法如下:

cyrusbdb2current <sasldb_path> <new_path>

(BZ#1947971)

RHEL 9 中的 SELinux 策略与当前内核保持同步

SELinux 策略包括新的权限、类和功能,也属于内核的一部分。因此,SELinux 可以使用内核提供的完整潜力。具体来说,SELinux 对授予权限提供更好的粒度,其具有后续的安全优势。这也启用了使用 MLS SELinux 策略运行的系统,因为 MLS 策略会在系统包含策略中没有权限时阻止一些系统启动。

(BZ#1941810, BZ#1954145)

默认 SELinux 策略不允许使用文本重新定位库的命令

selinuxuser_execmod 布尔值现在默认关闭,以提高已安装系统的安全性。因此,SELinux 用户无法使用需要文本重新定位的库输入命令,除非库文件具有 textrel_shlib_t 标签。

(BZ#2055822)

OpenSCAP 在版本 1.3.6 中提供

RHEL 9 在 1.3.6 版本中包括 OpenSCAP,它提供程序错误修复和增强,最重要的是:

  • 您可以使用 --local-files 选项提供远程 SCAP 源数据流组件的本地副本,而不是在扫描过程中下载它们
  • OpenSCAP 接受多个 --rule 参数,以便在命令行上选择多个规则。
  • 您可以使用 --skip-rule 选项跳过某些规则的评估。
  • 您可以使用 OSCAP_PROBE_MEMORY_USAGE_RATIO 环境变量来限制 OpenSCAP 探测所使用的内存。
  • OpenSCAP 现在支持 OSBuild Blueprint 作为补救类型。

(BZ#2041782)

OSCAP Anaconda 附加组件现在支持新的附加组件名称

在这个改进中,您可以使用新的 com_redhat_oscap 附加组件名称,而不是在 OSCAP Anaconda 附加组件的 Kickstart 文件中旧的 org_fedora_oscap 附加组件名称。例如,Kickstart 部分的结构如下:

%addon com_redhat_oscap
   content-type = scap-security-guide
%end

OSCAP Anaconda 附加组件目前与旧附加组件名称一致,但在以后的主 RHEL 版本中将删除对传统附加名称的支持。

(BZ#1893753)

CVE OVAL feed 现在会被压缩

在这个版本中,红帽以压缩的形式提供 CVE OVAL feed。它们不再作为 XML 文件提供,而是使用 bzip2 格式。RHEL9 源的位置也已更新,以反映这个变化。请注意,第三方 SCAP 扫描程序可能会遇到扫描规则以使用压缩源的问题,因为引用压缩内容没有标准化。

(BZ#2028435)

提供的 SCAP 安全指南版本为 0.1.60

RHEL 9 包括 scap-security-guide 0.1.60 版本的软件包。此版本提供程序错误修正和增强,最重要的是:

  • 规则强化 PAM 堆栈现在使用 authselect 作为配置工具。
  • SCAP 安全指南现在为 STIG 配置集提供了一个 delta 定制文件。此定制文件定义了一个配置集,它代表了 DISA 的自动化 STIG 和 SSG 自动化内容之间的区别。

(BZ#2014561)

RHEL 9.0 支持的 SCAP 安全指南配置集

使用 RHEL 9.0 中包含的 SCAP 安全指南合规性配置集,您可以从发出的组织将系统强化到建议。因此,您可以使用关联的补救和 SCAP 配置集根据所需的强化级别配置和自动化 RHEL 9 系统合规性。

配置文件名称配置文件 ID策略版本

法国信息系统安全局(ANSSI)BP-028 增强级

xccdf_org.ssgproject.content_profile_anssi_bp28_enhanced

1.2

法国信息系统安全部(ANSSI)BP-028 高级别

xccdf_org.ssgproject.content_profile_anssi_bp28_high

1.2

法国信息系统安全局(ANSSI)BP-028 中级

xccdf_org.ssgproject.content_profile_anssi_bp28_intermediary

1.2

法国信息系统安全局(ANSSI)BP-028 最低级

xccdf_org.ssgproject.content_profile_anssi_bp28_minimal

1.2

[DRAFT] CIS Red Hat Enterprise Linux 9 基准(第 2 级 - 服务器)

xccdf_org.ssgproject.content_profile_cis

草案[a]

[DRAFT] CIS Red Hat Enterprise Linux 9 基准(第 1 级 - 服务器)

xccdf_org.ssgproject.content_profile_cis_server_l1

DRAFT[a]

[DRAFT] CIS Red Hat Enterprise Linux 9 Benchmark for Level 1 - Workstation

xccdf_org.ssgproject.content_profile_cis_workstation_l1

DRAFT[a]

[DRAFT] CIS Red Hat Enterprise Linux 9 Benchmark for Level 2 - Workstation

xccdf_org.ssgproject.content_profile_cis_workstation_l2

DRAFT[a]

[DRAFT] 在非保障信息系统和机构中未分类的信息(NIST 800-171)

xccdf_org.ssgproject.content_profile_cui

r2

澳大利亚网络安全中心(ACSC)要点 8

xccdf_org.ssgproject.content_profile_e8

未版本化

健康保险可移植性和责任法案(HIPAA)

xccdf_org.ssgproject.content_profile_hipaa

未版本化

澳大利亚网络安全中心(ACSC)ISM 官方

xccdf_org.ssgproject.content_profile_ism_o

未版本化

[DRAFT] 常规目的操作系统的保护配置文件

xccdf_org.ssgproject.content_profile_ospp

4.2.1

适用于 Red Hat Enterprise Linux 9 的 PCI-DSS v3.2.1 控制基本行

xccdf_org.ssgproject.content_profile_pci-dss

3.2.1

[DRAFT] DISA STIG for Red Hat Enterprise Linux 9

xccdf_org.ssgproject.content_profile_stig

草案[b]

[DRAFT] DISA STIG with GUI for Red Hat Enterprise Linux 9

xccdf_org.ssgproject.content_profile_stig_gui

DRAFT[b]

[a] CIS 尚未发布 RHEL 9 的官方基准
[b] DISA 尚未发布 RHEL 9 的官方基准
警告

自动补救可能会导致系统无法正常工作。先在测试环境中运行补救。

(BZ#2045341, BZ#2045349, BZ#2045361, BZ#2045368, BZ#2045374, BZ#2045381, BZ#2045386, BZ#2045393, BZ#2045403)

RHEL 9 提供 fapolicyd 1.1

RHEL 9 提供 fapolicyd 软件包版本 1.1。最显著的改进包括:

  • 包含允许和拒绝执行规则的文件的 /etc/fapolicyd/rules.d/ 目录替代了 /etc/fapolicyd/fapolicyd.rules 文件。fagenrules 脚本现在将此目录中的所有组件规则文件合并到 /etc/fapolicyd/compiled.rules 文件。详情请查看新的 fagenrules(8) 手册页。
  • 除了用于将 RPM 数据库之外的文件标记为可信的 /etc/fapolicyd/fapolicyd.trust 文件外,您现在可以使用新的 /etc/fapolicyd/trust.d 目录,它支持将可信文件列表分成多个文件。您还可以通过使用 fapolicyd-cli -f 子命令及 --trust-file 指令,为这些文件添加一个文件项。如需更多信息,请参阅 fapolicyd-cli(1)fapolicyd.trust(13) 手册页。
  • fapolicyd 信任数据库现在支持文件名中的空格。
  • 现在,当将文件添加到信任数据库时,fapolicyd 会保存可执行文件的正确路径。

(BZ#2032408)

rsyslog 包含用于高性能操作和 CEF 的 mmfields 模块

rsyslog 现在包含 rsyslog-mmfields 子软件包,它提供 mmfields 模块。这是使用 property replacer 字段提取的替代方式,但与属性替换器不同,所有字段都会一次性提取并存储在结构化的数据部分中。因此,您可以使用 mmfields 特别用于处理基于字段的日志格式,如 Common Event Format(CEF),并且如果您需要大量字段或重复使用特定字段,可以使用 mmfields。在这些情况下,mmfields 的性能比现有 Rsyslog 功能要提高性能。

(BZ#2027971)

单独 rsyslog-logrotate 软件包中包含的 logrotate

logrotate 配置与主 rsyslog 软件包分隔到新的 rsyslog-logrotate 软件包中。这在某些最小环境中非常有用,例如不需要日志轮转的情况,以防止安装不必要的依赖项。

(BZ#1992155)

sudo 支持 Python 插件

通过 sudo 程序版本 1.9(包括在 RHEL 9 中),您可以在 Python 中编写 sudo 插件。这样可以更轻松地增强 sudo 以更精确地适合特定的场景。

如需更多信息,请参阅 sudo_plugin_python(8) man page。

(BZ#1981278)

libseccomp 的版本为 2.5.2

RHEL 9.0 提供了上游版本 2.5.2 libseccomp 软件包。与之前的版本相比,这个版本提供了很多程序错误修复和增强,最重要的是:

  • 将 Linux 的 syscall 表更新为 v5.14-rc7 版本。
  • 在 Python 绑定中添加 get_notify_fd() 函数来获取通知文件描述符。
  • 将所有架构的多路系统调用处理整合到一个位置。
  • 为 PowerPC(PPC)和 MIPS 架构添加了多路系统调用支持。
  • 更改内核中的 SECCOMP_IOCTL_NOTIF_ID_VALID 操作的含义。
  • libseccomp 文件描述符通知逻辑已被修改来支持内核之前和现在对 SECCOMP_IOCTL_NOTIF_ID_VALID 的使用。
  • 修复了一个错误,seccomp_load() 只能调用一次。
  • 对通知 fd 的处理进行了更改,在过滤有一个 _NOTIFY 操作时只请求一个通知 fd
  • seccomp_add_rule(3) manpage 中添加了与 SCMP_ACT_NOTIFY 相关的内容。
  • 阐明维护器的 GPG 密钥。

(BZ#2019887)

Clevis 现在支持 SHA-256

在这个版本中,Clevis 框架支持 SHA-256 算法作为 JSON Web 密钥(JWK)指纹的默认哈希值,如 RFC 7638 的建议。因为旧的 thumbprints(SHA-1)仍被支持,所以您仍可以解密之前加密的数据。

(BZ#1956760)