[LFCS] User 및 Group 관리(2): Password Administration

2022. 7. 25. 14:39[ 자격증 ]/[ LFCS ]

Password 관련 설정 파일

1. /etc/passwd

- 계정의 정보를 담는 파일로 7개의 필드를 가지며 두 번째 필드에 encryped password가 있다.

- 해당 파일의 필드에 대한 자세한 설명은 링크를 참고하자.

- encryped password가 x로 되어 있으면 실제 encryped password는 /etc/shadow에 저장되어 있다는 의미이다.

 

2. /etc/shadow

- 암호화된 password 정보와 password aging에 대한 상세정보가 담긴 파일이다.

- 총 8개의 필드를 포함한다.

 

[필드 설명]

field1) login name

field2) encryped password

field3) date of last password change

field4) minimum password age : 비밀번호를 변경하지 않고 최대한 사용할 수 있는 날짜수(default 0)

field5) maximum password age: 바꾼 비밀번호를 최대한으로 사용할 수 있는 날짜 수

field6) password warning period

field7) password inactivity period 

field8) account expiration date : 계정 만료일(패스워드 정책과 상관없이 로그인이 가능한 날짜)

 

 

* 대부분이 account aging 정보에 대한 필드들임을 확인하자.

 

 

cf. date of last password change 필드

date of last password change는 password aging을 계산하기 위한 기준값으로 사용된다. 이를 기반으로 minimum day, maximun day, warning day, inactive day가 계산된다.

 

만약 sudo cat /etc/shadow 결과가 아래와 같다면

jihun2:!:19198:0:99999:7:::

여기서 3번째 필드 19198은 19198일이 되는 날 Password가 변경되었다는 의미이다. 이는 1970.1.1을 기준으로 날짜 카운트를 한 것이다. 즉, 오늘(2022.7.25)은 1970.1.1로부터 19198일 되는 날이다.

 

cf. sudo cat /etc/login.defs 결과

- Password를 encryped 할 때 SHA512 알고리즘을 사용한다는 의미이다.

- 참고로 암호화를 통해 절대 나올 수 없는 문자 두 가지는 *!이다. 따라서 이 문자를 password로 사용하는 계정은 로그인이 불가능하다. 따라서 *와 ! 문자는 아직 비밀번호를 설정하지 않은 유저, 보안상 로그인을 하면 안 되는 시스템 계정, 비밀번호에 Lock이 걸려 로그인이 금지된 계정, 비밀번호 변경 만료 계정 등에 사용된다. 

- 시스템 계정 비밀번호: * 사용 

- 비밀번호를 지정하지 않은 계정의 비밀번호: !

- lock 된 계정의 비밀번호: ![Encryped password]

-> 따라서 시스템 계정과 비밀번호를 설정하지 않은 계정, Lock 된 계정은 로그인 불가

 

 

cf. minimum password age

만약 minimum password age을 2로 설정했다면 세 번째 필드인 'date of last password change + 2' 값 전에는 비밀번호를 수정할 수 없다. 최소한 현재 사용 중인 비밀번호를 사용해야 하는 기간을 의미함.

 

 

cf. maximum password age

최대 'date of last password change + maximum password age' 날짜까지는 현재 비밀번호를 사용할 수 있다는 의미이다. 보통 maximum password age는 99999로 설정되어 있다. 99999일을 365로 나누면 273이다. 즉, default 설정을 따른다면 오늘 비밀번호를 바꿨다면 273년 동안 사용할 수 있다.

 

 

cf. password inactivity period 

 

 

 

password inactivity period는 maximum password age가 지난 후에도 얼마만큼의 기한을 줄 것이냐에 대한 정보이다. 만약 maximum password age후 password inactivity period 안에 로그인을 해서 비밀번호를 변경했다면 문제가 되지 않지만, 그전까지 로그인을 하지 않았다면 계정은 비활성화된다.

 

비밀번호 비활성화일 =  maximum password age + password inactivity period

 

 

cf. account expiration date 

패스워드 정책과 상관없이 로그인이 가능한 날짜를 한 번에 설정한다. 예를 들어 useradd -e 2022-05-31 -m -s /bin/bash lee와 같이 사용하면 해당 유저는 5월 31일까지만 로그인 가능하다.

 

 

3. /etc/login.defs (defaults라는 뜻)

- 계정 생성, 패스워드 할당 등에 사용되는 default 값이나 환경 값을 가지고 있다.

- root 권한으로 수정할 수 있다.

- 해당 파일의 일부를 보면 아래와 같이 default 값들을 기록하고 있음을 알 수 있다.

 

 

 


 

Password 관련 명령어

1. passwd

- password를 생성, 변경하거나 password관련 정책을 변경할 때 사용한다.

 

사용법: passwd [options] [username]

 

Options

passwd --help

 

-e 옵션은 해당 유저의 비밀번호를 바로 만료시킨다. 즉, 로그인할 때 새로운 패스워드를 설정할 수 있도록 강제한다. (last chage date : 0)

- usermod 커맨드로도 password에 lock을 걸 수 있지만 passwd로도 password에 lock을 걸어 로그인을 못하게 할 수도 있다. 단, passwd로 lock을 걸 때에는 옵션이 -l 이다. (usermod는 -L 임)

 

 

실습

sudo passwd -x 30 jihun

위 명령어는 jihun 계정의 비밀번호를 30일 동안 사용할 수 있게 바꾼다.

 

sudo passwd -x 30 -n 1 -w 5 jihun

maximum password age를 30일로, minimum password age를 1로 설정하고 maximum password age가 되기 5일 전에 경고 메시지를 출력하도록 한다.

 

 

 

 

2. chage (change age)

- user의 패스워드 '만료 정보'를 변경하는 명령어

 

사용법: chage [options] [username]

 

 

Options

chage --help

passwd와 다르게 패스워드에 Lock을 설정하는 명령어는 없고 password aging과 관련된 옵션만 지원되고 있다.

 

 

예시

sudo chage -M 90 -m 0 -W 7 -I 20 jihun2

maxday 90

minday 0

warning day 7

inactive day 20

 

[설명]

- maxday부터 20일이 지날 때까지 Password를 바꾸지 않으면 계정을 비활성화하겠다.

- maxday로부터 7일 전부터 경고 메시지를 주겠다.

- 계정 비밀번호를 최소한 0일 동안 유지한다. (매일 바꿀 수 있다)

 

 

[결과 확인]

 

[리스트 형태로 확인]

 

 

 

 

 

 

Reference

- https://youtu.be/40a0-bXbHsU