본문 바로가기

보안/강의정리

사용자계정 관리 (passwd, shadow)

728x90

/etc/passwd 파일

사용자 계정 관리의 핵심파일이다. 각 계정의 암호를 제외한 정보들이 들어가 있고 로그인 요청 있을시 가장 먼저 읽혀지는 파일이다.  그렇기 때문에 /etc/passwd 파일은 root만 읽고 변경할 수 있고, 나머지 사용자는 읽기만 가능하도록 설정되어있다.

유저 server01

이처럼 ":" 로 필드를 구별하고 순서대로 사용자, 암호, 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
728x90

'보안 > 강의정리' 카테고리의 다른 글

사용자계정 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