4.5. Autenticação de um cliente RHEL para a rede usando a norma 802.1X

Os administradores freqüentemente usam o Controle de Acesso à Rede (NAC) baseado no padrão IEEE 802.1X para proteger uma rede contra clientes LAN e Wi-Fi não autorizados. Os procedimentos nesta seção descrevem diferentes opções para configurar a autenticação da rede.

4.5.1. Configuração de uma conexão Ethernet estática com autenticação de rede 802.1X usando as funções do sistema RHEL

Usando as funções do Sistema RHEL, você pode automatizar a criação de uma conexão Ethernet que usa o padrão 802.1X para autenticar o cliente. Este procedimento descreve como adicionar remotamente uma conexão Ethernet para a interface enp1s0 com as seguintes configurações, executando um Livro de Jogadas Possível:

  • Um endereço IPv4 estático - 192.0.2.1 com uma máscara de sub-rede /24
  • Um endereço IPv6 estático - 2001:db8:1::1 com uma máscara de sub-rede /64
  • Um gateway padrão IPv4 - 192.0.2.254
  • Um gateway padrão IPv6 - 2001:db8:1::fffe
  • Um servidor DNS IPv4 - 192.0.2.200
  • Um servidor DNS IPv6 - 2001:db8:1::ffbb
  • Um domínio de busca DNS - example.com
  • 802.1X autenticação de rede usando o protocolo TLS Extensible Authentication Protocol (EAP)

Execute este procedimento no Nó de controle possível.

Pré-requisitos

  • Os pacotes ansible e rhel-system-roles estão instalados no nó de controle.
  • Se você usar um usuário remoto diferente de root ao executar o playbook, você deve ter as permissões apropriadas sudo no nó gerenciado.
  • A rede suporta autenticação de rede 802.1X.
  • O nó gerenciado utiliza o NetworkManager.
  • Os seguintes arquivos necessários para autenticação TLS existem no nó de controle:

    • A chave do cliente armazenada no arquivo /srv/data/client.key.
    • O certificado do cliente armazenado no arquivo /srv/data/client.crt.
    • O certificado da Autoridade Certificadora (CA) armazenado no arquivo /srv/data/ca.crt.

Procedimento

  1. Se o anfitrião no qual você deseja executar as instruções no playbook ainda não estiver inventariado, adicione o IP ou nome deste anfitrião ao arquivo /etc/ansible/hosts Inventário possível:

    node.example.com
  2. Crie o playbook ~/enable-802.1x.yml com o seguinte conteúdo:

    ---
    - 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. Execute o livro de brincadeiras:

    • Para se conectar como usuário root ao host gerenciado, entre:

      # ansible-playbook -u root ~/enable-802.1x.yml
    • Para conectar-se como usuário ao host administrado, entre:

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

      A opção --ask-become-pass garante que o comando ansible-playbook solicita a senha sudo do usuário definido no -u user_name opção.

    Se você não especificar o -u user_name ansible-playbook se conecta ao host gerenciado como o usuário que está atualmente conectado ao nó de controle.

Recursos adicionais

  • Para detalhes sobre os parâmetros usados em network_connections e para informações adicionais sobre o Sistema de Papel network, consulte o arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre os parâmetros 802.1X, consulte a seção ieee802_1x no arquivo /usr/share/ansible/roles/rhel-system-roles.network/README.md.
  • Para obter detalhes sobre o comando ansible-playbook, consulte a página de manual ansible-playbook(1).