OpenLDAP password checking module pqchecker

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@101910246 /]# yum -y install gcc gcc-c++ autoconf automake libdb-devel

 

OpenLDAP 다운로드

OpenLDAP 다운로드 및 컴파일

[root@101910246 /]# cd /usr/local/src/
[root@101910246 src]# wget https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.44.tgz
[root@101910246 src]# tar xvzf openldap-2.4.44.tgz
[root@101910246 src]# cd openldap-2.4.44
[root@101910246 openldap-2.4.44]# ./configure
[root@101910246 openldap-2.4.44]# make depend

 

2. pqchecker 컴파일

의존성 패키지 설치

[root@101910246 /]# yum -y install java java-devel libtool

 

pqchecker 다운로드 및 컴파일

[root@101910246 /]# cd /usr/local/src/
[root@101910246 src]# git clone https://github.com/mahiso/pqchecker.git
[root@101910246 src]# cd pqchecker
[root@101910246 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@101910246 pqchecker]# autoreconf -f -i
[root@101910246 pqchecker]# make
[root@101910246 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 101910246 pqchecker[35943]: Checking password quality for uid=fallboyz,ou=People,dc=umount,dc=net.
Oct 28 10:51:51 101910246 pqchecker[35943]: Password rejected.
Oct 28 10:51:51 101910246 slapd[35943]: check_password_quality: module error: (pqchecker.so) The password does not pass quality check..[1]
# 통과 로그
Oct 28 10:52:07 101910246 pqchecker[35943]: Checking password quality for uid=fallboyz,ou=People,dc=umount,dc=net.
Oct 28 10:52:07 101910246 pqchecker[35943]: Password accepted.

 

이 글은 umount 블로그 에서도 보실 수 있습니다.

0 0 votes
Article Rating
Subscribe
Notify of
guest

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

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