36.3. EAP를 사용하여 네트워크 클라이언트를 안전하게 인증하도록 FreeRADIUS 구성
Freeradius는 EAP(Extensible Authentication Protocol)의 다양한 방법을 지원합니다. 그러나 지원되는 보안 시나리오의 경우 EAP-TTLS(tunneled transport layer security)를 사용합니다.
EAP-TTLS를 사용하면 클라이언트는 보안 TLS 연결을 외부 인증 프로토콜로 사용하여 터널을 설정합니다. 그런 다음 내부 인증은 LDAP를 사용하여 Identity Management에 인증합니다. EAP-TTLS를 사용하려면 TLS 서버 인증서가 필요합니다.
기본 FreeRADIUS 구성 파일은 문서 역할을 하며 모든 매개변수 및 지시문을 설명합니다. 특정 기능을 비활성화하려면 구성 파일에서 해당 부분을 제거하는 대신 주석 처리하십시오. 이를 통해 구성 파일 및 포함된 문서의 구조를 유지할 수 있습니다.
사전 요구 사항
-
freeradius
및freeradius-ldap
패키지를 설치했습니다. -
/etc/raddb/
디렉토리의 구성 파일은 변경되지 않고freeradius
패키지에서 제공하는 대로 설정됩니다. - 호스트는 Red Hat Enterprise Linux IdM(Identity Management) 도메인에 등록되어 있습니다.
프로세스
개인 키를 생성하고 IdM에서 인증서를 요청합니다.
ipa-getcert request -w -k /etc/pki/tls/private/radius.key -f /etc/pki/tls/certs/radius.pem -o "root:radiusd" -m 640 -O "root:radiusd" -M 640 -T caIPAserviceCert -C 'systemctl restart radiusd.service' -N freeradius.idm.example.com -D freeradius.idm.example.com -K radius/freeradius.idm.example.com
# ipa-getcert request -w -k /etc/pki/tls/private/radius.key -f /etc/pki/tls/certs/radius.pem -o "root:radiusd" -m 640 -O "root:radiusd" -M 640 -T caIPAserviceCert -C 'systemctl restart radiusd.service' -N freeradius.idm.example.com -D freeradius.idm.example.com -K radius/freeradius.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certmonger
서비스는 개인 키를/etc/pki/tls/private/radius.key
파일에 저장하고/etc/pki/tls/certs/radius.pem
파일에 인증서를 저장하고 보안 권한을 설정합니다. 또한certmonger
는 인증서를 모니터링하고 만료되기 전에 갱신한 후 인증서가 갱신된 후반경된
서비스를 다시 시작합니다.CA에서 인증서를 발급했는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Diffie-Hellman(DH) 매개변수를 사용하여
/etc/raddb/certs/dh
파일을 만듭니다. 예를 들어 2048비트 소수를 사용하여 DH 파일을 만들려면 다음을 입력합니다.openssl dhparam -out /etc/raddb/certs/dh 2048
# openssl dhparam -out /etc/raddb/certs/dh 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 보안상의 이유로 2048비트 소수가 있는 DH 파일을 사용하지 마십시오. 비트 수에 따라 파일 생성에 몇 분이 걸릴 수 있습니다.
/etc/raddb/mods-available/eap
파일을 편집합니다.tls-config tls-common
지시문에서 TLS 관련 설정을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cryostat 지시문에서
default_eap_type
매개변수를ttls
:로 설정합니다.eap { ... default_eap_type = ttls ... }
eap { ... default_eap_type = ttls ... }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 비보안 EAP-MD5 인증 방법을 비활성화하려면
md5
지시문을 주석 처리합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 구성 파일에서 다른 비보안 EAP 인증 방법은 기본적으로 주석 처리됩니다.
/etc/raddb/sites-available/default
파일을 편집하고 Cryostat 이외의 모든 인증 방법을 주석처리합니다
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 외부 인증에 대해 EAP만 활성화되고 일반 텍스트 인증 방법을 비활성화합니다.
/etc/raddb/sites-available/inner-tunnel
파일을 편집하고 다음과 같이 변경합니다.-ldap
항목을 주석 처리하고ldap
모듈 구성을authorize
지시문에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow authenticate
지시문에서 LDAP 인증 유형의 주석을 제거합니다.authenticate { Auth-Type LDAP { ldap } }
authenticate { Auth-Type LDAP { ldap } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ldap
모듈을 활성화합니다.ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
# ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/raddb/mods-available/ldap
파일을 편집하고 다음과 같이 변경합니다.ldap
지시문에서 IdM LDAP 서버 URL과 기본 고유 이름(DN)을 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow FreeRADIUS 호스트와 IdM 서버 간에 TLS 암호화 연결을 사용하도록 서버 URL에서
ldaps
프로토콜을 지정합니다.ldap
지시문에서 IdM LDAP 서버의 TLS 인증서 유효성 검사를 활성화합니다.tls { ... require_cert = 'demand' ... }
tls { ... require_cert = 'demand' ... }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/etc/raddb/clients.conf
파일을 편집합니다.localhost
및localhost_ipv6
클라이언트 지시문에 보안 암호를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네트워크 인증자의 클라이언트 지시문을 추가합니다.
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다른 호스트도 FreeRADIUS 서비스에 액세스할 수 있어야 하는 경우 다음과 같이 클라이언트 지시문을 추가합니다.
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaddr
매개변수는 IPv4 및 IPv6 주소를 허용하고, 선택적 CIDR(Classless inter-domain routing) 표기법을 사용하여 범위를 지정할 수 있습니다. 그러나 이 매개변수에서 하나의 값만 설정할 수 있습니다. 예를 들어 IPv4 및 IPv6 주소에 대한 액세스 권한을 부여하려면 두 개의 클라이언트 지시문을 추가해야 합니다.클라이언트 지시문에 설명이 포함된 이름(예: 호스트 이름 또는 IP 범위가 사용되는 위치를 설명하는 단어)을 사용합니다.
구성 파일을 확인합니다.
radiusd -XC
# radiusd -XC ... Configuration appears to be OK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld
서비스에서 RADIUS 포트를 엽니다.firewall-cmd --permanent --add-service=radius firewall-cmd --reload
# firewall-cmd --permanent --add-service=radius # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 반경된
서비스를 활성화하고 시작합니다.systemctl enable --now radiusd
# systemctl enable --now radiusd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
문제 해결
반경
서비스가 시작되지 않으면 IdM 서버 호스트 이름을 확인할 수 있는지 확인합니다.host -v idm_server.idm.example.com
# host -v idm_server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 문제의 경우 디버그 모드에서
반경을
실행하십시오.반경된
서비스를 중지합니다.systemctl stop radiusd
# systemctl stop radiusd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 모드에서 서비스를 시작합니다.
radiusd -X
# radiusd -X ... Ready to process requests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
확인
섹션에서 참조된 FreeRADIUS 호스트에서 인증 테스트를 수행합니다.
다음 단계
- 더 이상 필수 인증 방법 및 사용하지 않는 기타 기능을 비활성화합니다.