Red Hat Training

A Red Hat training course is available for RHEL 8

第 19 章 使用 802.1X 标准向网络验证 RHEL 客户端

管理员通常使用基于 IEEE 802.1X 标准的基于端口的网络访问控制(NAC)来保护网络不受未授权 LAN 和 Wi-Fi 客户端的影响。本节中的步骤描述了配置网络身份验证的不同选项。

19.1. 使用 nmcli 在现有以太网连接中配置 802.1X 网络身份验证

使用 nmcli 工具,您可以配置客户端向网络验证其自身。这个过程描述了如何在现有名为 enp1s0 的 NetworkManager 以太网连接配置集中使用微软 Challenge-Handshake Authentication Protocol 版本 2(MSCHAPv2) 配置保护扩展验证协议(PEAP)验证。

先决条件

  1. 网络必须具有 802.1X 网络身份验证。
  2. 以太网连接配置集存在于 NetworkManager 中,且具有有效的 IP 配置。
  3. 如果需要客户端验证验证程序证书,则必须将证书颁发机构(CA)证书存储在 /etc/pki/ca-trust/source/anchors/ 目录中。
  4. 已安装 wpa_supplicant 软件包。

流程

  1. 将扩展验证协议(EAP)设置为 peap,内部验证协议为 mschapv2,用户名为:

    # nmcli connection modify enp1s0 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name

    请注意,您必须在单个命令中设置 802-1x.eap802-1x.phase2-auth802-1x.identity 参数。

  2. 另外,还可将该密码存储在配置中:

    # nmcli connection modify enp1s0 802-1x.password password
    重要

    默认情况下,网络管理器(NetworkManager)在 /etc/sysconfig/network-scripts/keys-connection_name 文件中以明文形式保存密码,这只可由 root 用户读取。但是,在配置文件中清除文本密码会有安全隐患。

    要提高安全性,将 802-1x.password-flags 参数设置为 0x1。使用这个设置,在有 GNOME 桌面环境或 nm-applet 的服务器上,NetworkManager 从这些服务中检索密码。在其他情况下,NetworkManager 会提示输入密码。

  3. 如果需要客户端验证验证器的证书,请将连接配置集中的 802-1x.ca-cert 参数设置为 CA 证书的路径:

    # nmcli connection modify enp1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
    注意

    为了安全起见,红帽建议使用验证程序证书来使客户端能够验证验证器的身份。

  4. 激活连接配置集:

    # nmcli connection up enp1s0

验证步骤

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

其它资源

  • 有关添加网络管理器以太网连接配置集的详情,请参考 第 9 章 配置以太网连接
  • 有关 802.1X 相关参数及其描述,请查看 nm-settings(5) man page 中的 802-1x settings 部分。
  • 有关 nmcli 工具程序的详情,请查看 nmcli(1) man page。

19.2. 使用 RHEL 系统角色通过 802.1X 网络身份验证配置静态以太网连接

使用 RHEL 系统角色,您可以自动创建使用 802.1X 标准验证客户端的以太网连接。此流程描述了如何通过运行 Ansible playbook 来远程为带有以下设置的 enp1s0 接口添加以太网连接:

  • 静态 IPv4 地址 - 192.0.2.1,子网掩码为 /24
  • 静态 IPv6 地址 - 2001:db8:1::1,子网掩码为 /64
  • IPv4 默认网关 - 192.0.2.254
  • IPv6 默认网关 - 2001:db8:1::fffe
  • IPv4 DNS 服务器 - 192.0.2.200
  • IPv6 DNS 服务器 - 2001:db8:1::ffbb
  • DNS 搜索域 - example.com
  • 802.1X 网络验证使用 TLS 可扩展验证协议(EAP)

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

先决条件

  • 在控制节点上安装 ansiblerhel-system-roles 软件包。
  • 如果您运行 playbook 时使用了与 root 不同的远程用户, 则此用户在受管节点上需要具有适当的 sudo 权限。
  • 网络支持 802.1X 网络身份验证。
  • 受管节点使用 NetworkManager。
  • control 节点上存在 TLS 身份验证所需的以下文件:

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

流程

  1. 如果 playbook 要针对其执行的主机还没有在清单中,请将此主机的 IP 或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/enable-802.1x.yml playbook:

    ---
    - name: Configure an Ethernet connection with 802.1X authentication
      hosts: node.example.com
      become: true
      tasks:
        - name: Copy client key for 802.1X authentication
          copy:
            src: "/srv/data/client.key"
            dest: "/etc/pki/tls/private/client.key"
            mode: 0600
    
        - name: Copy client certificate for 802.1X authentication
          copy:
            src: "/srv/data/client.crt"
            dest: "/etc/pki/tls/certs/client.crt"
    
        - name: Copy CA certificate for 802.1X authentication
          copy:
            src: "/srv/data/ca.crt"
            dest: "/etc/pki/ca-trust/source/anchors/ca.crt"
    
        - include_role:
            name: linux-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: "password"
                  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
  3. 运行 playbook:

    • root 用户身份连接到受管主机,输入:

      # ansible-playbook -u root ~/enable-802.1x.yml
    • 以用户身份连接到受管主机,请输入:

      # ansible-playbook -u user_name --ask-become-pass ~/ethernet-static-IP.yml

      --ask-become-pass 选项确定 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户 sudo 密码。

    如果没有指定 -u user_name 选项,请以当前登录到控制节点的用户 ansible-playbook 连接到受管主机。

其它资源

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md file
  • /usr/share/ansible/roles/rhel-system-roles.network/README.md file
  • ansible-playbook(1) man page

19.3. 使用 nmcli 在现有 Wi-Fi 连接中配置 802.1X 网络身份验证

使用 nmcli 工具,您可以配置客户端向网络验证其自身。这个过程描述了如何在现有名为 wlp1s0 的 NetworkManager Wi-Fi 连接配置集中使用微软 Challenge-Handshake Authentication Protocol 版本 2(MSCHAPv2) 配置保护扩展验证协议(PEAP)验证。

先决条件

  1. 网络必须具有 802.1X 网络身份验证。
  2. Wi-Fi 连接配置集存在于 NetworkManager 中,且具有有效的 IP 配置。
  3. 如果需要客户端验证验证程序证书,则必须将证书颁发机构(CA)证书存储在 /etc/pki/ca-trust/source/anchors/ 目录中。
  4. 已安装 wpa_supplicant 软件包。

流程

  1. 将 Wi-Fi 安全模式设置为 wpa-eap,扩展验证协议(EAP)为 peap,内部验证协议为 mschapv2,以及用户名:

    # nmcli connection modify wpl1s0 802-11-wireless-security.key-mgmt wpa-eap 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity user_name

    请注意,您必须在单个命令中设置 802-11-wireless-security.key-mgmt802-1x.eap802-1x.phase2-auth802-1x.identity 参数。

  2. 另外,还可将该密码存储在配置中:

    # nmcli connection modify wpl1s0 802-1x.password password
    重要

    默认情况下,网络管理器(NetworkManager)在 /etc/sysconfig/network-scripts/keys-connection_name 文件中以明文形式保存密码,这只可由 root 用户读取。但是,在配置文件中清除文本密码会有安全隐患。

    要提高安全性,将 802-1x.password-flags 参数设置为 0x1。使用这个设置,在有 GNOME 桌面环境或 nm-applet 的服务器上,NetworkManager 从这些服务中检索密码。在其他情况下,NetworkManager 会提示输入密码。

  3. 如果需要客户端验证验证器的证书,请将连接配置集中的 802-1x.ca-cert 参数设置为 CA 证书的路径:

    # nmcli connection modify wpl1s0 802-1x.ca-cert /etc/pki/ca-trust/source/anchors/ca.crt
    注意

    为了安全起见,红帽建议使用验证程序证书来使客户端能够验证验证器的身份。

  4. 激活连接配置集:

    # nmcli connection up wpl1s0

验证步骤

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

其它资源

  • 有关添加网络管理器以太网连接配置集的详情,请参考 第 10 章 管理 Wi-Fi 连接
  • 有关 802.1X 相关参数及其描述,请查看 nm-settings(5) man page 中的 802-1x settings 部分。
  • 有关 nmcli 工具程序的详情,请查看 nmcli(1) man page。