/etc/passwd 파일
사용자 계정 관리의 핵심파일이다. 각 계정의 암호를 제외한 정보들이 들어가 있고 로그인 요청 있을시 가장 먼저 읽혀지는 파일이다. 그렇기 때문에 /etc/passwd 파일은 root만 읽고 변경할 수 있고, 나머지 사용자는 읽기만 가능하도록 설정되어있다.
이처럼 ":" 로 필드를 구별하고 순서대로 사용자, 암호, UID, GID, Comment, 홈 디렉터리, 로그인 shell이다.
passwd 명령어
각 필드별로 수정할 수 있는 명령어가 있다.
필드 명 | 수정 명령어 | 의미 |
사용자 ID | 사용자의 이름 | |
패스워드 | passwd [사용자 명] | 실제 암호는 /etc/shadow 파일에 저장되어있음 |
UID | usermod -u [UID] | 사용자 ID |
GID | usermod -g [GID] | 사용자가 속한 그룹ID |
Comment | usermod -c [comment] | 코멘트 사용자식별을 위해 자유롭게 입력 |
홈 디렉터리 | usermod -d [home directory] | 사용자의 홈 디렉터리 |
로그인 쉘 | usermod -s [shell 파일명] | 사용자가 사용할 shell |
shell값 변경
사용자가 로그인하면 제일 먼저 실행되는게 쉘이다. 이 위치에 누군가 악의적으로 특정 프로그램의 경로를 입력하게 되면 로그인이 쉘대신 악의적인 프로그램이 실행된다.
shelltest 계정을 하나 만들어서 usermod로 쉘의 경로를 명령어 top의 경로로 설정 해줬다.
shelltest로 로그인하니 바로 top이 실행되는걸 볼 수 있다.
/etc/shadow 파일
passwd 파일의 필드에 패스워드가 있는것을 보았을 것이다. 하지만 항상 x로 쳐져있다. 예전엔 사용했지만 보안상의 이유로 전부 /etc/shadow 파일로 옮겨졌기 때문이다.
이 파일에는 암호, 보안에 관련된 9개의 필드로 구성되어있다.
①사용자ID, ②암호, ③최종 암호 변경일, ④암호 변경 최소일 수, ⑤암호변경 최대일 수, ⑥암호변경 경고일 수, ⑦계정 사용 불가 날짜, ⑧계정 만기일, ⑨예약된 필드
이렇게 구성되어있으며 2번필드의 암호는 암호화되어 저장되는 파일이므로 직접 수정해서는 안된다.
※ 패스워드 에이징
- 암호에 시간 개념을 도입하여 사용자가 현재 사용중인 암호가 변경될 수 있는 최소시간과 변경해야되는 최대시간을 지정
- 동일한 암호를 오랜시간 사용하는 것은 암호 유출의 위험성이 증가하므로 지정된 시간에 암호를 강제로 바꾸도록 함으로 보안을 강화시키기 위해 사용된다.
- 최대시간 : 사용자에게 최소시간 경과 후 강제적으로 바꾸도록 요구하는 시간. 10자리의 소문자, 숫자, 특수문자는 해독하는데 90일 정도가 걸린다고 한다. 이거에 맞춰서 시간을 조정하면된다.
- 최소시간 : 암호가 변경된 후 다음 변경 가능할 때까지의 최소 시간. 다시 원래 암호로 바꾸게 하지 않게하기 위함
옵션 | 의미 | passwd 명령어 사용 예 |
-n | 최소일(minimum days) | #passwd -n 7 user1 |
-x | 최대일 (maximum days) | #passwd -x 90 user1 |
-w | 경고일 (warning days) | #passwd -w 5 user1 (최대일이 90일이면 85일에 경고) |
-i | 비 활성화일(inactive days) | #passwd -i 5 user1 |
-e | 패스워드 만료 (expire) | #passwd -e user1 |
-l | 패스워드 잠금 (lock) | #passwd -l user1 |
-u | 패스워드 해제 (unlock) | #passwd -u -f user1 (-f 옵션으로 강제) |
-d | 패스워드 삭제 (delete) | #passwd -d user1 (password를 삭제하여 blank로 만듬) |
-S | 상태확인 (status) | #passwd -S user1 |
isec_damin의 필드를 분석해보자
구분 | 설 명 | 명령어 |
isec_admin | ID | 변경 X |
$6 | 암호화 알고리즘($1=md5, $2=Blowfish, $5=SHA-256, $6=SHA-512) | |
$9pJ6Rcah | salt값 (똑같은 암호 만들어지지 않게 salt 추가) | |
$FYFjN070kHI | 암호화된 비밀번호 | |
18425 | PW 최종 변경 일수 | 1970년 1월 1일 기준으로 며칠이 지났는지로 표현 #chage -d |
0 | PASS_MIN_DAYS(암호변경최소일수) 암호변경 후 최소일 수 경과 후 가능한 일 수 (1일(1주) 권장) |
#chage -m |
99999 | PASS_MAX_DAYS(암호변경최대일수) 암호변경 없이 사용 가능한 최대 일수 (90(12주) 권장) |
#chage -M |
7 | PASS_WARN_AGE (암호변경 경고일 수), 최대변경일수 되기전 경고메시지 발송 | #chage -W |
공백1 | 암호 만료 후 계정이 잠기는 날짜 | #chage -I |
공백2 | 사용자 계정 만기일(계정 사용 가능한 날짜) | chage -E |
'보안 > 강의정리' 카테고리의 다른 글
사용자계정 useradd, usermod, userdel (0) | 2021.06.28 |
---|---|
사용자계정 group (0) | 2021.06.28 |
리눅스 사용자 계정 개념 및 구조 (0) | 2021.06.28 |
리눅스 기본명령어2 (파일관련) (0) | 2021.06.28 |
$PATH (0) | 2021.06.21 |