개요
Openldap을 이용하여 패스워드 정책을 걸 수 있다.
패스워드 정책이란 패스워드 사용 기간이나 자릿수,특수문자,대소문자 등을 지정 할 수 있는 정책이다.
패스워드 정책에 대한 스키마는 기본적으로 설치가 되어 있으나 활성화를 해주어야 한다.
1. 패스워드 정책 스키마 파일이 존재하는지 확인
ls -ltr /etc/openldap/schema/ppolicy.ldif
2. 해당 정책 스키마를 추가
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
3. 패스워드 정책 모듈 활성화
- vi로 ldif 파일 생성한다.
vi ppolicy-module.ldif
dn: cn=module{0},cn=config
cn: module{0}
objectClass: olcModuleList
olcModuleLoad: ppolicy.la
olcModulePath: /usr/lib64/openldap
4. 생성한 모듈 LDIF를 추가
ldapadd -Y EXTERNAL -H ldapi:/// -f ppolicy-module.ldif
5. 실제 모듈이 추가 되었는지 확인
slapcat -n 0 | grep olcModuleLoad
6. 정책을 세팅 할 디렉토리를 만들어 줘야 한다.
vi ppolicy-ou.ldif
dn: ou=Policies,cn=manager,dc=test,dc=com
ou: Policies
objectClass: organizationalUnit
objectClass: extensibleObject
objectClass: top
7. 정책 OU 추가
ldapadd -Y EXTERNAL -H ldapi:/// -f ppolicy-ou.ldif
8. 생성한 정책 OU 밑에 기본적으로 사용할 패스워드 정책을 정의
vi ppolicy-password.ldif
dn: cn=default,ou=Policies,cn=manager,dc=test,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
cn: default
pwdAttribute: userPassword
pwdCheckQuality: 0
pwdFailureCountInterval: 120
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdAllowUserChange: TRUE
pwdGraceAuthNLimit: 0
pwdMustChange: TRUE
pwdSafeModify: TRUE
pwdMinAge: 0
pwdMinLength: 8
pwdMaxFailure: 5
pwdInHistory: 2
pwdExpireWarning: 7171200
pwdMaxAge: 7776000
9. 생성한 LDIF 파일을 기반으로 반영
ldapadd -x -D cn=manager,dc=test,dc=com -w 패스워드 -f ppolicy-password.ldif
10. 실제로 해당 값이 반영 된 것을 볼 수 있다.
이렇게 되면 기본적으로 User를 추가 하면 위 정책을 따라가게 되어 있다.
해당 패스워드 정책에서 의미하는 바를 살펴보자
# 0이면 비활성화, 값이 1이면 서버가 검사할 수 없는 경우(해싱되었던가) 승인,
# 값이 2면 서버가 이를 확인 할수 없으면 거부하는 오류는 반환
pwdCheckQuality: 0
# 패스워드 변경 후 특정 시간동안 암호 변경 못하게 설정
# 0이면 비활성화
pwdMinAge: 0
# 수정된 암호의 만료되는 시간(초) 설정 값이 0이면 만료되지 않음
pwdMaxAge: 1800
# 패스워드 최소 글자
pwdMinLength: 7
# 예전 암호 저장
pwdInHistory: 3
# 패스워드 연속 실패 횟수
pwdMaxFailure: 3
# 패스워드 실패 후 재시도에 대한 대기 시간(초)
pwdFailureCountInterval: 0
# TRUE일 때 바인드 계정 인증 시 pwdMaxFailure를 따를 것인지?
pwdLockout: TRUE
# 바인드 시도 실패 횟수 초과로 재시도에 대한 대기 시간(초)
# 값이 0 이면 관리자가 재설정 할 때까지 암호를 사용 할 수 없음
pwdLockoutDuration: 0
# 자신이 암호를 변경 할 수 있는지 여부
pwdAllowUserChange: TRUE
# 암호 만료 경고메시지가 사용자에게 반환 되는 시간(초)
# pwdMaxAge 값보다 작아야함
pwdExpireWarning: 0
# 만료된 암호를 사용하여 인증 할 수 있는 횟수
# 값이 0 이면 로그인 안됨
pwdGraceAuthNLimit: 0
# 비밀번호 재설정 후 디렉토리에 처음 바인드할때 항목이 비밀번호를 변경해야 함이 TRUE
# FALSE면 사용자는 관리자가 암호를 설정하거나 재설정 후 바인딩 할 때 암호를 변경할 필요가 없음
pwdMustChange: TRUE
# 암호 변경 시 기존 암호와 새 암호를 함께 보내야 하는지 여부 결정
pwdSafeModify: TRUE
특정 User에게만 패스워드 정책 예외 시키기
개요
일부 시스템에서 사용하는 관리자 계정이나, 어디와 연동 되어 있는 특정 계정들에 대해서는
패스워드 만료를 시키고 싶지 않을 경우가 있을 것이다.
그럴경우 해당 설정으로 패스워드 정책으로부터 예외 처리 시키기 위함이다.
1. 패스워드 만료가 되지 않기 위한 Exclude 정책 생성
vi ppolicy-exclude.ldif
dn: cn=e,cn=default,ou=Policies,cn=manager,dc=test,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
cn: e
pwdAttribute: userPassword
pwdCheckQuality: 0
pwdMinAge: 0
pwdMinLength: 8
pwdInHistory: 5
pwdMaxFailure: 3
pwdFailureCountInterval: 0
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdAllowUserChange: TRUE
pwdGraceAuthNLimit: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
2. 생성한 LDIF 적용하기
ldapadd -x -D cn=manager,dc=test,dc=com -w 패스워드 -f ppolicy-exclude.ldif
3. Exclude User 지정을 위한 LDIF 생성
vi excludePasswordPolicy.ldif
dn: uid=t1234,ou=People,dc=test,dc=com
changetype: modify
add: pwdPolicySubentry
pwdPolicySubentry: cn=e,cn=default,ou=Policies,cn=manager,dc=test,dc=com
4. LDIF 적용하기
/usr/bin/ldapmodify -x -D cn=manager,dc=test,dc=com -w 패스워드 -f excludePasswordPolicy.ldif
5. 패스워드 예외 적용 확인
ldapsearch -Y EXTERNAL -H ldapi:/// -s one -b "ou=People,dc=test,dc=com" -LLL -Q uid pwdPolicySubentry
dn: uid=t1234,ou=People,dc=test,dc=com
uid: t1234
pwdPolicySubentry: cn=e,cn=default,ou=Policies,cn=manager,dc=test,dc=com
이렇게 해서 패스워드 정책에서 예외처리를 할 수 있다.
예외처리 해 놓은 유저를 다시 default 정책으로 적용 시키려면 아래와 같이 진행하시오
vi deletePasswordPolicy.ldif
dn: uid=t1234,ou=People,dc=test,dc=com
changetype: modify
delete: pwdPolicySubentry
/usr/bin/ldapmodify -x -D cn=manager,dc=test,dc=com -w 패스워드 -f deletePasswordPolicy.ldif
'IT > OpenLDAP' 카테고리의 다른 글
PostgreSQL에서 사용자 데이터 긁어오기 (0) | 2022.07.13 |
---|---|
LDAP 만료 예정 및 만료 된 사용자에게 메일로 알림 (0) | 2022.02.23 |
실사용에 유용한 ldap command 사용방법 (ldapadd, ldapmodify, ldappassword 등등) (0) | 2022.02.17 |
LDAP 사용자 자동 등록 처리 (0) | 2022.02.15 |
OpenLDAP Logging 설정 방법 (0) | 2022.02.03 |