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

您可以使用 sshd RHEL 系统角色覆盖 SSH 服务器上的系统范围的加密策略。

在 Ansible 控制节点上执行此步骤。

先决条件

  • 您已准备好控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接到受管节点的帐户对其具有 sudo 权限。
  • 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。

流程

  1. 创建一个使用所需角色的 playbook:

    1. 创建新 YAML 文件,并在文本编辑器中打开,例如:

      # vi <cryptographic-playbook.yml>
    2. 插入以下示例:

      ---
      - name: Overriding the system-wide cryptographic policy
        hosts: all
        become: true
        roles:
          - 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

      在 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 来启用覆盖。

      您可以使用 rhel_system_roles.sshd RHEL 系统角色的以下变量来进一步自定义 SSH 服务器上的配置:

      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-nistp521,ssh-rsassh-dss
      sshd_KexAlgorithms

      您可以选择密钥交换算法,例如 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1diffie-hellman-group-exchange-sha256

      有关变量及其可能的值的更多信息,请参阅 sshd_config (5) 手册页。

  2. 运行 playbook:

    $ ansible-playbook <cryptographic-playbook.yml>

验证

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

    $ ssh -vvv localhost
    ...
    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
    ...