우분투 리눅스의 RADIUS 클라이언트 설정하기 (pam_radius_auth)

앞의 포스트에서 Windows Server 2012의 Active Directory에 Radius 서버 설정 방법을 포스팅했다. 이제 우분투 리눅스에 SSH 접속 시 AD의 인증을 받을 수 있도록 Ubuntu 리눅스 서버가 Radius 클라이언트로 동작하도록 설정할 차례다.

일반적으로 Radius 인증은 라우터, L3스위치, L4스위치 등 네트워크 장비의 관리자 계정 또는 무선 네트워크 접속 시 사용자 인증을 위해 사용하는 경우가 많지만 리눅스 서버의 사용자 접속 시 인증을 위해서도 사용할 수 있다. 이는 리눅스나 유닉스가 PAM (Pluggable Authentication Module)이라는 방식을 지원하기 때문에 가능하다.

지금부터 리눅스의 Radius 클라이언트 PAM 모듈 설치와 SSH 설정에 대해 설명한다.

우분투 리눅스 용 libpam-radius-auth 설치하기

가장 먼저 할일은 libpam-radius-auth 라는 PAM 모듈을 설치하는 것이다.

libpam-radius-auth 모듈 설치하기
libpam-radius-auth 모듈 설치하기

만약 우분투 린구스에 FreeRadius 서버를 추가로 설치하지 않는다면 뒤의 libpam0g-dev와 gcc는 설치하지 않아도 된다.

$ sudo apt-get install libpam-radius-auth  명령만 실행하면 된다.

sshd_config 설정 변경

libpam-radius-auth 모듈을 설치했다면 ssh 대몬의 설정을 변경할 차례다. sshd 대몬의 설정파일은 /etc/ssh 디렉토리 아래에 있다.

$ sudo vi /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config

ChallengeResponseAuthentication 항목을 찾으면 기본적으로 no 로 설정되어 있다. 이 값은 yes로 변경한뒤 저장한다.

ChallengeResponseAuthentication를 yes로 변경
ChallengeResponseAuthentication를 yes로 변경

다음은 UsePAM 이라는 항목을 찾는다. 예전엔 이 항목의 기본값이 no 였던적이 있다. 하지만 언제부턴가 yes로 바뀌어 있다.

혹시라도 UsePAM 항목이 no 라면 yes로 변경한다.

sshd_config 파일의 설정변경은 완료되었다. 저장하고 나온다.

PAM 설정 변경하기

PAM설정은 운영체제 계정으로 서버에 접속할 때 사용자 인증과정에서 운영체제가 수행해야 하는 과정이 정의되어 있는 설정이다. 이 설정파일들은 /etc/pam.d 디렉토리 아래에 모두 모여있다. 그 중에서 ssh 접속 시 수행할 인증과정은 sshd 파일에 정의되어 있다. 이 파일을 수정해야 한다.

다음과 같이 sshd 파일을 vi 혹은 nano 등 편집기로 연다.

$ sudo vi /etc/pam.d/sshd
$ sudo vi /etc/pam.d/sshd

sshd 파일의 최 상단에 다음과 같이 Radius 클라이언트 인증 모듈을 정의해준다. 다시한번 말하지만 가장 위에 저장되어야 한다.

auth sufficient pam_radius_auth.so
auth sufficient pam_radius_auth.so

이 설정의 의미는 ssh 접속 시 인증과정이 pam_radius_auth.so 라는 공유라이브러리에 정의되어 있으니 수행한다는 의미다.

sshd에서 수정할 내용은 이 한줄의 추가가 전부다. 참고로 sudo 파일도 찾아서 동일하게 추가해주어야 한다. 그렇지 않으면 sudo 명령 실행 시 오류가 발생한다. 꼭 sudo 파일도 수정해야 한다.

pam_radius_auth.conf 파일 수정하기

다음은 pam_radius_auth.so 에게 Radius 서버의 IP와 Secret 문자열을 알려줄 차례다. 이 설정은 /etc/pam_radius_auth.conf 파일에 해주어야 한다. 다음과 같이 파일을 편집기로 연다.

$ sudo vi /etc/pam_radius_auth.conf
$ sudo vi /etc/pam_radius_auth.conf

다음과 같이 127.0.0.1 라인을 지우거나 그 아래에 Radius 서버로 사용할 Active Directory 서버의 IP와 Secret을 추가한다.

Radius 서버 IP 주소와 Shared Secret 추가
Radius 서버 IP 주소와 Shared Secret 추가

가운데의 shared_secret는 Radius 서버 설정 시 입력해주는 공유 키(shared key)와 같은 값이다. Radius서버와 Radius클라이언트는 이 공유 시크릿 값으로 서로를 인증한다.

저장하고 나온다.

SSH 서비스 재 실행

이제 변경된 설정이 적용되도록 SSH 서비스(sshd 대몬)를 재실행해준다.

SSH 서비스 재구동
SSH 서비스 재구동

이제 모든 설정은 완료되었다.

이제 실제 접속 테스트를 하기 위해서는 Active Directory에 만들어져 있는 계정(ID)와 동일한 ID를 우분투 리눅스에 만들어주거나 이미 만들어져 있어야 한다.

예를 들어 AD에 taeho 라는 계정이 만들어져 있다면 우분투 리눅스에도 taeho 라는 계정(ID)가 있어야 한다. 그리고 비밀번호는 AD에 있는 taeho라는 계정에만 비밀번호가 있으면 된다.

즉 우분투리눅스의 shadow 파일에는 taeho라는 계정의 비밀번호 항목이 * 로 설정되어 있어도 무방하다. 즉 계정을 만들고 passwd 명령으로 비밀번호를 설정해주지 않아도 된다는 의미다. 아니..비밀번호는 설정하지 않는 것이 더 보안상 좋다고 할 수 있다.

이 과정을 테스트하면서 두 개의 에러에 맞딱드렸었다.

PAM_Auth_Radius 모듈에서는 MSChap v2를 지원하지 않는다.

우분투 리눅스에 로그인을 하면 로그인에 성공하든 실패하든 AD의 Radius 서버와 통신이 이루어지면 Windows의 이벤트로그에 접속 로그가 기록되는데… 다음과 같이 접속을 요청하는 계정이름으로 사용자가 기록된다.

Radius 서버의 액세스 거부 에러
Radius 서버의 액세스 거부 에러

그런데 로그인이 실패하면서 위와 같은 액세스 권한 거부 에러가 발생했다. 이벤트 로그의 아래를 보면 다음과 같다.

액세스 권한이 거부된 이유가 “일치하는 네트워크 정책에 사용할 수 없는 인증 방법을 사용하려고 하기 때문”이란다.

PAP 인증을 사용을 허가하지 않았을 때 에러
PAP 인증을 사용을 허가하지 않았을 때 에러

앞의 포스트에서 AD에 Radius 서버 설정 시 지원할 인증방법에서 PAP, SPAP를 사용하도록 설정하지 않으면 이런 에러가 발생한다. PAP와 SPAP를 사용할 수 있도록 NSP 서버에서 설정을 변경해주니 이 에러는 발생하지 않았다.

하지만 PAP와 SPAP는 보안 수준이 매우 낮은 인증프로토콜이다. 최소한 MS-CHAP v2 또는 PEAP-MS-CHAP v2를 사용할 수 있으면 좋겠지만 무료 버전의 PAM_AUTH_RADIUS 모듈에서는 지원하지 않는다.

하지만 실제 RADIUS 인증을 많이 사용하는 라우터, 스위치 등의 네트워크 장비에서는 MS-CHAP v2나 PEAP-MS-CHAP v2를 지원하는 경우가 많다.

이 문제를 해결하고 나서 또 다른 에러가 발생했다.

비밀번호가 다르거나
비밀번호가 다르거나 “다음 로그인 시 비밀번호를 반드시 변경” 요구 시 에러

이유 코드가 16번인데 이 에러는 비밀번호가 잘못 입력되었거나 AD 사용자 계정에서 관리자 권한으로 계정의 비밀번호를 초기화(변경) 후 다음에 로그인할 때 반드시 비밀번호를 변경하도록 설정했을 때 발생하는 에러다.

아무래도 pam_radius_auth 모듈과 Active Directory의 호환성이 완벽하게 지원되지 않는 것으로 생각된다.

AD의 사용자 계정 관리도구에서 해당 계정의 비밀번호를 변경해주고 다음번 로그인 시 비밀번호를 반드시 변경해야 하는 옵션의 체크를 해제했더니 이후부터는 AD인증을 통해 SSH 접속이 잘 되었다.

하지만 실제 로그인 시에는 AD의 인증을 받는지 그냥 운영체제의 shadow 파일에 있는 비밀번호를 이용해 인증을 받는지 차이가 느껴지지 않는다.

오늘은…여기까지..!!

#우분투리눅스Radius클라이언트설정 #pam_radius_auth.conf #pam_radius_auth.so

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top