'패스워드 에이징'에 해당되는 글 1건

  1. 2015.04.06 [Unix] 패스워드 관련 정책 설정하기
시스템/Unix2015. 4. 6. 11:25

출처 : http://egloos.zum.com/totoriver/v/3204089

유닉스 시스템을 관리하다 보면 사용자들의 패스워드를 관리하는 것이 큰 골치거리가 된다. 그럴 경우 패스워드 정책을 설정하여 특정 기간이 지나면 패스워드를 새로 변경해야 한다거나, 몇일 이내에는 패스워드를 변경할 수 없게 하는 것이 가능하다.
솔라리스 2.X대 부터는 /etc/shadow에 실제 패스워드가 저장된다. 이 파일에는 패스워드 뿐만 아니라 패스워드 에지징(password aging)을 추가로 지원한다. 패스워드 에이징이란 패스워드에 시간 개념을 도입하는 것으로 사용자가 현재 사용중인 패스워드를 사용할 수 있는 기간과 패스워드를 바꾸지 못하는 날짜 등을 추가하여 사용자에게 패스워드를 강제적으로 바꾸도록 종용하는 것이다. 그렇다면 /etc/shadow 파일의 형식을 살펴보자.

○ /etc/shadow 파일의 형식

root:asdDWd435rF:10336:7:60:5:10:11942


root
사용자 이름

asdDWd435rF
암호화된 패스워드(DES 방식으로 암호화)

10336
최종 변경 날짜(1970년 1월 1일부터 몇일지 지났는지 그 일수로 표현)

7
최소값 변경 일수(패스워드를 변경하고 난 이후에 일정기간 안에 패스워드를 변경할 수 없도록 설정)

60
최대 값 변경 일수(현재 사용 중인 패스워드를 변경하지 않고 사용할 수 있는 일 수. 이날이 지나면 강제로 패스워드 변경해야 사용가능)

5
경고 일수(최대값 변경 일 수가 며칠 남지 않았음을 알리는 경고 메세지를 로그인할 때마다 출력하기 위한 날짜)

10
최대 값 비활성화 일수(시스템에 자주 로그인하지 않는 계정의 접근을 차단, 10으로 설정시 마지막 로그인 이후 10일이 지나면 접근이 불가하며 root가 passwd 명령을 이용 패스워드를 변경해 주어야 접근 가능)

11942
만기 날짜(사용자가 시스템을 마지막으로 사용할 수 있는 날짜를 명시. 만기일 이후에는 시스템 로그인 불가.

SUN
/etc/default/passwd 파일 수정
PASSLENGTH=8
MINWEEKS=1
MAXWEEKS=12

최소 8자리 이상
최소 사용 : 1주 이상
최대 사용 :12주
--------------------------
AIX
/etc/security/user 파일 수정
minlen = 8
maxage = 12
minage = 1

Linux
Linux에서 계정에 관한 설정은 login.defs에서 합니다. Password의 최소 길이나 최대, 최소 사용 일 수 등을 설정합니다. 그러면, 계정 잠금 설정도 이 파일에 있지 않을까 생각 할 수 있습니다. 그러나, 아쉽게도 login.defs에는 계정 잠금을 설정 할 수 있는 부분이 없습니다. Login.defs는 윈도우처럼 password 정책에 관한 설정입니다. 그러면, linux는 어디서 할까요? 배포판에 따라 조금씩 틀릴 수 있습니다. 여기서는 Redhat linux를 기준으로 설명드리겠습니다.
linux에서 계정 잠금 설정을 하는 부분은 /etc/pam.d/system-auth라는 파일입니다.


[/etc/pam.d/system-auth]

설정 방법은 다음과 같습니다.
auth required /lib/security/pam_tally.so no_magic_root
account required /lib/security/pam_tally.so deny=2 no_magic_root reset

위의 부분을 system-auth에 추가 하시면 됩니다. 위와 같이 설정하면 연속 3회 login 실패 시 계정이 잠기게 됩니다. 그러나, 윈도우처럼 잠금 시간 설정이 없기 때문에 일정시간이 지난다고 해서 계정이 풀리지 않습니다. 따라서, 계정이 잠겼을 경우에는 관리자에게 요청하여 계정 잠금을 풀어야 합니다.

각 설정에 대해서 살펴 보도록 하겠습니다.

auth required /lib/security/pam_tally.so no_magic_root
account required /lib/security/pam_tally.so deny=2 no_magic_root reset

- deny: 실패 횟수 0부터 시작하며 몇 번 실패하면 계정 잠금을 할 것인지 설정, 연속 3번 실패하면 lock 걸기 위해서는 deny를 2로 설정.
- no magic root: root의 password도 fail 횟수를 기록하나 실제 lock은 걸지 않도록 함, root가 lock 걸리면 난감해짐.
- reset: 실패 횟수 안에서 login하면 기존 실패 횟수를 reset해 줌으로써 연속 실패에 대한 기록을 다시 함.


설정은 간단하여 어렵지 않습니다. 위 두 줄만 추가하고 deny의 값을 관리자가 원하는 값으로 설정하여 주면 끝납니다. 예를 들어 5회 이상 password를 잘못 입력하였을 경우 deny의 값을 4로 설정하여 주면 됩니다.

이제, 사용자의 부주의(?)로 설정 값 이상으로 password를 잘못 입력하여 계정이 잠겼을 때 어떻게 계정을 열어야 하는지 알아보겠습니다.

faillog -u <사용자 계정> -r

잠긴 계정을 열기 위해서는 faillog명령어를 사용해야 합니다. 그럼 각 옵션에 대해서 설명을 드리겠습니다. -u는 user를 나타냅니다. -r는 reset으로 password를 잘못 입력하여 인증 실패한 횟수를 reset하는 옵션입니다. 예를 들어 test라는 계정의 사용자가 password를 잘못 입력하여 계정이 잠긴 경우 "faillog -u test -r"라고 입력하면 됩니다. faillog에 대한 상세한 설명은 man 페이지를 참고 하시기 바랍니다. 

Posted by 웁스123