8.6. 安全性

openssl 不检测 PKCS #11 令牌是否支持创建原始 RSA 或 RSA-PSS 签名

TLS 1.3 协议需要支持 RSA-PSS 签名。如果 PKCS #11 令牌不支持原始 RSA 或 RSA-PSS 签名,如果 PKCS #11 令牌持有密钥,使用 OpenSSL 库的服务器应用程序无法使用 RSA 密钥。因此,在上述场景中 TLS 通信会失败。

要临时解决这个问题,请配置服务器和客户端以使用 TLS 版本 1.2 作为可用最高 TLS 协议版本。

(BZ#1681178)

OpenSSL 错误处理 PKCS #11 tokens 不支持原始 RSA 或 RSA-PSS 签名

OpenSSL 库不会检测到 PKCS #11 令牌的与键相关的功能。因此,当使用不支持原始 RSA 或 RSA-PSS 签名的令牌创建签名时,建立 TLS 连接会失败。

要临时解决这个问题,请在 /etc/pki/tls/openssl.cnf 文件的 crypto_policy 部分的 .include 行后面添加以下行:

SignatureAlgorithms = RSA+SHA256:RSA+SHA512:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA512:ECDSA+SHA384
MaxProtocol = TLSv1.2

因此,可以在描述的场景中建立 TLS 连接。

(BZ#1685470)

FIPS 批准的加密在 FIPS 模式中可以正常工作

经 FIPS 批准的加密可在 OpenSSL 工具包中正常工作,无论系统设置是什么。因此,您可以使用系统以 FIPS 模式运行时应禁用的加密算法和密码,例如:

  • 使用 RSA 密钥交换的 TLS 密码套件可以正常工作。
  • 尽管使用 PKCS #1 和 SSLv23 补丁,或者使用比 2048 位更短的密钥,对公钥的加密算法进行基于 RSA 的加密算法。

(BZ#2053289)

OpenSSL 不能在 FIPS 模式下使用引擎

引擎 API 在 OpenSSL 3.0 中已弃用,其与 OpenSSL Federal Information Processing Standards(FIPS)实现和其他兼容 FIPS 的实现不兼容。因此,OpenSSL 无法在 FIPS 模式下运行引擎。对这个问题没有临时解决方案。

(BZ#2087253)

PSK 密码suites 无法用于 FUTURE 加密策略

预共享密钥(PSK)密码组合不能被识别为执行完美的转发保密(PFS)密钥交换方法。因此,ECDHE-PSKDHE-PSK 加密套件无法与配置为 SECLEVEL=3 的 OpenSSL 一起工作,例如使用 FUTURE 加密策略。作为临时解决方案,您可以为使用 PSK 密码的应用程序设置限制较低的加密策略或设置较低的安全级别(SECLEVEL)。

(BZ#2060044)

GnuPG 错误地允许使用 SHA-1 签名,即使通过 crypto-policies 禁止使用 SHA-1 签名

无论系统范围的加密策略中定义的设置如何,GNU Privacy Guard(GnuPG)加密软件可以创建和验证使用 SHA-1 算法的签名。因此,您可以在 DEFAULT 加密策略中将 SHA-1 用于加密目的,这与这个不安全算法的系统范围弃用没有一致的。

要临时解决这个问题,请不要使用涉及 SHA-1 的 GnuPG 选项。因此,您将使用非安全 SHA-1 签名来防止 GnuPG 降低默认系统安全性。

(BZ#2070722)

有些 OpenSSH 操作不使用 FIPS 批准的接口

OpenSSH 使用的 OpenSSL 加密库提供两个接口: legacy 和 modern。由于对 OpenSSL 内部的更改,只有现代接口使用加密算法的 FIPS 认证的实现。因为 OpenSSH 对某些操作使用旧的接口,因此它不会遵守 FIPS 要求。

(BZ#2087121)

gpg-agent 在 FIPS 模式下不作为 SSH 代理工作

在将密钥添加到 ssh-agent 程序时,gpg-agent 工具会创建 MD5 指纹,即使 FIPS 模式禁用了 MD5 摘要。因此,ssh-add 程序无法将密钥添加到身份验证代理中。

要临时解决这个问题,请在不使用 gpg-agent --daemon --enable-ssh-support 命令的情况下创建 ~/.gnupg/sshcontrol 文件。例如,您可以将 <FINGERPRINT> 0 格式的 gpg --list-keys 命令的输出粘贴到 ~/.gnupg/sshcontrol 。因此,gpg-agent 作为 SSH 验证代理工作。

(BZ#2073567)

SELinux staff_u 用户可能会错误地切换到 unconfined_r

启用 secure_mode 布尔值后,staff_u 用户可能会错误地切换到 unconfined_r 角色。因此,staff_u 用户可以执行影响系统安全性的特权操作。

(BZ#2021529)

默认 SELinux 策略允许无限制的可执行文件使其堆栈可执行

SELinux 策略中的 selinuxuser_execstack 布尔值的默认状态是 on,这意味着无限制的可执行文件可以使其堆栈为可执行。可执行文件不应该使用这个选项,这通常代表开发的可执行代码的质量较差,或可能存在安全攻击的风险。但是,由于需要与其他工具、软件包和第三方产品保持兼容,红帽无法更改默认策略中的这个布尔值。如果您的环境没有此类兼容性问题,请使用 setsebool -P selinuxuser_execstack off 命令在您的本地策略中将这个布尔值设置为 off。

(BZ#2064274)

在 kickstart 安装过程中修复与服务相关的规则可能会失败

在 kickstart 安装过程中,OpenSCAP 工具有时会错误地显示服务的 enabledisable 状态补救不需要。因此,OpenSCAP 可能会将安装的系统上的服务设置为不合规的状态。作为临时解决方案,您可以在 kickstart 安装后扫描并修复该系统。这可以解决与服务相关的问题。

(BZ#1834716)

STIG 配置集中的 SSH 超时规则配置了不正确的选项

对 OpenSSH 的更新会影响以下 Defense Information Systems Agency Security Technical Implementation Guide (DISA STIG) 配置集中的规则:

  • DISA STIG for RHEL 9 (xccdf_org.ssgproject.content_profile_stig)
  • DISA STIG with GUI for RHEL 9 (xccdf_org.ssgproject.content_profile_stig_gui)

在每个配置集中,以下两条规则会受到影响:

Title: Set SSH Client Alive Count Max to zero
CCE Identifier: CCE-90271-8
Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_keepalive_0

Title: Set SSH Idle Timeout Interval
CCE Identifier: CCE-90811-1
Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_idle_timeout

当应用到 SSH 服务器时,每个规则都会配置一个选项(ClientAliveCountMaxClientAliveInterval),它们的行为与之前的不同。因此,当 OpenSSH 达到这些规则配置的超时时,OpenSSH 不再断开空闲的 SSH 用户。作为临时解决方案,这些规则已从 DISA STIG for RHEL 9 和 DISA STIG with GUI for RHEL 9 配置集中临时删除,直到开发出解决方案为止。

(BZ#2038978)

fagenrules --load 无法正常工作

fapolicyd 服务无法正确处理信号挂起 (SIGHUP)。因此,在收到 SIGHUP 信号后 fapolicyd 会终止。因此,fagenrules --load 命令无法正常工作,规则更新需要手动重启 fapolicyd。要临时解决这个问题,当规则中有任何更改时会重启 fapolicyd 服务,因此 fagenrules --load 可以正常工作。

(BZ#2070655)

Ansible 补救需要额外的集合

ansible-core 软件包替换 Ansible Engine 时,RHEL 订阅提供的 Ansible 模块的列表会减少。因此,运行使用包含在 scap-security-guide 软件包中的 Ansible 内容的补救需要来自 rhc-worker-playbook 软件包的集合。

对于 Ansible 补救,请执行以下步骤:

  1. 安装所需的软件包:

    # dnf install -y ansible-core scap-security-guide rhc-worker-playbook
  2. 进入到 /usr/share/scap-security-guide/ansible 目录:# cd /usr/share/scap-security-guide/ansible
  3. 运行使用环境变量的相关 Ansible playbook,这些变量定义了到额外 Ansible 集合的路径:

    # ANSIBLE_COLLECTIONS_PATH=/usr/share/rhc-worker-playbook/ansible/collections/ansible_collections/ ansible-playbook -c local -i localhost, rhel9-playbook-cis_server_l1.yml

    cis_server_l1 替换为您要修复系统的配置文件的 ID。

因此,Ansible 内容会被正确处理。

注意

rhc-worker-playbook 中提供的集合的支持仅限于启用 scap-security-guide 中提供的 Ansible 内容。

(BZ#2105162)