Skip to content

리눅스 사용자, 그룹정보#

사용자 정보#

사용자 패스워드, /ect/passwd#

  • 시스템 관리자가 사용자 계정을 만들 때마다 해당 사용자와 관련된 정보를 /etc/passwd 파일에 저장함
  • 시스템을 이용하는데 필요한 기본 정보들이 담겨 있음
  • /etc/passwd 파일의 각 라인은 개별 사용자에 대한 정보로 이루어져 있음
  • 구분자 ':'를 이용하여 7개의 필드로 구분

/etc/passwd 파일 형식

user_account:user_password:user_id:grounp_id:comment:home_directory:login_shell
     ①            ②          ③       ④         ⑤           ⑥            ⑦
( ':' 구분자 )
  • 사용자 계정 또는 로그인 이름
  • 사용자 패스워드
  • 사용자 ID
  • 기본그룹 ID (사용자가 소속된 그룹)
  • 참고사항
  • 로그인 후 사용자가 위치할 홈 디렉토리
  • 명령어를 처리하는 쉘 종류
  • /etc/passwd 파일 형식 예
    mysql:x:498:496::/home/db/mysql:/sbin/nologin
    postgres:x:497:495::/home/db/pgsql
    

/etc/passwd 파일 변경을 통한 해킹 및 대응#

/etc/passwd 파일 변경을 통한 해킹#

  • 해킹 시 주로 ③번 UID, ④번 GID를 0으로 변경
    • 시스템이 UID, GID 기준으로 권한을 부여하기 때문에 계정이름이 root가 아니더라도 UID, GID가 0이면 root 획득
    • 윈도우 계열 운영체제에서 시스템의 관리자 계정, 일반 계정을 구분하는 식별자인 윈도우의 보안 식별자(Security Identifier, SID) 500번이 관리자인 것과 같은 개념, 보안 식별자에 대한 자세한 내용은 http://ko.wikipedia.org/wiki/보안_식별자 참조
  • ⑦번 쉘 부분을 변경하여 사용자들이 로그인 시 악성 쉘이 실행되게 하는 방법

/etc/passwd 파일 변경을 통한 해킹 대응#

주기적으로 /etc/passwd 파일의 변경 여부를 확인해서 취약점을 제거해야 함

사용자 확인#

[root@**** ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

# 접속 중인 사용자를 확인하는 명령어, 사용자의 UID, GID를 출력
[root@**** ~]# id pdns
uid=496(pdns) gid=494(pdns) groups=494(pdns)

패스워드 암화화, /etc/shadow#

/etc/passwd 파일 형식

user_account:encryted_password:last_change:minlife:maxlife:warn:inactivel:expire
      ①             ②                ③        ④       ⑤     ⑥        ⑦       ⑧
( ':' 구분자 )
  • 사용자 계정 또는 로그인 이름
  • 암호화된 패스워드
  • 마지막으로 패스워드를 변경한 날
  • 최소 변경일 수
  • 변경하지 않고 사용 가능한 최대 일수
  • 경고일 수
  • 최대 비활성 일수
  • 사용자 계정이 만료되는 날
root:$6$/$ACsZJcs$sPdN/48UyxLi..ZoiYLKSItHe7OLDp1tHT9doOciy4UtOyJY8guf2xFFhsM1gOvSovmaILQ602.bJqIlHVnmh/:16550:0:99999:7:::
mysql:!!:15432::::::
  • root: 사용자 계정, 사용자 계정을 인덱스로 하여 /etc/passwd파일과 사용자 정보를 서로 연계
  • 6ACsZJcs/$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일 부터 며칠이 지났는지 그 일 수로 표기)

②번 암호화된 패스워드

  • 암호화된 패스워드 값은 정상 암호, NP, LK, 공백 등이 올 수 있음
    • 정상암호: 시스템 관리자가 암호를 지정하거나 일반 사용자가 passwd명력어를 통해 설정
    • NP: no password를 의미함, 주로 애플리케이션을 사용하는 사용자들에게 해당 암호를 지정
    • LK: lock이 설정된 사용자, 일반 사용자를 생성하고 정상 암호를 설정해주지 않는 경우 lock이 걸림
    • 공백: 시스템 관리자가 암호를 설정해서 사용자에게 알려주는 방식이 아니라 일반 사용자가 처음 로그인시 암호를 직접 설정해서 사용할 수 있도록 함

사용자 관련 명령어#

각 명령어 실행으로 /etc/passwd, /etc/shadow, /etc/group 파일의 내용이 변경됨

  • useradd: 사용자 계정 추가
  • usermod: 사용자 계정 변경
  • userdel: 사용자 계정 삭제

그룹정보#

그룹명과 그룹 ID#

  • 자원에 대한 접근 권한 및 보안 등의 관리를 위해 사용자와 사용자가 소속된 그룹에 대한 식별 필요
  • 사용자와 그룹을 식별하는 식별자: 사용자 ID, 그룹 ID (UNIQE 정수)

기본 그룹과 보조 그룹#

  • 자원의 소유자가 소속된 그룹에 별도의 접근 권한을 지정할 수 있음
  • 같은 그룹에 소속된 사용자는 자원에 대해 동일한 접근 권한을 갖음
  • 사용자 계정은 하나의 기본 그룹(Primary Group), 복수의 보조 그룹(Secondary Group)에 소속될 수 있음
  • 기본 그룹: 자원의 소유를 기술하기 위하여 사용, /etc/passwd 파일 4번째 필드

/etc/group#

/etc/group 파일 형식

group_name:unavailable:group_id:user_account_entry_in_group
      ①         ②          ③                ④
( ':' 구분자 )
  • 그룹명
  • 사용안함
  • 기본 그룹 ID
  • 소속된 사용자 계정들
  • /etc/group 파일 형식 예
root:x:0:root
bin:x:1:root,bin,daemon

그룹 관련 명령어#

  • groupadd: 그룹 생성
  • groupmod: 그룹 설정 변경
  • groupdel: 그룹 삭제

Last update: 2020년 5월 11일 12:31:58