RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제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에 맞지 않는 부분이 있다고 삭제한다고 나온다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31