搜索

19.10. 使用 network RHEL 系统角色配置带有 802.1X 网络身份验证 的静态以太网连接

download PDF

网络访问控制(NAC)保护网络不受未授权的客户端。您可以在 NetworkManager 连接配置集中指定身份验证所需的详情,以便客户端可以访问网络。通过使用 Ansible 和 network RHEL 系统角色,您可以在 playbook 中定义的主机上自动化这个过程,并远程配置连接配置集。

您可以使用 Ansible playbook 将私钥、证书和 CA 证书复制到客户端,然后使用 network RHEL 系统角色配置具有 802.1X 网络身份验证的连接配置文件。

先决条件

  • 您已准备好控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接到受管节点的帐户具有 sudo 权限。
  • 网络支持 802.1X 网络身份验证。
  • 受管节点使用 NetworkManager。
  • 控制节点上存在 TLS 身份验证所需的以下文件:

    • 客户端密钥存储在 /srv/data/client.key 文件中。
    • 客户端证书存储在 /srv/data/client.crt 文件中。
    • 证书颁发机构(CA)证书存储在 /srv/data/ca.crt 文件中。

步骤

  1. 将您的敏感变量存储在加密文件中:

    1. 创建密码库:

      $ ansible-vault create vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create 命令打开编辑器后,以 < key> : < value> 格式输入 敏感数据:

      pwd: <password>
    3. 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Configure an Ethernet connection with 802.1X authentication
      hosts: managed-node-01.example.com
      vars_files:
        - vault.yml
      tasks:
        - name: Copy client key for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0600
    
        - name: Copy client certificate for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          ansible.builtin.copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - name: Ethernet connection profile with static IP address settings and 802.1X
          ansible.builtin.include_role:
            name: rhel-system-roles.network
          vars:
            network_connections:
              - name: enp1s0
                type: ethernet
                autoconnect: yes
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                  gateway4: 192.0.2.254
                  gateway6: 2001:db8:1::fffe
                  dns:
                    - 192.0.2.200
                    - 2001:db8:1::ffbb
                  dns_search:
                    - example.com
                ieee802_1x:
                  identity: <user_name>
                  eap: tls
                  private_key: "/etc/pki/tls/private/client.key"
                  private_key_password: "{{ pwd }}"
                  client_cert: "/etc/pki/tls/certs/client.crt"
                  ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt"
                  domain_suffix_match: example.com
                state: up

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

    ieee802_1x
    此变量包含与 802.1X 相关的设置。
    EAP: tls
    将配置文件配置为对可扩展身份验证协议(EAP)使用基于证书的 TLS 身份验证方法。

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

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

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

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

验证

  • 访问需要网络身份验证的网络上的资源。

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件
  • /usr/share/doc/rhel-system-roles/network/ directory
  • Ansible vault
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.