OpenLDAP password checking module pqchecker

OpenLDAP 비밀번호 복잡성 모듈 pqchecker 추가 방법

OpenLDAP 비밀번호 복잡도를 확인하는 모듈로는 check_password 모듈과 pqchecker 모듈 등이 있으며 저는 기존에 check_password 모듈을 사용했지만, 해당 모듈의 업데이트가 오래되어 비교적 최신인 pqchecker 모듈로 교체해 보았습니다.

이 모듈은 OpenLDAP 의 비밀번호 정책 오버레이(policyppolicy)와 상호 연동되는 모듈이기 때문에 ppolicy 가 사전에 설정되어 있어야 합니다.

pqchecker 모듈은 비밀번호 변경 요청이 들어오면 pqparams.dat 에서 정의된 복잡도 설정 규칙에 맞는지 해당 암호를 검사한 후 규칙이 통과하면 LDAP 디렉터리에 저장하고 규칙이 통과하지 못하면 비밀번호 변경 요청을 거부하게 됩니다. 자세한 내용은 OpenLDAP password policy pwdCheckModule (meddeb.net) 을 확인해 주시기 바랍니다.

설치 방법으로는 이미 컴파일된 바이너리 패키지를 이용하여 설치하는 방법과 직접 소스 컴파일을 하여 설치하는 방법이 있으며, 이 문서에서는 직접 소스를 컴파일하여 설치해보도록 하겠습니다.

pqchecker 모듈은 OpenLDAP 소스 파일의 헤더 파일에 의존성을 가지고 있기 때문에 먼저 OpenLDAP 소스 파일을 받아 make depend를 해주어야 합니다.

1. OpenLDAP 컴파일

의존성 패키지 설치

[root@10-19-10-246 /]# yum -y install gcc gcc-c++ autoconf automake libdb-devel

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@)..
# Or         : 1|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
0|01020202

3. LDAP 디렉토리에 pqchecker 추가

LDAP 디렉토리에 오브젝트 클래스 및 모듈을 추가하는 방법으로는 ldif 파일을 만들어서 임포트 하는 방법이 가장 일반적이지만 이 문서에서는 ldapadmin 툴을 이용하여 추가해 보도록 합니다.

1. ppolicy 에 pwdPolicyChecker 오브젝트 클래스 추가

pqchecker-01
pqchecker-02

2. pwdCheckModule 속성 추가 후 value 값에 pqchecker.so 추가

pqchecker-03

과정이 복잡하거나 어렵지는 않기 때문에 쉽게 모든 설정이 마무리 되었습니다. 이제 비밀번호 변경을 하게 되면 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.

You may also like...

Subscribe
Notify of
guest

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x