출처 : 대전국제IT교육센터 정성재 강사
1. /etc/passwd 파일 관리시
주의사항
(1) 사용하지 않는 계정은 반드시 지우도록 한다.
(2) 패스워드없이 로그인 가능한 계정이 있나
살펴본다.
(3) 일반사용자이어야 하는데 root사용자(User ID가 0인 사용자)가 되어 있지 않은가 살펴본다.
(4) 등록시키지
않은 사용자가 등록되어 있는 지 살펴본다.
(5) shadow suite를 사용하여 /etc/passwd파일의 암호부분을 일반사용자가 볼
수 없는 /etc/shadow
파일에서 관리하도록 한다. 만약 초기에 shadow암호기법을 설정하지 않았다면 pwconv명령을
내려
shadow 암호기법을 사용하도록 한다. 참고로 해제는 pwunconv이다.
(6) shadow suite를 사용했을
경우에는 pwck나 grpck 명령을 이용하여 무결성 검사를 수시로 한다.
2. shadow
suite란?
(1) 개요: shadow suite란 사용자 관리 파일인 /etc/passwd 파일을 암호화하여
시스템을 보호하기
위한 일종의 패키지이다. 이 패키지에는 암호화 파일인 shadow파일이외에도 많은
유틸리
티와 편리한 기능을 제공한다.
(2) 설치확인
1) 설명: 리눅스에서는
shadow-utils라는 이름을 가지고 rpm패키지로 설치된다.
2) 확인
rpm -qi
shadow-utils
(3) Shadow Suite에서 제공하는 파일들
1) 명령어: su, login, passwd,
newgrp, chfn, chsh, id, useradd, userdel, usermod, groupadd,
groupdel, groups,, pwck, grpck, lastlog, pwconv, pwconv 등이 있다.
2) 환경설정파일:
/etc/login.defs, /etc/default/useradd 등이 있다.
3) 파일 목록의 확인
rpm -ql
shadow-utils
3. shadow suite의 기능
(1)
user계정과 group을 암호화하여 별도의 파일에 관리한다.
(2) user계정과 group을 추가,수정,삭제하는 여러 유틸리티를
제공한다.
(3) 계정의 정지, 무효를 손쉽게 할 수 있다.
(4) login에 대한 기본사항을 /etc/login.defs라는
파일을 제공하여 손쉽게 설정할 수 있도록 한다.
(5) group의 패스워드설정도 가능하다.
(6) 8자이상의 패스워드도 가능하게
한다.
(7) user가 패스워드 설정시에 적절하게 통제할 수 있다.
4. 패스워드 설정에
대하여
(1) 좋은 패스워드
1) 설명: 가장 좋은 패스워드는 다른 사람이 알아내기 힘든 패스워드이다.
요즘은 패스워드 변경
시에 좋은 패스워드를 선택하도록 엄격히 관리되고 있다.
2) 기본 패스워드 변경시
설정
ㄱ. 특수문자를 반드시 포함하도록 한다.
ㄴ. 대소문자를 섞어 쓰도록 한다.
ㄷ. 공백도 같이
사용한다.
(2) 나쁜 패스워드
1) 설명: 나쁜 패스워드를 사용하면 crack과 같은 프로그램을 이용하여 패스워드를 알아낼 수
있다. 이를 막기 위해서는 다음과 같은 패스워드는 피해야 한다.
2) 안좋은 패스워드 설정
ㄱ. ID와 같은 패스워드
ㄴ. 1234와 같이 숫자로만 되어 있고, 연번으로 되어 있는 패스워드
ㄷ. 사용하는
시스템의 이름과 같은 패스워드
ㄹ. 사용자의 전화번호, 생일, 자동차번호
ㅁ. 영어사전에 나오는 단어
ㅂ.
키보드위의 같은 선상에 있는 글쇠들의 연속(qwert,asdf 등)
ㅅ. 동일한 글자의 연속(aaaa, bbbb 등)
(3)
패스워드 변경시의 에러메시지
1) BAD PASSWORD: it's WAY too short 또는 BAD PASSWORD: it is
too short
=> 패스워드의 길이가 짧은 경우
2) Sorry, passwords do not
match
=> 두 번 입력한 패스워드가 동일하지 않은 경우
3) BAD PASSWORD: it is
based on your username
=> 패스워드에 ID가 들어있는 경우
4) Password
unchanged
=> 현재 패스워드와 동일하게 입력한 경우
5) BAD PASSWORD: is too
similar to the old one
=> 현재 패스워드와 유사하거나 숫자 하나정도만 바뀐 경우
6)
passwd: Authentication token manipulation error
=> 현재 패스워드와 틀리게 입력한
경우
7) BAD PASSWORD: it is based on a dictionary word
=> 새로
변경할 패스워드가 사전에 들어간 단어가 포함되어 있는 경우
8) passwd: Only root can specify a user
name.
=> 다른 사용자의 패스워드를 변경하려고 시도한 경우
9) BAD PASSWORD: it does
not contain enough DIFFERENT characters
=> 여러 문자로 패스워드를 설정해야 하는데
한두문자로 패스워드를 설정한 경우
10) BAD PASSWORD: it too simple
=> 패스워드가
너무 단순한 경우
(4) 패스워드 변경 성공시의 메시지
passwd: all authentication tokens
updated successfully
5. passwd 명령을 이용한 사용자 계정
관리하기
(1) 설명: passwd명령은 패스워드를 부여하거나 변경하는 것 이외에 계정을 정지시키거나
기간제한
등 사용자를 관리할 수 있다.
(2) 사용법
passwd option 사용자계정
(3)
option
-S : username에 대한 패스워드정보를 알 수 있다.
-l : 사용자의 패스워드에 lock을 걸어
로그인을 막는다.
-u : 사용자에게 걸려있는 패스워드를 푼다.
-d : 사용자의 패스워드를 제거한다. 패스워드없이
로그인이 가능하다.
-n : 패스워드 변경까지의 최단 날짜의 설정
-x : 현재 패스워드의 유효기간을 지정한다.
-w : 패스워드 만료 전 경고 날짜를 지정한다.
-i : 패스워드 만료된 뒤에 사용자 계정사용이 불가능하게 하기까지의 기간을
설정한다.
(4) 사용예
1) [root@house /root]# passwd -S posein
Changing
password for user posein
Password set, MD5 encryption
2)
[root@house /root]# passwd -l jjj
Changing password for user
jjj
Locking password for user jjj
passwd: Success
3)
[root@house /root]# passwd -u jjj
Changing password for user
jjj
Unlocking password for user jjj
passwd: Success
4)
[root@www /root]# passwd -d prehee
Changing password for user
prehee
Removing password for user prehee
passwd:
Success
=> 패스워드가 제거되어 아이디만으로도 로그인이 가능하다.
5) [root@www /root]#
passwd -n 1 -x 200 prehee
Adjusting aging data for user
prehee.
passwd: Success
=> 현재 패스워드는 200일간 유효하고 다음 패스워드는
유효기간이 1일이다.
(참고) /etc/shadow의 확인
prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:7:::
6) [root@www
/root]# passwd -w 1 prehee
=> 만료 전 3일부터 경고를 보내준다.
(참고)
/etc/shadow의 확인
prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:1:::
7) [root@www
default]# passwd -i 10 prehee
=> 패스워드 만료된 뒤에 사용자 계정사용이 불가능하게 하기까지의
기간을 설정한다.
(참고) /etc/shadow의 확인
prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:1:10::
6. UID 및 패스워드관련파일: /etc/login.defs
(1) 설명: 패스워드 제한 및 메일디렉토리
정의 등 사용자 제한에 관여하는 파일이다.
(2) 파일 내용
[root@www root]# cat
/etc/login.defs
# *REQUIRED*
# Directory where mailboxes reside,
_or_ name of file, relative to the
# home directory. If you _do_ define
both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail // mail
디렉토리를 정의하였다.
#MAIL_FILE .mail
# Password aging
controls:
#
# PASS_MAX_DAYS Maximum number of days a
password may be used.
# PASS_MIN_DAYS Minimum number of days
allowed between password changes.
# PASS_MIN_LEN Minimum
acceptable password length.
# PASS_WARN_AGE Number of days warning
given before a password expires.
#
PASS_MAX_DAYS 99999 //
패스워드 최대 사용 기간
PASS_MIN_DAYS 0 // 패스워드 변경최소 기간
PASS_MIN_LEN 5 // 패스워드 최소 길이
PASS_WARN_AGE 7 //
패스워드 소멸 이전 경고를 보여주는 날짜
#
# Min/max values for automatic uid
selection in useradd
#
UID_MIN 500 // UID
최소값
UID_MAX 60000 // UID 최대값
#
#
Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 // GID 최소값
GID_MAX
60000 // GID 최대값
#
# If defined, this command is run when
removing a user.
# It should remove any at/cron/print jobs etc. owned
by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should
create home directories for users by default
# On RH systems, we do. This
option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes // 홈디렉토리 생성여부
7. gpasswd
(1) 설명: 그룹에 패스워드를 설정하거나 그룹관리자를 지정할 수 있는 명령이다.
(2) 사용예
gpasswd [options] group
(3) option
-A : 그룹관리자를 지정한다. 루트관리자가 그룹관리자를 지정할
때 쓴다.
-a : 그룹에 사용자를 추가한다. 그룹관리자가 일반사용자를 그룹에 포함시킬 때 사용한다.
-d : 그룹에서
사용자를 제외시킬 때 사용한다. 그룹관리자가 일반사용자를 그룹에서 제외시킬 때
사용한다.
-r : 그룹패스워드를
제거한다. (리눅스에서 큰 의미 없음)
-R : 그룹패스워드의 사용자제를 disable시킨다.(리눅스에서 큰 의미 없음)
-M : 루트관리자가 그룹멤버를 지정할 때 사용한다. 루트만이 사용가능한 명령이다.
(4) 사용예
1) [root@www
root]# gpasswd -A posein terran
=> terran 그룹의 관리자로 posein을 지정한다.
참고로 posein이라는 사용자는 실제적으로
terran 그룹의 일원이 아니여도 가능하다.
2)
[posein@www posein]$ gpasswd terran
Changing the password for group
terran
New Password:
Re-enter new password:
=>
terran 그룹의 관리자인 posein 사용자가 그룹 패스워드를 지정하였다.
3) [posein@www posein]$
gpasswd -a prehee terran
Adding user prehee to group terran
=> prehee라는 사용자를 terran그룹에 속하도록 지정하였다.
4) [posein@www posein]# gpasswd
-d prehee terran
Removing user prehee from group terran
=>
prehee라는 사용자를 terran그룹에서 제외시킨다.
5) [root@www root]# gpasswd -M prehee
terran
=> prehee 라는 사용자를 terran 그룹의 멤버로 포함시킨다.
6) [posein@www
posein]$ gpasswd -r terran
=> terran 그룹의 그룹패스워드를 제거한다. newgrp명령을
이용하여 그룹에 합류할 수 있다.
7) [posein@www posein]$ gpasswd -R terran
=> newgrp명령을 통한 gid변경을 불가능하게 한다.
(참고) 사실 리눅스에서 gpasswd를 통한 그룹패스워드의
부여의 의미는 없다. 그룹 패스워드를 설정
한다고 해도 실제 사용하지는 않는다. 즉 -r과 -R 옵션은 큰 의미가 없다. 이
옵션을 사용해
서 설정을 한다고 하더라도 2차그룹에 속해 있으면 newgrp명령을 사용할 수 있다. 다만
그룹
관리 사용자를 지정하여 그 사용자가 그룹에 속할 사용자의 지정할 때는 사용가능하다.
8. 관련파일
(1) /etc/group
1) 설명: 그룹의 정보를 관리하는 파일이다. 그룹을
추가하면 이 파일에 기록되고 그룹을 삭제하
면 이 파일의 목록에서 삭제된다. 4개의 필드로 구성되어 있다.
2) 구성예
groupname:x:GID:member_list
=> (설명)
groupname: groupadd명령등으로 추가시킨 그룹명이다.
x : group의 패스워드를 나타내는 부분이지만
기본적으로 그룹패스워드도 /etc/gshadow에서
관리되므로 여기서는 그냥 'x'라고만 나타난다.
GID : 시스템에서 부여받는 group ID 이다.
member_list : 속해있는 멤버의 리스트를 보여준다. 보통 2차
그룹멤버들의 아이디가 보이게
된다. 여러명이 존재할 수도 있다.
3) 사용예
terran:x:507:prehee
(2) /etc/gshadow
1) 설명: /etc/shadow와 비슷한 파일로 그룹의
암호를 관리하는 파일이다.
2) 구성예
groupname:password:admin:member
=> (설명)
groupname : 그룹명을 나타낸다.
password : 그룹의 패스워드를
나타낸다. 보통 암호화되어 기록된다.
admin : 그룹관리자를 나타낸다. 여러명이 존재할 수도 있다.
member : 그룹의 멤버를 나타낸다. 보통 2차로 속한 사용자의 아이디가 기록되며 여러명이
존재할 수도
있다.
3) 사용예
terran:nLggKXgdf.KJE:posein:prehee
9. newgrp
(1) 설명: 자신의 소속된 그룹을 바꾼다.
(2) 사용법
newgrp [새로운_그룹]
=> 보통 'newgrp 2차_그룹'하게 되면 2차 그룹에 속하게 된다. 이 상태에서 새로운
그룹명을
입력하지 않고 newgrp 라고만 치면 원래 gid로 변환된다.
(3) 사용예
[prehee@www
prehee]$ id
uid=509(prehee) gid=509(prehee) groups=509(prehee)
=> prehee 라는 사용자는 자기 자신의 아이디와 동일한 그룹에 속해있다.
[prehee@www home]$ cd
/home
[prehee@www home]$ ls -l
-- 생략 --
drwxrwx--- 3
siztank terran 4096 1월 28 21:36 siztank
-- 생략 --
=>
siztank라는 사용자가 terran이라는 그룹에 속해있다. 이 상태에서는 prehee 라는 사용자는
siztank라는
디렉토리로의 접근이 불가능하다. 그룹권한이 부여되어 있기 때문에 최소한 terra
n 이라는 그룹에 속해 있어야 접근이
가능하다.
[posein@www posein]$ gpasswd -a prehee terran
Adding user
prehee to group terran
=> posein이라는 terran 그룹관리자가 있는데 이 관리자가 prehee라는
사용자를 gpasswd 명령을
사용하여 prehee라는 사용자를 그룹에 포함시켰다고 가정하자.
[prehee@www
prehee]$ newgrp terran
=> 이 때 prehee라는 사용자는 newgrp이라는 명령을 이용하여 terran
그룹에 속하도록 로그인
그룹을 바꿀 수 있다.
[prehee@www prehee]$ id
uid=509(prehee) gid=507(terran) groups=509(prehee)
=> gid가 변경된 것을 알 수
있다.
[prehee@www home]$ cd ~siztank
[prehee@www siztank]$ pwd
/home/siztank
=> siztank라는 디렉토리에 접근이 가능하다.
(4) 참고
ㄱ. 설명: 사실
단순히 접근이 목적이라면 이 명령은 사용하여 그룹을 변경할 필요는 없다. 이 명
령은 그룹관리자가 그룹에 속하게 한
뒤 당장 소속되어 있는 그룹을 바꿀 필요성이 있을
때만 필요하다. 접근이 안된다고 하더라도 다시 로그인하면 자동으로
2차그룹에 속해진
다. 그러나, 그룹을 변경하는 것은 그 사용자가 파일을 생성했을 때 그 파일의 소속
그
룹과 밀접한 관련이 있다.
ㄴ. 사용예
a. [prehee@www prehee]$
id
uid=509(prehee) gid=509(prehee)
groups=509(prehee),507(terran)
=> 기본 그룹은 prehee 라는 것을 알 수
있다.
[prehee@www prehee]$ touch aaa
=> aaa라는 빈 파일을
생성해본다.
[prehee@www prehee]$ ls -l
합계 0
-rw-rw-r-- 1 prehee prehee 0 1월 28 21:56 aaa
=> 빈
파일의 그룹소유권이 prehee라는 것을 알 수 있다.
b. [prehee@www prehee]$ newgrp
terran
=> 소속 그룹을 terran으로 변경하였다.
[prehee@www prehee]$
id
uid=509(prehee) gid=507(terran)
groups=509(prehee),507(terran)
=> gid가 terran그룹인 507번으로 바뀌었음을 알 수
있다.
[prehee@www prehee]$ touch bbb
=> bbb라는 빈파일을
생성해본다.
[prehee@www prehee]$ ls -l
합계 0
-rw-rw-r-- 1 prehee prehee 0 1월 28 21:56 aaa
-rw-r--r-- 1 prehee terran 0 1월 28 21:57 bbb
=>
bbb파일의 소속 그룹이 terran임을 알 수 있다.
10. 사용자 및 그룹 무결성 검사 명령
(1) 개요: 리눅스 및 유닉스 계열은 Shadow Password suite라는 것을 사용한다. 이 패키지는
/etc/
passwd의 패스워드 부분을 /etc/shadow에서 하도록 해주는 역할 등을 한다. 내부적으로
사용자 및 그룹관리할 때, 사용자관리는 '/etc/passwd'와 '/etc/shadow'파일에서
담당하고
그룹관리는 '/etc/group'와 '/etc/gshadow'에서 한다. 사용자 및 그룹관리에서 사용자
또는 그룹을 두 개의 파일에서 담당하니 그 두 개의 파일사이에 문제점이 있는지 없는지를
검사할
필요가 있다. 그래서, Shadow Password Suite 패키지에서 이 두 파일간의 무결성
검사 명령어를
제공하는데 이 무결성 검사 명령이 사용자관리(/etc/passwd와 /etc/shadow)
는 pwck 가 하고
그룹관리(/etc/group와 /etc/gshadow)는 grpck가 합니다.
(2) 관련명령어
1) pwck
ㄱ. 설명: pwck는 password check의 약어로 /etc/passwd파일과 /etc/shadow파일을 검사한다.
ㄴ.
하는일
a. filed의 설정 검사
b. 사용자와 그룹아이디 설정 검사
c. 기본 그룹의 존재
유무 검사
d. 홈디렉토리가 존재 유무 검사
e. 로그인쉘이 존재 유무 검사
f. 패스워드가
없는 계정의 존재 유무 검사
ㄷ. 사용법
pwck
ㄹ. 사용예
[root@www
root]# pwck
user adm: directory /var/adm does not exist
user gopher: directory /var/gopher does not exist
user ftp: directory
/var/ftp does not exist
user wnn: directory /home/wnn does not exist
user apache: directory /var/www does not exist
user
webalizer: directory /var/www/html/usage does not exist
=> pwck는
/etc/passwd와 /etc/shadow파일을 검사하여 문제성이 있는 소지를 보여준다. 이
예는
/etc/passwd파일에 계정이 존재하는 데 관련 디렉토리가 없다는 메시지이다.
2) grpck
ㄱ. 설명:
grpck는 group password check의 약어로 /etc/group과 /etc/gshadow파일의 검사한다.
ㄴ.
하는일
a. field의 설정 검사
b. 그룹아이디와 이름의 설정 검사
c. 사용자와 관리자의
설정 검사
ㄷ. 사용법
grpck
ㄹ. 사용예
a. [root@www root]#
grpck
=> 특별한 이상이 없으면 변화가 없다.
b. (가정) 이상을 만들어 본다. 원래
terran이라는 그룹이 있다고 가정하고 임의로 /etc/group
에서 vi편집기로 terran =>
terra로 바꾸어 본다.
[root@www root]# grpck
no matching group
file entry
delete line `terran::posein:prehee'
=> /etc/gshadow에 맞지 않는 부분이 있다고 삭제한다고 나온다.