리눅스 환경에서 LDAP을 이용한 PAM 구성

리눅스 시스템에서는 어플리케이션과 서비스에 대한 동적인증을 PAM (Pluggable Authentication Modules) 을 통해  제공하며, 크게 아래의 4가지 모듈로 구성되어있습니다.

① Authentication : 인증 서비스 모듈

② Account : 계정 관리 모듈

③ Password : 패스워드 관리 모듈

④ Session : 세션 관리 모듈 

위 네가지 모듈을 통해서 LDAP을 통한 Linux 인증을 구성할수 있습니다.

PAM 을 이용하는 서비스 목록은 /etc/pam.d/* 에서 확인할 수 있으며 , 지정되지 않은 서비스에 대한 인증은 other 파일의 설정 값에 적용됩니다.

[module_type]  [control_flag]  [module_path] [module_options]

먼저 [module_type]은 Linux에서 지원하는 PAM 모듈을 일커르며 위에서 말한 네가지 모듈 ( 인증, 계정 , 패스워드,세션)을 말합니다.

[control_flag] 의 경우 4가지 필드값을 제공하는데 아래를 참조하시어 사용하시기 바랍니다.

required 인증을 위해서 반드시 이 모듈에 대한 결과가 성공으로 반환되어야합니다. 실행 결과가 중간에 실패하여도 모듈에 대한 내용을 모두 진행하지만 서비스 사용자는 결과만 알게될뿐 어느 지점에서 실패가 발생하였는지 알수없습니다.
requisite required와 동일하게 인증을 위해서 반드시 이 모듈에 대한 실행 결과가 성공으로 반환되어야합니다. 이 모듈에서 실패처리가 나게되면 이후 진행이 되지않고 바로 실패처리로 종료됩니다.
sufficient 이 모듈의 실행 결과가 ‘성공’일 경우 같은 interface에 대한 테스트는 더이상 수행하지 않고 ‘성공’으로 종료됩니다.
optional 이 모듈에 대한 테스트 결과는 Skip 됩니다. ( 성공 or 실패 모두 Skip)

단, 다른 모듈에 대한 테스트에서 이 optional 모듈에 대한 테스트 결과를 참조할 수 있습니다.

include 다른 flag와 달리 include의 경우 모듈명 대신에 다른 PAM 관련 서비스가 포함되며 해당 서비스 인증이 통과되어야만 해당 인터페이스에 대한 인증이 성공합니다.

required 를 사용하게되면 어디서 실패가 발생했는지 로그에 남지 않아 추적이 어려우니 다른 Flag 옵션을 사용하여 진행하시길 바랍니다.

ldap과 연계하기 위해서는 pam_ldap.so 를 사용해야합니다. 해당 모듈을 사용하기위해서는 nslcd 데몬을 이용해야합니다.

를 수행하여 설치가 가능하지만 최신버전을 설치하기 위해서는 아래 URL에서 다운로드하시길 바랍니다.

(※ 이전 버전에서는 지원하지 않는 기능들이 존재합니다.)

1)  nss-pamd-ldapd 설치

Step 1.  다운로드 된 파일을 리눅스에 업로드하여 컴파일을 진행합니다.

Step 2. 구성 파일  수정

 

Step 1 을 진행하게되면, /etc 아래에 nslcd.conf 와 pam_ldap.conf 가 생성됩니다.

먼저 nslcd.conf를 위표처럼 맨 마지막라인으로 이동하여 uri, base, ssl 등을 설정해야합니다.

 

Step 3)  /etc/nsswitch .conf 

LDAP을 통해 OS 인증을 진행하기위해서는 nsswitch.conf 를 수정해야합니다.

아래와 같이 passwd, group, shadow 에 ldap 항목을 추가해야합니다.

 

Step 4) /etc/pam.d/password-auth

PAM 라이브러리를 호출하는 모든 응용프로그램 및 서비스 데몬에 공통 구성파일을 제공하는 파일로 pam_ldap.so 를 추가하는 작업이 필요합니다.

처음에 나열했던 [control_flag] 에 대한내용을 이곳에 적용하게됩니다.

auth 인터페이스 부분의 [pam_ldap.so] 라인을 확인해보시면 [sufficient] 로 설정되어있습니다.

[sufficient]는 해당 라인의 라이브러리가 성공으로 끝나면 해당 인터페이스의 내용은 모두 성공으로 처리한다는 내용입니다.  [sufficient]로 설정하지 않으시면 이후 [pam_deny.so] 에서 실패가 발생함으로 인증에 실패하게됩니다.

[pam_ldap.so] 뒤에 작성되는 옵션에 대한 내용은 아래 URL에서 확인하실수 있습니다.

Step 5) service nslcd start 

위의 내용과 같이 진행하셧다면 /etc/init.d/nslcd 파일이 존재하지않아 Service 명령어를 통해 실행이 불가능할것임으로 아래 내용을 해당위치에 저장하여 사용하시기 바립니다.

 

Step 6)  기능 테스트 

nscd를 함께 사용하면 데이터를 캐시에 저장하기때문에 LDAP에 요청하는 빈도가 낮아집니다. (debug 모드를 사용할 경우 stop 하셔야합니다.)

우선 nslcd 데몬을 실행하시고 getent 명령어가 제대로 수행되는지 확인해야합니다.

위와 같이 기본 로컬에 저장된 계정뿐만아니라 LDAP에 저장되어있는 계정들까지 출력이 된다면 정상적으로 연결된것입니다.

위와같이 출력이 안되신다면 nslcd -d 옵션을 이용하여 디버그 모드로 확인 또는

/var/log/message , /var/log/secure 두 로그를 확인하시면 어디서 pam 모듈이 실패했는지 확인하실수 있습니다.

 

 


답글 남기기