본문 바로가기

정보보안/시스템 보안

[UNIX/Linux 기본학습] 계정 정보

계정 정보 관련 파일
passwd 파일

① 정의: 사용자 계정 정보를 저장하고 있는 파일
 경로: /etc/passwd
 형식: 콜론(:)을 구분자로 7개의 필드로 구성

cat /etc/passwd

username:password:UID:GID:GECOS:homedir:shell
사용자 계정명 사용자 패스워드 UID GID 설명 홈디렉터리 로그인쉘
root x 0 0 root /root /bin/bash
사용자 패스워드
- x 의 의미 : 비밀번호를 설정하지 않았다는 의미가 아니라 'shadow 패스워드 정책'을 사용한다는 의미

UID(User ID)
시스템 내에서 사용자를 고유하게 식별하기 위한 ID
- 같은 UID가 서로 다른 사용자 계정에 설정될 수 있다.(윈도우와 다른점) 이 경우 시스템은 서로 다른 사용자 계정명을 사용하는 같은 사용자로 판단
- root 계정(슈퍼 유저 계정, 관리자 계정)의 UID는 0으로 예약(cf.윈도우:Administrator) -> 일반사용자 UID를 0 이라고 설정하면 그 계정은 root 권한을 갖게 된다. -> 주기적으로 부적절하게 UID가 0으로 설정된 일반 사용자 계정이 있는지 점검 필요

기본 그룹 GID(Group ID)
리눅스의 경우 모든 사용자는 하나의 기본그룹을 필수적으로 가지며, 필요 시 보조그룹을 가질 수 있다. 이 중, 기본그룹에 해당하는 그룹 ID가 이 필드에 설정
- 기본 그룹: 사용자의 자원 생성 시 자원의 소유그룹 결정
- 보조 그룹: 기본 그룹 이외에 추가 그룹 권한 필요 시 다른 그룹에 소속될 수 있는데 이를 보조그룹이라고 칭함.

설명
사용자 관련 추가 설명(주석)

홈 디렉터리
사용자가 로그인에 성공한 후 위치할 홈 디렉터리

로그인쉘
사용자가 로그인에 성공한 후에 동작할 쉘 프로그램
- *쉘: 사용자와 커널 간 인터페이스 역할을 하는 프로그램. 사용자가 입력한 명령어를 해석해 커널에 전달. (리눅스 기본 쉘:bash)
- 로그인 쉘 필드에 반드시 로그인 쉘만 설정할 수 있는 것은 아니다. 필요시 별도의 실행파일을 설정해, 로그인 이후 실행파일이 동작하게 할 수 있음. 공격자가 이를 악용해 사용자 로그인 시 악성 쉘(악성 프로그램)이 실행되도록 설정하는 예도 있으므로 주기적 점검 필요

 

shadow 파일
cat /etc/shadow

username:password:lastchg:min:max:warn:inactive:expire

계정명 패스워드 마지막
패스워드
변경일자
패스워드
최소사용기간
패스워드
최대사용기간
경고 일수 비활성 일수 계정만료일
root $t$...$.... 18437 0 빈값 빈값 빈값 빈값
계정명
사용자 계정명

패스워드
의미: 암호화된 패스워드
구성방식: $ID$Salt$encrypted_password
① $ID : 암호화에 적용된 일방향 해시 알고리즘 식별 (1:MD5, 2:BlowFish, 5:SHA-256, 6:SHA-512)
         MD5: 취약, SHA-256 이상 권장
② $Salt : 패스워드 암호화 강도를 높이기 위한 랜덤값. 사용자가 지정한 패스워드에 서로 다른 솔트를 추가해 암호화된 패스워드(해시값) 생성
            복호화해도 해당 패스워드는 실제 패스워드가 아님 (즉, 레인보우 테이블 공격에 효과적으로 대응)
③ $encrypted_password: 사용자 패스워드에 솔트를 조합하여 해시한 해시값. 다음과 같은 기호로 표시될 수 있다.
[리눅스]
기호 설명
* 패스워드가 잠긴 상태.
패스워드 로그인 불가.
별도인증방식(ssh같은)사용해 로그인
!! 패스워드가 잠긴 상태. 모든 로그인 불가.
사용자 계정 생성 후 패스워드 설정 안하면 !! 상태
*빈값 패스워드가 설정되지 않은 상태.
패스워드 없이 로그인 가능
[UNIX(SunOS)]
기호 설명
NP No Password
로그인 할 수 없는 계정
시스템 및 애플리케이션 계정 용도로 주로 사용
*LK* Lock
로그인 할 수 없는 계정
잠긴상태
빈값 패스워드가 설정되지 않은 상태
로그인 시 패스워드 설정 과정이 진행

마지막 패스워드 변경일자
- 마지막으로 패스워드를 변경한 날(1970년 1월 1일 기준으로 지난 일수 표시)

패스워드 최소 사용기간
- 패스워드를 마지막으로 변경하고 최소 ~만큼은 사용해야된다
- 1일(1주) 사용 권장
- 왜필요하냐면, 패스워드 바꿔놓고 바로 원래 패스워드로 바꿀 수 있어서 

패스워드 최대 사용기간
- 패스워드를 마지막으로 변경한 날짜 기준 ~일 후에 패스워드가 만료된다
- 90일(12주) 사용 권장

경고일수
- 패스워드 만료 이전 경고일수
- if, 7 : 7일 후 패스워드 만료

비활성일수
- 패스워드가 만료된 이후 계정이 잠기기 전까지 비활성 일수.
- Linux같은 경우 해당 비활성 기간 안에 패스워드를 변경하지 않으면 계정 잠김.
- UNIX같은 경우 마지막 로그인 이후 해당 일수동안 로그인하지 않으면 계정 잠긴다는 의미

계정만료일
- 1970년 1월 1일 기준으로 계정 만료일 지정

 

group 파일

① 정의: 그룹 정보를 저장하고 있는 파일로 '콜론(:)을 구분자로 4개의 필드로 구성
 경로: /etc/group
 형식: 콜론(:)을 구분자로 4개의 필드로 구성

root x 0 root
그룹명 그룹 패스워드(사용x) 그룹ID(GID) 그룹에 소속된 사용자

- root계정과 마찬가지로 root 그룹은 GID=0으로 예약

 

계정정보 관련 명령어
명령어 의미
id [user_account] 사용자 id와 사용자가 속한 그룹 id정보 확인
passwd [user_account] 패스워드 변경