10.7. 네트워크 RHEL 시스템 역할을 사용하여 802.1X 네트워크 인증으로 Cryo stat 연결 구성
NAC(Network Access Control)는 권한이 없는 클라이언트로부터 네트워크를 보호합니다. NetworkManager 연결 프로필에서 인증에 필요한 세부 정보를 지정하여 클라이언트가 네트워크에 액세스할 수 있도록 할 수 있습니다. Ansible 및 네트워크
RHEL 시스템 역할을 사용하면 이 프로세스를 자동화하고 플레이북에 정의된 호스트에서 연결 프로필을 원격으로 구성할 수 있습니다.
Ansible 플레이북을 사용하여 개인 키, 인증서 및 CA 인증서를 클라이언트에 복사한 다음 네트워크 RHEL 시스템 역할을 사용하여 802.1X 네트워크
인증으로 연결 프로필을 구성할 수 있습니다.
사전 요구 사항
- 제어 노드와 관리형 노드가 준비되어 있습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리형 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. - 네트워크는 802.1X 네트워크 인증을 지원합니다.
-
관리 노드에
wpa_supplicant
패키지가 설치되어 있어야 합니다. - DHCP는 관리 노드의 네트워크에서 사용할 수 있습니다.
TLS 인증에 필요한 다음 파일은 제어 노드에 있습니다.
-
클라이언트 키는
/srv/data/client.key
파일에 저장됩니다. -
클라이언트 인증서는
/srv/data/client.crt
파일에 저장됩니다. -
CA 인증서는
/srv/data/ca.crt
파일에 저장됩니다.
-
클라이언트 키는
절차
중요한 변수를 암호화된 파일에 저장합니다.
자격 증명 모음을 생성합니다.
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
ansible-vault create
명령이 편집기를 열고 <key > : < value
> 형식으로 중요한 데이터를 입력합니다.pwd: <password>
- 변경 사항을 저장하고 편집기를 종료합니다. Ansible은 자격 증명 모음의 데이터를 암호화합니다.
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure a wifi connection with 802.1X authentication hosts: managed-node-01.example.com 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: 0400 - 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: Wifi connection profile with dynamic IP address settings and 802.1X ansible.builtin.import_role: name: rhel-system-roles.network vars: network_connections: - name: Wifi connection profile with dynamic IP address settings and 802.1X interface_name: wlp1s0 state: up type: wireless autoconnect: yes ip: dhcp4: true auto6: true wireless: ssid: "Example-wifi" key_mgmt: "wpa-eap" ieee802_1x: identity: <user_name> eap: tls private_key: "/etc/pki/tls/client.key" private_key_password: "{{ pwd }}" private_key_password_flags: none client_cert: "/etc/pki/tls/client.pem" ca_cert: "/etc/pki/tls/cacert.pem" domain_suffix_match: "example.com"
예제 플레이북에 지정된 설정은 다음과 같습니다.
ieee802_1x
- 이 변수에는 802.1X 관련 설정이 포함되어 있습니다.
EAP: tls
-
EAP(Extensible Authentication Protocol)에 대한 인증서 기반
TLS
인증 방법을 사용하도록 프로필을 구성합니다.
플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의
/usr/share/ansible/roles/rhel-system-roles.network/README.md
파일을 참조하십시오.플레이북 구문을 확인합니다.
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook --ask-vault-pass ~/playbook.yml
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
file -
/usr/share/doc/rhel-system-roles/network/
디렉터리