사용자 관리
cf) 식별(Authentication) + 인증(Identification) + 권한 부여(Authorization)
- 식별(Authentication)
= 클라이언트
가 Account와 Password를 가지고 서버에 검증을 요구하는 절차
- 인증(Identification)
= 서버가 받은 Account와 Password를 검증한 뒤 클라이언트
에게 인정하는 절차
- 권한 부여(Authorization)
= 식별 요청과 함께 전달 받은 권한의 차등적 부여 관련 정보를 토대로 인증 절차 간 승인/거부
- 책임 추적성(Accounting)
= 로그/기록을 남기는 것
사용자 관련 파일/디렉터리
1. /etc/passwd -> 사용자의 계정 정보
[1. 계정명] : [2. 패스워드] : [3. 계정 식별자] : [4. 그룹 식별자] :
~ [5. 코멘트/설명] : [6. 계정의 홈 디렉터리] : [7. 사용자 쉘 종류]
khj : x : 1001 : 1001 : (X) : /home/khj : /bin/bash
2. /etc/group -> 사용자의 그룹 정보
[그룹명(기본)] : x : [그룹 식별자] : [소속원/계정명/디폴트 X]
khj:x:1001:
3. /etc/shadow -> 사용자의 실제 패스워드 정보 (암호화 상태)
[1. 계정명] : [2. 암호화된 패스워드] : [3. 최초 패스워드 변경 후 지난 일 수] : [4. 최소 변경일] : [5. 최대 유효기간] :
~ [6. 최대 유효기간] : [7. 만료 경고일] : [8. 비활성화 기간] : [9. 계정 만료일] : [10. 예약]
khj:$6$0NoCV1Bs$sA/fLZ.6nV.TVNdR6p5f4n/QSBSrN/C/jElx75A.sl8zr49W6h6QP6F0LRUqpZSnGPXHQH0SeXz0wBwslqZ.O0:19563:0:99999:7:::
4. /home/[계정의 홈 디렉터리] ->
5. /var/mail/[계정 사용자명(메일박스)] ->
#pwconv -> 패스워드 암호화 후 /etc/shadow 파일에 저장
#pwunconv -> /etc/shadow에 암호화 되어있는 패스워드를 /etc/passwd로 저장
왜 passwd 파일을 암호화해서 shadow 파일에 저장하나?
- 식별과 인증 과정에서 passwd을 사용하는데 이때 passwd 파일의 권한을
rwx--
로 설정한다면 식별, 인증 과정에서 passwd 파일에 접근 자체를 못하므로 passwd 파일의 권한은 rw-r-r-
로 두되 passwd에서 가장 중요한 id 내용은 shadow 파일로 따로 암호화하여 저장한다.
사용자 생성 및 변경, 삭제
<사용자 생성>
#useradd [옵션] [생성할 계정명]
#useradd khj
<사용자 비밀번호 변경>
#passwd [옵션] [계정명]
#passwd khj ---> [비밀번호 생성 과정]
<사용자 계정 삭제>
#userdel [옵션] [삭제할 계정명]
#userdel -r id1 [r옵션을 붙여야 mail과 home 디렉터리까지 삭제된다]
account : 계정(ID+Authorization[권한부여])
id : 식별자
/etc/passwd 파일의 내용
/etc/shadow 파일의 내용 (패스워드 설정 전)
/etc/shadow 파일의 내용 (패스워드 설정 후)
id1 계정 생성을 하면 3개의 파일과 2개의 디렉터리에 계정 관련 내용이 추가됨
(userdel
명령어 사용 시 -r
옵션을 사용해야하는 이유
=> 디렉터리까지 삭제를 해야하기 때문에)
<사용자 생성 참조/정의 파일>
/etc/login.defs
<사용자 쉘 관련 파일>
/etc/skel/사용자의 환경 설정 파일
login.defs
최대 변경일 99999
최소 변경일 0
비밀번호 최소 길이 5
만료 전 경고일 수 7
계정 생성시 시작하는 UID, GID의 최소값, 최대값(1000~60000)
사용자 정보 변경
#usermod [옵션] [설정값] [계정명]
[cat passwd 결과]
khj:x:1001:1001:[코멘트 삽입 장소]:/home/khj[홈디렉터리]:/bin/bash[사용 쉘]
<옵션.
-l : 계정명 변경
-u : UID 변경
-g : GID 변경
-c : 코멘트 추가
-d : 홈디렉터리 변경
-s : 쉘 변경
<코멘트 삽입>
#usermod -c kimhakjin khj
[결과]
khj:x:1001:1001:kimhakjin:/home/khj:/bin/bash
<홈디렉터리 변경>
#usermod -d /home/khj1 khj
[결과]
khj:x:1001:1001:kimhakjin:/home/khj1:/bin/bash
<쉘 변경>
#usermod -s /bin/csh khj
[결과]
khj:x:1001:1001:kimhakjin:/home/khj:/bin/csh
패스워드 정보 변경
#chage [옵션] [설정값] [계정명]
[cat shadow 결과]
khj:~~~:19563:0:99999:7:::
<옵션>
-l : 패스워드 정보 확인
-m : 최소 변경일
-M : 최대 유효일
-W : 패스워드 변경 만료일/경고일
-I : 비활성화 기간
-E : 계정 만료일
<최소 변경일 설정>
chage -m 10 khj
[결과]
khj:~~~:19564:10:99999:7:::
<최대 유효일 설정>
chage -M 1000 khj
[결과]
khj:~~~:19564:10:1000:7:::
<패스워드 변경 만료일 설정>
chage -W 10000 khj
[결과]
khj:~~~:19564:10:1000:10000:::
<비활성화 기간 설정>
chage -I 10 khj
[결과]
khj:~~~:19564:10:1000:10000:10::
<계정 만료일 설정>
chage -E 2023/12/32 khj
[결과]
khj:~~~:19564:10:1000:10000:10:19723:
<패스워드 정보 확인>
chage -l khj
![](https://velog.velcdn.com/images/orangestar/post/6d25cae4-0067-4415-bad4-13d9bd612d4d/image.png)
Shadow 기본설정 복구값
#chage -m 0 khj
#chage -M 99999 khj
#chage -W 7 khj
#chage -I -1 khj
#chage -E -1 khj
![](https://velog.velcdn.com/images/orangestar/post/8af6426c-b2ea-45d7-bf93-598e097f626f/image.png)
cf) 안전한 패스워드 사용
- 숫자 : 10자
- 알파벳 소문자 : 26자
- 알파벳 대문자 : 26자
- 특수문자 : 32자
ex)
- 2 Factor : 10자 이상
- 3 Factor : 8자 이상
Shadow 파일 분석
/etc/shadow
-> 패스워드 정보 (암호화 상태)
$6 -> HASH ID
$.4O9EZED -> Salt 값
$JYcrDjeUVdswUwFf0110jedhUPZQ3lZ6BHNF3O1COoM7oSj67fN/pgw7ig85lRUDwz6GhrYLdLc5UItncAOpU0
-> Salt + 1234 값 /// Hash Value
HASH ID
- 하나의 글자만 바뀌어도 암호화 전체가 바뀜. (cf.
눈사태 효과
)
1 : MD5
2 : BlowFish
3 :
4 :
5 : SHA-256
6 : SHA-512
ex)
login.defs 파일 내용
khj = SHA-512 (~:$6~)
khj2 = MD5 (~:$1~)
khj3 = SHA-256 (~:$5~)
= 암호화 알고리즘의 종류에 따라 암호화되는 문장의 길이가 차이난다.
암호 알고리즘 (대비-해)
1) 양방향 암호 알고리즘
- 암호화에 사용하는 키 / 복호화에 사용하는 키가
같은지 다른지로 구분
- 대칭키 (비공개키)
-> DES, AES, IDEA
(SEED 키사에서 / ARIA 국정원 /
HIGHT 저전력환경 / LEA 빅데이터, 클라우드, 모바일 환경)-> 국내산
- 비대칭키 (공개키)
-> RSA, Rabin (소인수분해) / (이산대수) 디피 헬만, elgamal, ECC, DSA
2) 일방향 암호 알고리즘 (해시 함수)
- 비암호학적 해시함수
-> CRC, Checksum, Parity
- 암호학적 해시함수
-> MD5/128비트, SHA-1/160비트, SHA-2(SHA-224, 256, 384, 512)