24.4. 使用 sshd RHEL 系统角色覆盖 SSH 服务器上的系统范围的加密策略


当默认加密设置不符合某些安全或兼容性需求时,您可能需要使用 sshd RHEL 系统角色覆盖 OpenSSH 服务器上的系统范围的加密策略。特别是在以下值得注意的情况:

  • 与旧客户端的兼容:必须使用比默认值弱的加密算法、密钥交换协议或密码。
  • 强制执行更强大的安全策略:同时,您可以禁用较弱的算法。这样的措施可能会超出默认的系统加密策略,特别是在高度安全和监管的环境中。
  • 性能考虑:系统默认值可能会强制实施更强大的算法,这些算法对于某些系统来说可能是计算密集型的。
  • 针对特定安全需求进行自定义:针对默认加密策略未涵盖的独特要求进行调整。
警告

sshd RHEL 系统角色不可能覆盖加密策略的所有方面。例如,在不同的层上可能会禁止 SHA-1 签名,因此对于更通用的解决方案 ,请参阅使用 RHEL 系统角色设置自定义加密策略

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    - name: Deploy SSH configuration for OpenSSH server
      hosts: managed-node-01.example.com
      tasks:
        - name: Overriding the system-wide cryptographic policy
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.sshd
          vars:
            sshd_sysconfig: true
            sshd_sysconfig_override_crypto_policy: true
            sshd_KexAlgorithms: ecdh-sha2-nistp521
            sshd_Ciphers: aes256-ctr
            sshd_MACs: hmac-sha2-512-etm@openssh.com
            sshd_HostKeyAlgorithms: rsa-sha2-512,rsa-sha2-256
    Copy to Clipboard

    示例 playbook 中指定的设置包括如下:

    sshd_KexAlgorithms
    您可以选择密钥交换算法,例如 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1diffie-hellman-group-exchange-sha256
    sshd_Ciphers
    您可以选择密码,例如 aes128-ctres192-ctraes256-ctr
    sshd_MACs
    您可以选择 MAC,例如 hmac-sha2-256hmac-sha2-512hmac-sha1
    sshd_HostKeyAlgorithms
    您可以选择一个公钥算法,如 ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521ssh-rsa

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.sshd/README.md 文件。

    注意

    在 RHEL 9 受管节点上,系统角色会将配置写入到 /etc/ssh/sshd_config.d/00-ansible_system_role.conf 文件中,其中加密选项会被自动应用。您可以使用 sshd_config_file 变量更改文件。但是,为了确保配置有效,请使用一个按字典顺序位于 /etc/ssh/sshd_config.d/50-redhat.conf 文件之前的文件名,其中包括配置的加密策略。

    在 RHEL 8 受管节点上,您必须通过将 sshd_sysconfig_override_crypto_policysshd_sysconfig 变量设置为 true 来启用覆盖。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard

验证

  • 您可以通过使用详细的 SSH 连接验证并在以下输出中检查定义的变量,来验证流程是否成功:

    $ ssh -vvv <ssh_server>
    ...
    debug2: peer server KEXINIT proposal
    debug2: KEX algorithms: ecdh-sha2-nistp521
    debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256
    debug2: ciphers ctos: aes256-ctr
    debug2: ciphers stoc: aes256-ctr
    debug2: MACs ctos: hmac-sha2-512-etm@openssh.com
    debug2: MACs stoc: hmac-sha2-512-etm@openssh.com
    ...
    Copy to Clipboard
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat