사용자 정보
1. /etc/passwd 파일
- 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd 파일에 저장함
- 시스템을 이용하는데 필요한 기본 정보들이 담겨 있음
- /etc/passwd 파일의 각 라인은 개별 사용자에 대한 정보로 이루어져 있음
- 구분자 ':'를 이용하여 7개의 필드로 구분
1) /etc/passwd 파일의 형식
2) 예시
① root: 사용자 계정, 로그인 이름
② x: 사용자의 패스워드
③ 0: 사용자 ID로 특정 사용자를 나타내는 숫자로 된 ID(UID)
④ 0: 기본 그룹 ID로 사용자가 소속된 그룹을 나타내는 숫자로 된 ID(GID)
⑤ root: 사용자 관련 기타 정보(코멘트, 참고사항)
⑥ /root: 로그인에 성공한 후에 사용자가 위치할 홈 디렉토리 명
⑦ /bin/bash: 명령어를 처리하는 쉘의 종류를 지정
* 참고: /sbin/nologin, /bin/false
쉘의 종류를 나타내는 필드에 /sbin/nologin 또는 /bin/false가 기입되어 있다면, 그 계정은 시스템에서 사용하는 로그인이 필요없는 계정임을 나타낸다. 대부분 UID 100이하, 6000이상은 일반적으로 시스템에서 사용하는 로그인이 필요없는 계정이다.
시스템에서 사용하는 로그인이 필요없는 사용자 계정을 생성하려면 useradd -s 옵션을 사용하여 로그인 쉘을 /sbin/nologin 또는 /bin/false로 지정하여 새로운 사용자 계정을 생성한다.
예) useradd -s /sbin/nologin testuser
2. /etc/passwd 파일 변경을 통한 해킹 방법, 대응책
1) 방법 1 - 해킹 시 주로 ③번 UID, ④번 GID를 0으로 변경
- 시스템이 UID, GID 기준으로 권한을 부여하기 때문에 계정이름이 root가 아니더라도 UID, GID가 0이면 root가 됨
(윈도우 계열 운영체제에서 시스템의 관리자 계정, 일반 계정을 구분하는 식별자인 윈도우의 보안 식별자(Security Identifier, SID) 500번이 관리자인 것과 같은 개념,
보안 식별자에 대한 자세한 내용은 http://ko.wikipedia.org/wiki/보안_식별자 참조)
2) 방법 2 - ⑦번 쉘 부분을 변경하여 사용자들이 로그인 시 악성 쉘이 실행되게 하는 방법
3) 대응책
- 주기적으로 /etc/passwd 파일의 변경 여부를 확인해서 취약점을 제거해야 함
3. 사용자 확인
- id 명령: 접속 중인 사용자를 확인하는 명령어, 사용자의 UID, GID를 출력
1) id 명령어 도움말
2) id 명령어 실행 결과 예시
4. 패스워드 변경
- passwd 명령: 사용하던 패스워드 변경, 패스워드가 없는 사용자 계정에 패스워드 부여
- passwd 명령 실행
a. 일반 사용자: 자신의 패스워드만 변경 가능
b. 슈퍼유저(root)는 자신을 포함하여 시스템에 등록된 모든 사용자들의 패스워드 변경 가능
1) passwd 명령어 도움말
2) passwd 명령어 실행 예시
5. 패스워드 암호화
- /etc/shadow 파일에 각 사용자 계정에 대한 패스워드가 암호화 되어 있음
1) /etc/shadow 파일의 형식
2) 예시
① root: 사용자 계정, 사용자 계정을 인덱스로 하여 /etc/passwd파일과 사용자 정보를 서로 연계
②$6$ACsZJcs/$sPdN/48UyxLi..ZoiYLKSItHe7OLDp1tHT9doOciy4UtOyJY8guf2xFFhsM1gOvSovmaILQ602.bJqIlHVnmh/: 암호화된 패스워드, 복호화가 불가능, 사용자가 입력한 패스워드를 암호화 하여 필드 값과 비교
- $6: SHA512 ($1: MD5, $2: blowfish, $5: SHA256)
- $ACsZJcs/: salt값
- $sPdN/48UyxLi..ZoiYLKSItHe7OLDp1tHT9doOciy4UtOyJY8guf2xFFhsM1gOvSovmaILQ602.bJqIlHVnmh/
: salt값 + 사용자 입력 패스워드
③ 16550: 마지막으로 패스워드를 변경한 날 (1970년 1월 1일부터 며칠이 지났는지 그 일수로 표기)
④ 0: 최소 변경 일수(패스워드를 변경할 수 없는 기간의 일수 지정)
⑤ 99999: 최대 변경 일수(현재 사용중인 패스워드를 변경하지 않고 사용할 수 있는 기간의 일 수 지정)
⑥ 7: 경고일수(max 필드에 지정한 일수가 며칠 남지 않았음을 알리는 필드, 로그인 할 때마다 경고 메시지 출력)
⑦ (현재 값지정 안함): 최대 비활성 일수(시스템에 로그인을 자주하지 않는 사용자의 경우 사용자 계정을 비활성화 시켜서 로그인이 되지 않도록 하는 기능)
⑧ (현재 값 지정 안함): 사용자 계정이 만료되는 날(1970년 1월 1일 부터 며칠이 지났는지 그 일 수로 표기)
⑨ (현재 값 지정 안함): 사용 안함
3) ②번 암호화된 패스워드 값의 의미
- 암호화된 패스워드 값은 정상 암호, NP, *LK*, 공백 등이 올 수 있음
a. 정상암호: 시스템 관리자가 암호를 지정하거나 일반 사용자가 passwd명력어를 통해 설정
b. NP: no password를 의미함, 주로 애플리케이션을 사용하는 사용자들에게 해당 암호를 지정
c. *LK*: lock이 설정된 사용자, 일반 사용자를 생성하고 정상 암호를 설정해주지 않는 경우 lock이 걸림
d.공백: 시스템 관리자가 암호를 설정해서 사용자에게 알려주는 방식이 아니라 일반 사용자가 처음 로그인시 암호를 직접 설정해서 사용할 수 있도록 함
6. 사용자 관련 명령어
- 각 명령어 실행으로 /etc/passwd, /etc/shadow, /etc/group 파일의 내용이 변경됨
- useradd: 사용자 계정 추가
- usermod: 사용자 계정 변경
- userdel: 사용자 계정 삭제
- 각 명령어 도움말
그룹 정보
1. 그룹명과 그룹 ID
- 자원에 대한 접근 권한 및 보안 등의 관리를 위해 사용자와 사용자가 소속된 그룹에 대한 식별 필요
- 사용자와 그룹을 식별하는 식별자: 사용자 ID, 그룹 ID (유일한 정수값)
2. 기본 그룹과 보조 그룹
- 자원의 소유자가 소속된 그룹에 별도의 접근 권한을 지정할 수 있음
- 같은 그룹에 소속된 사용자는 자원에 대해 동일한 접근 권한을 갖음
- 사용자 계정은 하나의 기본 그룹(Primary Group), 복수의 보조 그룹(Secondary Group)에 소속될 수 있음
- 기본 그룹: 자원의 소유를 기술하기 위하여 사용, /etc/passwd 파일의 4번째 필드 값
3. /etc/group 파일
1) /etc/group 파일의 형식
2) /etc/group 파일 예시
① audio: 그룹명
② x: 사용 안함, 그룹의 암호화된 패스워드 (현재 미사용)
③ 29: 기본 그룹 ID(GID), 그룹명을 대신하는 정수형 숫자
④ pulse: 소속된 사용자 계정들
4. 그룹 관련 명령어
- groupadd: 그룹 만들기
- groupmod: 그룹 설정 내용 변경하기
- groupdel: 그룹 삭제하기
- 각 명령어 도움말
'보안 > System' 카테고리의 다른 글
[UNIX / Linux] 프로세스 응용 (0) | 2015.05.10 |
---|---|
[UNIX / Linux] 디렉토리 및 파일 관련 명령어 (1) | 2015.05.02 |
[UNIX / Linux] 파일 검색(find) (0) | 2015.05.02 |
[UNIX / Linux] 권한 관리(chmod, chown, chgrp, umask) (13) | 2015.04.30 |
[UNIX / Linux] 디렉토리 관리 (5) | 2015.04.29 |
[UNIX / Linux] 특수 문자(Shell Metacharacter) (0) | 2015.04.28 |
[UNIX / Linux] 파일링크(ln) (0) | 2015.04.27 |
[UNIX / Linux] 입출력 재지정, 파이프 (1) | 2015.04.26 |
[UNIX / Linux] 로그인, 로그아웃 (0) | 2015.04.25 |