[Solaris] 패스워드 정책
1. 보안 정책 파일 수정
# vi /etc/security/policy.conf
LOCK_AFTER_RETRIES=YES
* 계정 잠금 ( Account Locking )
: Login 중 반복적인 실패가 발생할 경우 해당 Account 를 정지하는 기능
2. /etc/default/login 환경 파일 수
RETRIES=5 // 연속 오류 입력 허용 : 5회 이내
3. Locking 정보 제거
# passwd -u Account
* 패스워드 조합
1. 설정 파일
: /etc/default/passwd
2. 설정 옵션
Option | Description |
MINWEEKS | 비밀번호를 바꾸지 못하는 일 수를 주 단위로 설정, /etc/shadow 파일에서는 하루 단위로 설정이 가능함 |
MAXWEEKS | 비밀번호를 바꾸지 않고 현재 비밀번호를 사용할 수 있는 일 수를 주 단위로 설정, /etc/shadow 파일에서는 하루 단위로 설정이 가능함 |
WARNWEEKS | 지정한 일수 며칠 전부터 시스템에 로그인 시에 경고 메시지를 출력할 것인가를 주 단위로 설정 |
PASSLENGTH | root를 제외한 일반 사용자의 비밀번호의 최소 길이를 지정, 이 값은 6,7,8 세 값중에서 하나만 가능, 6보다 작으면 6이 되고 8보다 크면 8로 설정됨, 새로 시스템에 사용자가 추가 되거나 기존 사용자가 자신의 비밀번호를 바꿀 경우에 적용됨 |
DICTIONDBDIR | 시스템에서 사용할 수 없는 비밀번호를 미리 정의한 데이터베이스 파일이 존재하는 디랙토리를 지정, 사용자가 비밀번호를 처음 생성하거나 변경할 때마다 데이터베이스를 검색하여 존재하지 않는 비밀번호일 경우에만 사용토록 함 |
DICTIONLIST | /usr/share/lib/dict/words 파일처럼 단어들이 나열된 파일의 절대 경로명을 나열한다. 여기에 나열된 파일들을 이용하여 비밀번호를 사용할 수 없는 데이터베이스를 생성한다. 데이터베이스를 생성할 때는 mkpwdict 명령어가 쓰임 |
HISTORY | 사용자가 비밀번호를 변경할 때, 전에 사용했던 비밀번호를 몇 개까지 기억할 것인가를 지정한다. 0∼26까지 지정할 수 있으며 0을 입력할 경우 기존에 입했던 비밀번호 정보가 모두 지워짐 |
MAXREPEATS | 비밀번호에 동일한 글자를 연속해서 사용할 수 있는 최대 개수를 지정, 0은 해당 기능을 사용하지 않음을 의미 |
MINALPHA | 비밀번호에 필요한 최소한의 알파벳 개수를 지정, 디폴트로 2이므로 비밀번호는 최소 2자까지 동일 알파벳을 연속으로 사용할 수 있음 |
MINDIGIT | 비밀번호에 필요한 최소한의 숫자 개수를 지정, 디폴트로 0이므로 숫자를 사용하지 않아도 가능함 |
MINSPECIAL | 비밀번호에 필요한 최소한의 특수 문자 개수를 지정, 디폴트=0이므로 특수 문자를 사용하지 않아도 가능 |
MINLOWER | 비밀번호에 필요한 최소한의 영어 소문자 개수를 지정, 디폴트=0이므로 소문자를 사용하지 않아도 가능 |
MINUPPER | 비밀번호에 필요한 최소한의 영어 대문자 개수를 지정, 디폴트=0이므로 대문자를 사용하지 않아도 가능 |
MINDIFF | 새로운 비밀번호가 직전에 사용했던 비밀번호와 몇 글자 이상 차이가 있어야 되는지를 지정, 디폴트=3이므로 3자 이상만 다르면 가능 |
WHITESPACE | tab, space과 같은 공백문자를 비밀번호에 사용할 수 있는지를 지정, YES이면 공백문자를 사용할 수 있고 NO이면 금지되며 디폴트=YES임 |
1. 솔라리스 10 패스워드 정책 관련 파일
/etc/shadow , /etc/default/passwd
계정을 신규로 생성하는 경우 /etc/default/passwd 파일에 정의된 정책에 따라 패스워드 정책을 가진 계정이 생성
/etc/shadow에도 이를 반영하여 설정이 됩니다.
계정 생성후에는 /etc/shadow 파일의 필드를 수정하여 해당 계정의 패스워드 정책을 수정할 수 있다
/etc/shadow에 정의된 정책이 /etc/default/passwd에 정의된 정책보다 우선순위가 높다
1) /etc/default/passwd 파일
MAXWEEKS : 패스워드 사용 최대 기간 설정
MINWEEKS : 패스워드를 변경할 수 있는 최소 기간 설정
PASSLENGTH : 패스워드의 최소 문자 수
WARNWEEKS : 암호가 만료하기 전에 암호가 만료된다는 사실을 사용자에게 알려주는 기간 설정
NAMECHECK : 사용자가 패스워드를 사용자 로그인 이름과 똑같이 설정 못하게 확인 여부 설정(YES or NO )
HISTORY: 이전에 사용한 패스워드 기억한 후 history수 내에 동일한 패스워드 변경 불가
(0 ~ 최대 26까지 설정)
Ex) 이 값을 3으로 설정할 경우, 이전 패스워드 변경 이력에서 3회 전까지 사용했던 패스워드로는 변경 불가
2) /etc/shadow 파일
예) solaris 서버에서 /etc/shadow파일을 vi 에디터나 cat 명령으로 조회해 보면, 아래와 같이 구성
실제 예시 ==> myID : nVIHFzWRRuEo. : 18020 : 7 : 70 :14 : : :
필드의 의미 ==> loginID : password : lastchg : min : max : warn : inactive:expire :flag
loginID : 계정 이름
passwdord : 암호와된 패스워드 값
astchg : 1970-01-01을 기준으로, 패스워드를 마지막으로 변경한 누적 일수
즉, 이 값이 위와 같이 18020인 경우에는 1970년 1월 1일에서 18020 일 (약 49년 ..) 이후의 날짜에 패스워드를
마지막으로 변경하였음을 의미
min : 패스워드 변경의 최소 간격 (단위 day)
max : 패스워드 사용 최대 기간 (단위 : day), 이 기간 내에 패스워드를 변경해주어야 함
warn : 패스워드 만기 전에 경고메시지를 보내는 시간 (단위 day) 예, 14로 명시된 경우 패스워드 만료일 14일전에 경고
inactive: 로그인 하지 않은 day 수
expire : 패스워드가 만료되는 날짜 (date). 이 값을 명시하지 않으면 expire되지 않음
flag : 로그인 실패 회수
2. 솔라리스 패스워드 변경 방법
솔라리스에서 계정의 패스워드 변경 시에는 아래 명령어 예시처럼 하면 된다.
우선, 패스워드를 변경할 계정을 이용하여 로그인 합니다. ( 또는 su - 변경할 계정명)
그 다음 passwd 명령으로 ( 일반적으로 -r files옵션 사용) 패스워드를 변경합니다.
아래 예는 myid라는 계정의 패스워드를 바꾸는 경우입니다.
(myid)% /usr/bin/passwd -r files myid
Enter existing login password: ( 현재 패스워드 입력)
New Password: (새로운 패스워드 입력)
Q> 솔라리스에서 패스워드 변경 시에 이전에 사용했던 패스워드로 다시 설정하고 싶은 경우
일반적으로 패스워드 변경 후에 바로 직전의 패스워드로 재변경을 시도하면, 아럐 예와 같이 HISTORY 설정에 걸려서 변경이 되지 않습니다.( /etc/default/passwd 파일에서 HISTORY 설정 값만큼의 이전에 사용했던 패스워드는 설정이 불가)
(myid) % /usr/bin/passwd -r files myid
Enter existing login password:
New Password:
passwd: Password in history list.
이 경우는 아래 방법으로 설정이 가능합니다.
1) /etc/default/passwd 설정 파일 수정
아래 예외같이 기존에 설정된 HISTORY 부분을 주석으로 막고, 이 값을 0으로 재설정해 줍니다.
#HISTORY=12
HISTORY=0
2) passwd 명령으로 패스워드를 변경하면, 바로 변경 직전의 패스워드로 원복이 가능합니다.
(myid) % /usr/bin/passwd -r files myid
Enter existing login password:
New Password:
Re-enter new Password:
passwd: password successfully changed for myid
3. 솔라리스10 에서 passwd expire안되게 설정하는 방법
( 현재 shadow 파일 확인 )
# cat /etc/shadow | grep myid
myid:9ERj9EjQRT6oE:18372:7:70:14:::
( myid 계정을 expire안되게 설정)
# passwd -x -1 myid
passwd: password information changed for myid
( shadow 파일 변경 내역 확인)
# cat /etc/shadow | grep myid
myid:9ERj9EjQRT6oE:18372::::::
--------------------------------
결론적으로 이야기하면 최초 aging 을 설정하는 것은 /etc/default/passwd 파일의
MAXWEEKS=
이것을 적용하고 나서 어느 계정이든 ( 심지어 root 까지 ) MINWEEK 에 설정된 시간이 지나게 되면
해당 계정의 패스워드가 expire 되게 되고
재로그인시 패스워드를 재설정하라는 메시지가 뜨게 됩니다.
하지만 위의 경우는 일반계정의 경우이며 root 패스워드가 expire 가 되었다고 나왓을 때에는
로컬에서 접속하여 변경하여야 합니다.
즉 KVM 같은 것을 사용하여 로컬에서 GUI 를 통해서 root 로그인 시도를 하였을 때
알람이 하나 뜨고 New password 를 물어볼 것입니다.
이때 root 패스워드를 재설정하고 /etc/default/passwd 파일의 MAXWEEKS 와 MINWEEKS 를 값이 없도록 변경한 뒤에, 문제가 된 해당 계정의 /etc/shadow 파일의 4번째 5번째 필드를 지워줘야 한다
shadow 파일의 필드들은 콜론 (:) 으로 구분됩니다.. 콜론은 지우면 안됩니다.
추가적으로 아래는 shadow 파일의 필드 설명입니다.