| Linux, FreeBSD에서 비밀번호 정책 설정 | 작성일 : 2008/01/03 21:48 |
| 조회수 : 21305 |
|
제 목 : Linux, FreeBSD에서 비밀번호 정책 설정 작성자 : 좋은진호(truefeel, http://coffeenix.net/ ) 작성일 : 2007.12.21(금) 수정일 : 2008.1.3(목) Linux와 FreeBSD에서 비밀번호의 유효기간과 최소 길이를 제한하는 방법을 간단히 설명한다. 1. Linux에서 /etc/login.defs 파일 PASS_.. 시작하는 설정값을 통해서 비밀번호 설정을 제어하게 된다. ![]() PASS_MAX_DAYS : 비밀번호의 최대 유효일 (기본값 : 99999. 365이면 1년) PASS_MIN_DAYS : 비밀번호를 변경할 수 없는 최소일 (기본값 : 0. 만료전이면 언제나 변경 가능) PASS_WARN_AGE : 비밀번호 만료 전에 주어지는 경고일 (기본값 : 0) PASS_MIN_LEN : 비밀번호의 최소 길이 login.defs 를 수정하면, 새로 생성되는 ID에 대해서 바로 적용이 된다. 그렇다면 기존에 생성되어 있는 ID는 어떻게 되는가? 기존 ID는 login.defs 변경 전의 설정을 갖고 있다. 위 설정 중 고려할 설정값은 PASS_MAX_DAYS, PASS_MIN_LEN인데, PASS_MAX_DAYS는 login.defs 변경 전의 설정값을 따르게 되고, PASS_MIN_LEN은 해당 ID가 새롭게 비밀번호를 변경하게 되면 그 때 부터 적용받게 된다. 기존 ID의 비밀번호 유효일 조정은 chage 명령을 이용하면 쉽게 가능하다. (shadow파일을 직접 수정할 수도 있지만 권장하지 않음) ![]() chage -l truefeel 명령으로 확인하고, chage -M 365 truefeel 로 최대 유효일을 변경할 수 있다. ![]() 2. FreeBSD 4.x에서 /etc/login.conf 파일에 비밀번호 정책을 설정하며, 일반 사용자는 'default:' class에 설정하고, root는 'root:' class 에 설정한다. ![]() ![]() passwordtime= 비밀번호의 최대 유효일 (365d이면 1년) minpasswordlen= 비밀번호의 최소 길이 mixpasswordcase= 비밀번호가 반드시 대소문자 섞여서 사용하기를 바라면 true 로 설정
설정시 주의할 것은 1) 각 class가 끝나기 전까지는 역슬래쉬(\)를 넣어 끝나지 않았음을 표시해야 하며, 2) 'root:' class에서 설정시에 설정값은 tc=default 보다 위에 있어야 한다. 예를들어 'default:' class에 passwordtime=365d 설정이 있다고 가정하자. 그리고 다음과 같이 설정되어 있을 경우, passwordtime=180d 설정값은 무시되고, 대신 default에 있는 365일이 적용된다.
설정이 완료됐으면 'cap_mkdb /etc/login.conf' 명령을 실행해야한다. 기존 ID에 대한 비밀번호 만료일 변경은 chsh 명령으로 설정할 수 있으며, 다음과 같이 저장하면 2008년 3월 1일에 만료된다. 또는 비밀번호를 변경(passwd 명령이용)하면 자동으로 현재일 기준으로 passwordtime이 적용된다.
3. FreeBSD 6.x (또는 5.x)에서 FreeBSD 6.x에서는 login.conf 설정 대신에 pam_passwdqc PAM 모듈을 사용하여 비밀번호의 길이와 복잡성 정도를 설정한다. /etc/pam.d/passwd 를 보면 다음과 같이 pam_passwdqc.so 모듈 부분이 주석처리되어 있을 것이다.
다음과 같이 설정을 하면 비밀번호 변경시 8자리 이상의 비밀번호를 입력해야하며 반드시, 2가지 이상의 문자종류(대문자, 소문자, 숫자, 그외(특수문자) 등)를 섞어야 한다.
min=disabled,8,8,8,8 을 min=disabled,N1,N2,N3,N4으로 표현했을 때, 각 의미를 살펴보자. N1 : 2가지의 문자조합으로 했을 때 문자열의 최소 길이 N2 : passphrase를 사용할 때(위에서는 passphrase=0으로 사용하지 않음) passphrase의 길이 N3 : 3가지 이상의 조합을 했을 때 문자열의 최소 길이 N4 : 모든조합(4가지 조합)을 했을 때 문자열의 최소 길이. 즉, 대소문자+숫자+특수문자 등이 모두 들어간 경우 만약 min=disabled,12,10,8,6 라고 설정했다면, - 2가지 조합(이를테면 대문자+소문자 라던지, 대문자+숫자 등등)이면 12자리 이상이어야 하며, - 3가지이상 조합이면 8자리 이상 (예. trueTR99 => 소문자+대문자+숫자) - 4가지 조합이면 6자리만 되어도 비밀번호를 만족하게 된다. (예. trTR9! => 소문자+대문자+숫자+특수문자) 이 때 주의할 것은 마지막 문자가 숫자인 경우 해당 숫자는 조합수에서 빠지며, 첫문자가 대문자인 경우도 조합수에서 빠진다. 예를들어, trTR9!는 4가지 조합이지만, trTR!9는 6자리로 이뤄진 3가지 조합으로 인식한다. trTR!89는 마지막 '9'를 빼더라도 소문자+대문자+특수문자+숫자로 4가지 조합이 된다. similar=permit 은 비밀번호 변경시 그 이전 비밀번호와 유사해도 허용함을 의미한다. 4. 참고자료 * FreeBSD의 login.conf 의 맨페이지 http://threads.seas.gwu.edu/cgi-bin/man2web?program=login.conf§ion=5 * Hardening FreeBSD (Updated: 06/27/2005) http://www.bsdguides.org/guides/freebsd/security/harden.php * pam_passwdqc 홈페이지와 man page http://www.openwall.com/passwdqc/ |
||||||||||||||||
|
|