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 的加密算法。
OpenSSL 不能在 FIPS 模式下使用引擎
引擎 API 在 OpenSSL 3.0 中已弃用,其与 OpenSSL Federal Information Processing Standards(FIPS)实现和其他兼容 FIPS 的实现不兼容。因此,OpenSSL 无法在 FIPS 模式下运行引擎。对这个问题没有临时解决方案。
PSK 密码suites 无法用于 FUTURE
加密策略
预共享密钥(PSK)密码组合不能被识别为执行完美的转发保密(PFS)密钥交换方法。因此,ECDHE-PSK
和 DHE-PSK
加密套件无法与配置为 SECLEVEL=3
的 OpenSSL 一起工作,例如使用 FUTURE
加密策略。作为临时解决方案,您可以为使用 PSK 密码的应用程序设置限制较低的加密策略或设置较低的安全级别(SECLEVEL
)。
GnuPG 错误地允许使用 SHA-1 签名,即使通过 crypto-policies
禁止使用 SHA-1 签名
无论系统范围的加密策略中定义的设置如何,GNU Privacy Guard(GnuPG)加密软件可以创建和验证使用 SHA-1 算法的签名。因此,您可以在 DEFAULT
加密策略中将 SHA-1 用于加密目的,这与这个不安全算法的系统范围弃用没有一致的。
要临时解决这个问题,请不要使用涉及 SHA-1 的 GnuPG 选项。因此,您将使用非安全 SHA-1 签名来防止 GnuPG 降低默认系统安全性。
有些 OpenSSH 操作不使用 FIPS 批准的接口
OpenSSH 使用的 OpenSSL 加密库提供两个接口: legacy 和 modern。由于对 OpenSSL 内部的更改,只有现代接口使用加密算法的 FIPS 认证的实现。因为 OpenSSH 对某些操作使用旧的接口,因此它不会遵守 FIPS 要求。
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 验证代理工作。
SELinux staff_u
用户可能会错误地切换到 unconfined_r
启用 secure_mode
布尔值后,staff_u
用户可能会错误地切换到 unconfined_r
角色。因此,staff_u
用户可以执行影响系统安全性的特权操作。
默认 SELinux 策略允许无限制的可执行文件使其堆栈可执行
SELinux 策略中的 selinuxuser_execstack
布尔值的默认状态是 on,这意味着无限制的可执行文件可以使其堆栈为可执行。可执行文件不应该使用这个选项,这通常代表开发的可执行代码的质量较差,或可能存在安全攻击的风险。但是,由于需要与其他工具、软件包和第三方产品保持兼容,红帽无法更改默认策略中的这个布尔值。如果您的环境没有此类兼容性问题,请使用 setsebool -P selinuxuser_execstack off
命令在您的本地策略中将这个布尔值设置为 off。
在 kickstart 安装过程中修复与服务相关的规则可能会失败
在 kickstart 安装过程中,OpenSCAP 工具有时会错误地显示服务的 enable
或disable
状态补救不需要。因此,OpenSCAP 可能会将安装的系统上的服务设置为不合规的状态。作为临时解决方案,您可以在 kickstart 安装后扫描并修复该系统。这可以解决与服务相关的问题。
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 服务器时,每个规则都会配置一个选项(ClientAliveCountMax
和 ClientAliveInterval
),它们的行为与之前的不同。因此,当 OpenSSH 达到这些规则配置的超时时,OpenSSH 不再断开空闲的 SSH 用户。作为临时解决方案,这些规则已从 DISA STIG for RHEL 9 和 DISA STIG with GUI for RHEL 9 配置集中临时删除,直到开发出解决方案为止。
fagenrules --load
无法正常工作
fapolicyd
服务无法正确处理信号挂起 (SIGHUP)。因此,在收到 SIGHUP 信号后 fapolicyd
会终止。因此,fagenrules --load
命令无法正常工作,规则更新需要手动重启 fapolicyd
。要临时解决这个问题,当规则中有任何更改时会重启 fapolicyd
服务,因此 fagenrules --load
可以正常工作。
Ansible 补救需要额外的集合
用 ansible-core
软件包替换 Ansible Engine 时,RHEL 订阅提供的 Ansible 模块的列表会减少。因此,运行使用包含在 scap-security-guide
软件包中的 Ansible 内容的补救需要来自 rhc-worker-playbook
软件包的集合。
对于 Ansible 补救,请执行以下步骤:
安装所需的软件包:
# dnf install -y ansible-core scap-security-guide rhc-worker-playbook
-
进入到
/usr/share/scap-security-guide/ansible
目录:# cd /usr/share/scap-security-guide/ansible 运行使用环境变量的相关 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 内容。