OpenLDAP 비밀번호 복잡성 모듈 pqchecker 추가 방법
참고 URL
https://www.meddeb.net/pqchecker/
https://github.com/mahiso/pqchecker
OpenLDAP 비밀번호 복잡도를 확인하는 모듈로는 check_password 모듈과 pqchecker 모듈 등이 있으며 저는 기존에 check_password 모듈을 사용했지만, 해당 모듈의 업데이트가 오래되어 비교적 최신인 pqchecker 모듈로 교체해 보았습니다.
pqchecker 모듈은 OpenLDAP 의 비밀번호 정책 오버레이(policyppolicy)와 상호 연동되는상호연동되는 모듈이기 때문에 ppolicy 가 사전에 설정되어 있어야 합니다. pqchecker 모듈은 비밀번호 변경 요청이 들어오면 pqparams.dat 에서 정의된 복잡도 설정 규칙에 맞는지 해당 암호를 검사한 후 규칙이 통과하면 LDAP 디렉터리에디렉토리에 저장하고 규칙이 통과하지 못하면 비밀번호 변경 요청을 거부하게 됩니다. 자세한 내용은 참고 URL 을 확인해 주시기 바랍니다.
설치 방법으로는 이미 컴파일된 바이너리 패키지를 이용하여 설치하는 방법과 직접 소스 컴파일을 하여 설치하는 방법이 있으며, 이 문서에서는 직접 소스를 컴파일하여 설치해보도록 하겠습니다.
pqchecker 모듈은 OpenLDAP 소스 파일의 헤더 파일에 의존성을 가지기 때문에 OpenLDAP 소스를 받아 make depend 를 해주어야 합니다.
1. OpenLDAP 컴파일
의존성 패키지 설치
[root@10–19–10–246 /]# yum -y install gcc gcc-c++ autoconf automake libdb-devel
OpenLDAP 다운로드
OpenLDAP 다운로드 및 컴파일
[root@10–19–10–246 /]# cd /usr/local/src/
[root@10–19–10–246 src]# wget https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.44.tgz
[root@10–19–10–246 src]# tar xvzf openldap-2.4.44.tgz
[root@10–19–10–246 src]# cd openldap-2.4.44
[root@10–19–10–246 openldap-2.4.44]# ./configure
[root@10–19–10–246 openldap-2.4.44]# make depend
2. pqchecker 컴파일
의존성 패키지 설치
[root@10–19–10–246 /]# yum -y install java java-devel libtool
pqchecker 다운로드 및 컴파일
[root@10–19–10–246 /]# cd /usr/local/src/
[root@10–19–10–246 src]# git clone https://github.com/mahiso/pqchecker.git
[root@10–19–10–246 src]# cd pqchecker
[root@10–19–10–246 pqchecker]# ./configure LDAPSRC=/usr/local/src/openldap-2.4.44/ JAVAHOME=/usr/lib/jvm/java-1.8.0-openjdk libdir=/usr/lib64/openldap PARAMDIR=/etc/openldap/pqchecker
[root@10–19–10–246 pqchecker]# autoreconf -f -i
[root@10–19–10–246 pqchecker]# make
[root@10–19–10–246 pqchecker]# make install /etc/openldap/pqchecker
비밀번호 복잡도 설정
: vi /etc/openldap/pqchecker/pqparmas.dat
아래는 브로드캐스트 사용안함, 대문자 1, 소문자 2, 숫자 2, 특수문자 2 를 설정한 예시
# Data format: 0|UULLDDSS@)..
# 1st character is the modified passwords broadcast flag. 1 -> Broadcast, 0 -> Don’t broadcast
# 2nd character is a separator
# U: Uppercase, L: Lowercase, D: Digit, S: Special characters -> from 3rd to 10th charater.
# From the 11th character begins the list of forbidden characters
# Defaulti: No broadcast, 1 Uppercase, 1 Lowercase, 1 digit, 1 Special and no forbidden characters
3. LDAP 디렉토리에 pqchecker 추가
LDAP 디렉토리에 오브젝트 클래스 및 모듈을 추가하는 방법으로는 ldif 파일을 만들어서 임포트 하는 방법이 가장 일반적이지만 이 문서에서는 ldapadmin 툴을 이용하여 추가해 보도록 합니다.
1. ppolicy 에 pwdPolicyChecker 오브젝트 클래스 추가
2. pwdCheckModule 속성 추가 후 value 값에 pqchecker.so 추가
과정이 복잡하거나 어렵지는 않기 때문에 쉽게 모든 설정이 마무리 되었습니다. 이제 비밀번호 변경을 하게 되면 pqchecker 모듈이 비밀번호 복잡성 검사를 먼저 진행 후 통과 및 거부 여부를 판단하게 됩니다.
통과 및 거부는 ldap 로그에서 확인할 수 있으며, 아래와 같은 형식으로 출력 됩니다.
Oct 28 10:51:51 10–19–10–246 pqchecker[35943]: Checking password quality for uid=fallboyz,ou=People,dc=umount,dc=net.
Oct 28 10:51:51 10–19–10–246 pqchecker[35943]: Password rejected.
Oct 28 10:51:51 10–19–10–246 slapd[35943]: check_password_quality: module error: (pqchecker.so) The password does not pass quality check..[1]
Oct 28 10:52:07 10–19–10–246 pqchecker[35943]: Checking password quality for uid=fallboyz,ou=People,dc=umount,dc=net.
Oct 28 10:52:07 10–19–10–246 pqchecker[35943]: Password accepted.