11.5. 安全性

tangd-keygen 无法正确处理非默认的 umask

tangd-keygen 脚本不会更改生成的密钥文件的文件权限。因此,在具有阻止向其他用户读取密钥的默认用户文件创建模式掩码(umask)的系统上,tang-show-keys 命令会返回错误消息 Internal Error 500 ,而不是显示密钥。

要临时解决这个问题,请使用 chmod o+r *.jwk 命令更改 /var/db/tang 目录中的文件的权限。

Bugzilla:2188743

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 协议版本。

Bugzilla: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 连接。

Bugzilla:1685470

当使用特定语法时,scp 会让将文件复制到自己的文件

scp 实用程序从安全复制协议 (SCP) 改为更安全的 SSH 文件传输协议 (SFTP)。因此,将文件从位置复制到同一位置,从而擦除文件内容。此问题会产生以下语法:

scp localhost:/myfile localhost:/myfile

要临时解决这个问题,请不要使用这个语法将文件复制到与源位置相同的目标。

这个问题已针对以下语法解决:

  • scp /myfile localhost:/myfile
  • scp localhost:~/myfile ~/myfile

Bugzilla:2056884

OSCAP Anaconda 附加组件不会在图形安装中获取定制的配置文件

OSCAP Anaconda 附加组件不提供一个选项,来在 RHEL 图形安装中选择或取消选择安全配置文件的定制。从 RHEL 8.8 开始,当从存档或 RPM 软件包安装时,附加组件不会考虑定制。因此,安装会显示以下出错信息,而不是获取 OSCAP 定制的配置文件:

There was an unexpected problem with the supplied content.

要临时解决这个问题,您必须在 Kickstart 文件的 %addon org_fedora_oscap 部分中指定路径,例如:

xccdf-path = /usr/share/xml/scap/sc_tailoring/ds-combined.xml
tailoring-path = /usr/share/xml/scap/sc_tailoring/tailoring-xccdf.xml

因此,您只能将用于 SCAP 定制的配置文件的图形安装与相应的 Kickstart 规格一起使用。

Bugzilla:2165920

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 内容。

Bugzilla:2105162

oscap-anaconda-addon 不允许带有 Network Servers 软件包组的系统的 CIS 强化

当在选择了 Network Servers 软件包组的系统上使用 CIS 安全配置文件(cis,cis_server_l1,cis_workstation_l1, 或 cis_workstation_l2)安装 RHEL 网络服务器时,oscap-anaconda-addon 会发送错误消息 package tftp has been added to the list of excluded packages, but it can’t be removed from the current software selection without breaking the install。要继续安装,请回到 Software Selection ,并取消选择 Network Servers 附加软件,以允许安装和强化完成。然后,安装所需的软件包。

Bugzilla:2172264

Keylime 不接受串联的 PEM 证书

当 Keylime 将证书链作为 PEM 格式的、串联在一个文件中的多个证书接收时,keylime-agent-rust Keylime 组件在签名验证过程中不能正确地使用所有提供的证书,导致 TLS 握手失败。因此,客户端组件(keylime_verifierkeylime_tenant)无法连接到 Keylime 代理。要临时解决这个问题,请只使用一个证书而不是多个证书。

Jira:RHELPLAN-157225

Keylime 需要 tls_dir = default的特定文件

当在 Keylime verifier 或 registrar 配置中将 tls_dir 变量设为 default 时,Keylime 会检查 /var/lib/keylime/cv_ca 目录中是否存在 cacert.crt 文件。如果文件不存在,则 keylime_verifierkeylime_registrar 服务无法启动,会在日志中记录以下信息:Exception: It appears that the verifier has not yet created a CA and certificates, please run the verifier first。因此,Keylime 会拒绝具有不同文件名的自定义证书颁发机构(CA)证书,即使它们被在 /var/lib/keylime/ca_cv 目录中。

要临时解决这个问题并使用自定义 CA 证书,请手动指定 tls_dir =/var/lib/keylime/ca_cv,而不是使用 tls_dir = default

Jira:RHELPLAN-157337

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

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

Bugzilla:2064274

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 配置集中临时删除,直到开发出解决方案为止。

Bugzilla:2038978

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

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

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

Bugzilla:2070722

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 验证代理工作。

Bugzilla:2073567

OpenSCAP 内存消耗问题

在具有有限内存的系统上,OpenSCAP 扫描程序可能会预先终止,或者可能无法产生结果文件。要临时解决这个问题,您可以自定义扫描配置文件,以取消选择涉及递归整个 / 文件系统的规则:

  • rpm_verify_hashes
  • rpm_verify_permissions
  • rpm_verify_ownership
  • file_permissions_unauthorized_world_writable
  • no_files_unowned_by_user
  • dir_perms_world_writable_system_owned
  • file_permissions_unauthorized_suid
  • file_permissions_unauthorized_sgid
  • file_permissions_ungroupowned
  • dir_perms_world_writable_sticky_bits

如需了解更多详细信息和临时解决方案,请参阅相关的 知识库文章

Bugzilla:2161499

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

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

BZ#1834716