33.5. EAP를 사용하여 네트워크 클라이언트를 안전하게 인증하도록 FreeRADIUS 구성
Freeradius는 다양한 EAP(Extensible Authentication Protocol) 방법을 지원합니다. 그러나 보안 네트워크의 경우 다음과 같은 보안 EAP 인증 방법만 지원하도록 FreeRADIUS를 구성합니다.
- EAP-TLS(전송 계층 보안)는 인증서를 사용하여 클라이언트를 인증하는 보안 TLS 연결을 사용합니다. EAP-TLS를 사용하려면 각 네트워크 클라이언트 및 서버의 서버 인증서에 대한 TLS 클라이언트 인증서가 필요합니다. 동일한 CA(인증 기관)가 인증서를 발급해야 합니다. 사용하는 CA에서 발급한 모든 클라이언트 인증서는 FreeRADIUS 서버에 인증할 수 있으므로 항상 자체 CA를 사용하여 인증서를 생성합니다.
- EAP-TTLS(터널링된 전송 계층 보안)는 보안 TLS 연결을 외부 인증 프로토콜로 사용하여 터널을 설정합니다. 그런 다음 내부 인증은 예를 들어 암호 인증 프로토콜(PAP) 또는 챌린지 핸드셰이크 인증 프로토콜(CHAP)을 사용합니다. EAP-TTLS를 사용하려면 TLS 서버 인증서가 필요합니다.
- EAP-PEAP(보안 확장 가능한 인증 프로토콜)는 보안 TLS 연결을 외부 인증 프로토콜로 사용하여 터널을 설정합니다. 인증자는 RADIUS 서버의 인증서를 인증합니다. 이후 supplicant는 Microsoft 챌린지 핸드셰이크 인증 프로토콜 버전 2(MS-CHAPv2) 또는 기타 방법을 사용하여 암호화된 터널을 통해 인증합니다.
기본 FreeRADIUS 구성 파일은 문서 역할을 하며 모든 매개 변수 및 지시문을 설명합니다. 특정 기능을 비활성화하려면 구성 파일에서 해당 부분을 제거하는 대신 주석 처리하십시오. 이를 통해 구성 파일 및 포함된 문서의 구조를 유지할 수 있습니다.
사전 요구 사항
-
freeradius
패키지를 설치했습니다. -
/etc/raddb/
디렉토리에 있는 구성 파일은 변경되지 않고freeradius
패키지에서 제공하는 대로입니다. 서버에 다음 파일이 있습니다.
-
FreeRADIUS 호스트의 TLS 개인 키:
/etc/raddb/certs/server.key
-
FreeRADIUS 호스트의 TLS 서버 인증서:
/etc/raddb/certs/server.pem
-
TLS CA 인증서:
/etc/raddb/certs/ca.pem
파일을 다른 위치에 저장하거나 이름이 다른 경우
/etc/raddb/mods-available/eap
파일에private
,_key_file
certificate_file
매개변수를 설정합니다.-
FreeRADIUS 호스트의 TLS 개인 키:
절차
Diffie-Hellman(Diffie-Hellman) 매개변수가 있는
/etc/raddb/certs/dh
가 없는 경우 새로 생성합니다. 예를 들어 2048비트로 DH 파일을 만들려면 다음을 입력합니다.# openssl dhparam -out /etc/raddb/certs/dh 2048
보안상의 이유로 2048비트 미만의 DH 파일을 사용하지 마십시오. 비트 수에 따라 파일 생성에 몇 분이 걸릴 수 있습니다.
DH 매개변수를 사용하여 TLS 개인 키, 서버 인증서, CA 인증서 및 파일에 대한 보안 권한을 설정합니다.
# chmod 640 /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh # chown root:radiusd /etc/raddb/certs/server.key /etc/raddb/certs/server.pem /etc/raddb/certs/ca.pem /etc/raddb/certs/dh
/etc/raddb/mods-available/eap
파일을 편집합니다.private_key_password
매개변수에서 개인 키의 암호를 설정합니다.eap { ... tls-config tls-common { ... private_key_password = key_password ... } }
환경에 따라
eap
지시문의default_eap_type
매개변수를 사용하는 기본 EAP 유형으로 설정합니다.eap { ... default_eap_type = ttls ... }
보안 환경의 경우
ttls
,tls
또는peap
만 사용하십시오.md5
지시문을 주석 처리하여 비보안 EAP-MD5 인증 방법을 비활성화합니다.eap { ... # md5 { # } ... }
기본 구성 파일에서 다른 비보안 EAP 인증 방법은 기본적으로 주석 처리됩니다.
/etc/raddb/sites-available/default
파일을 편집하고eap
이외의 모든 인증 방법을 주석으로 처리하십시오.authenticate { ... # Auth-Type PAP { # pap # } # Auth-Type CHAP { # chap # } # Auth-Type MS-CHAP { # mschap # } # mschap # digest ... }
이렇게 하면 외부 인증에 대해 EAP만 활성화되고 일반 텍스트 인증 방법을 비활성화합니다.
/etc/raddb/clients.conf
파일을 편집합니다.localhost
및localhost_ipv6
클라이언트 지시문에 보안 암호를 설정합니다.client localhost { ipaddr = 127.0.0.1 ... secret = localhost_client_password ... } client localhost_ipv6 { ipv6addr = ::1 secret = localhost_client_password }
네트워크 인증자의 클라이언트 지시문을 추가합니다.
client hostapd.example.org { ipaddr = 192.0.2.2/32 secret = hostapd_client_password }
선택 사항: 다른 호스트도 FreeRADIUS 서비스에 액세스할 수 있어야 하는 경우 다음과 같이 클라이언트 지시문을 추가합니다.
client <hostname_or_description> { ipaddr = <IP_address_or_range> secret = <client_password> }
ipaddr
매개변수는 IPv4 및 IPv6 주소를 허용하고, 선택적 CIDR(Classless inter-domain routing) 표기법을 사용하여 범위를 지정할 수 있습니다. 그러나 이 매개변수에는 하나의 값만 설정할 수 있습니다. 예를 들어 IPv4 및 IPv6 주소에 대한 액세스 권한을 부여하려면 두 개의 클라이언트 지시문을 추가해야 합니다.client 지시문에 대한 설명적 이름(예: 호스트 이름 또는 IP 범위가 사용되는 위치를 설명하는 단어)을 사용합니다.
EAP-TTLS 또는 EAP-PEAP를 사용하려면 사용자를
/etc/raddb/users
파일에 추가합니다.example_user Cleartext-Password := "user_password"
EAP-TLS(인증서 기반 인증)를 사용해야 하는 사용자의 경우 항목을 추가하지 마십시오.
구성 파일을 확인합니다.
# radiusd -XC ... Configuration appears to be OK
firewalld
서비스에서 RADIUS 포트를 엽니다.# firewall-cmd --permanent --add-service=radius # firewall-cmd --reload
이름이 지정된 서비스를 활성화하고 시작합니다.
# systemctl enable --now radiusd
문제 해결
이름이 지정된
서비스를
중지합니다.# systemctl stop radiusd
디버그 모드에서 서비스를 시작합니다.
# radiusd -X ... Ready to process requests
-
확인
섹션에 언급된 대로 FreeRADIUS 호스트에서 인증 테스트를 수행합니다.
다음 단계
- 더 이상 필요하지 않은 인증 방법 및 기타 기능을 비활성화합니다.