강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
cops(Computer Oracle and Password System) 활용
조회 : 3,871  




현 미 향 : climbk@hitel.net

       

      ###################

       목차

       1. cops란 무엇인가?
       2. cops의 설치
       3. cops의 사용법
       4. cops의 실제사용 예
       5. 알아 두어야 할 점

       부록: vi 편집기 사용법

      ###################

      테스트 환경

      * 펜티엄II 233Mhz
      * 32M 메모리
      * 알짜 5.2 (커널 2.0.36)
      * 알짜 6.0 (커널 2.2.12)
      * 스왑공간 50M

       

    1. cops란 무엇인가?

      cops(Computer Oracle and Password System)은 시스템 보안 감시활동을 자동화해주는 프로그램의 집합이다.

      자신의 unix, linux시스템에 대한 보안 감시활동을 위한 프로그램으로서 cops는 시스템에 침투한 외부 크랙커나, 악의적인 내부 사용자들이 시스템 관리자 몰래   시스템을 변경하더라도 이 cops 프로그램을 실행함으로써 초기에 시스템 관리자가 설정한 것과 다르게  변경된 모든 것을 보여주므로, 어느 부분이 변경되어서 시스템이 보안에 취약해졌는 가를 알 수 있게 되는 것이다.

      또한, 시스템 관리자의 실수로 인해 잘못 설정된 시스템의 취약부분도 함께 보여줌으로써 시스템의 보안을 높여준다. 하지만 여기서 알아두어야 할 점은 cops는 보안이 취약해졌다는, 또는 시스템의 어느 부분이 변경되었다는 것만을 알려줄 뿐 cops 자신이 직접 고쳐주지는 않는다. 시스템 관리자 자신이 직접 cops가 제공하는 경고문서에 따라 고쳐주어야만 한다. (5. 알아두어야 할 점 참고).

      그럼에도 cops가 시스템 보안으로서 중요한 점은 시스템 관리자의 실수이던, 외부침입으로 인한 보안 문제이던지 즉각적인 발견이 가능하다는 점이다.

      cops가 해주는 중요한 일들은

         @파일,디렉토리 및 장치파일에 대한 퍼미션 점검
         @/etc/passwd, /etc/group 파일 내용 점검
         @/etc/hosts.equiv, [사용자홈디렉토리]/.rhosts 파일 내용 점검
         @suid파일 내용 점검
         @anonymous ftp 점검
         @/etc/rc*, /etc/rc*.d/*, cron 파일 점검
         @시스템의 파일, 디렉토리 소유권과 퍼미션 변화 점검 등...

     

    2. cops 설치하기

      [주의] “#” 표시는 현재 root상태임을 표시한다. 또한 vi 편집기 명령어는 이 글 마지막 부분에
                 부록으로 간단한 사용법을 적어두었다.

      ### cops프로그램 구하기 ###

       ftp://coast.cs.purdue.edu/put/tools/unix
       및 다른 보안 사이트들

      ### 이동 및 압축풀기 ###

      cops프로그램은 자신의 홈디렉토리 밑에 설치한다.

      [root@www~]#mv /root/down/cops.1.04.tar.gz   /root/install/
      down, install 디렉토리는 임의의 디렉토리로 여러분이 원하는 이름으로 짓기 바란다. down은 프로그램들을 저장하는 디렉토리이며 install은 프로그램들을 설치할 때 사용하는 디렉토리이다.

      [root@www~/install]# tar  xvzf  cops.1.04.tar.gz
      gz,tar로 묶인 프로그램을 한꺼번에 풀어준다.
       압축을 풀어주면 cops_104/ 디렉토리가 생긴다.

          예) /root/install/cops_104

      ### cops설치하기 ###

      cops를 압축해제하면 셀버전과 펄버전 두 개가 압축 해제된다. 여기서 설치하기 편리하며 사용이 간편 한 셀 버전을 위주로 설치한다.

      [root@www~]# cd /root/install/cops_104
       cops가 설치된 디렉토리로 이동한다.

      [root@www cops_104]# ./reconfig
       cops가 실행될 때 필요한 파일들의 경로를 확인시켜 준다.
       
       

       checking to make sure all the target(s) are here...
       So far so good...
       Looking for all the commands now...
       Warning! tftp not found! misc.chk will not work as planned.
       Ok, now doing substitutions on the shell scripts...
       Changing paths in makefile...
       Changing paths in docs/makefile...
       Changing paths in chk_strings...
       Changing paths in cops...
       ...생략

       

      [root@www cops_104]# make  all

        [주의] make만 해주어도 설치되지만 man 페이지도 함께 생성 시키려면 make all 해준다.
        [주의] 컴파일 도중 패스워드 체킹 프로그램에서 실패해서 컴파일 실패하는 사람들은
                  “makefil-e” 내 29줄의 “#”표시를 없앤다. 즉 다음의 줄을 uncomment 한다.

       예) make: *** [pass.chk] Error 1 <=에러발생으로 컴파일 중지

       예)  vi  makefile
           # BRAINDEADFLAGS = -lcrypt
              에서 “#”을 지워준다.

      위와 같이 해준 후 make all 해주면 아무런 문제없이 설치가 완료된다.

      ### cops설치 후 해줄 일 ###

      cops 프로그램을 설치한 후 실행파일 cops을 편집기(vi등)로 열어 자신이 원하는대로 설정을 변경해 주어야만 한다. 아래 부분 중 93,94번 줄만 바꾸어 주어도 cops실행하는데 아무런 문제 없다. 나머지 설정은 필요하다고 생각되는 사람만 해주어도 된다.

      [root@www cops_104]# vi cops

      * cops파일내 55번 줄을 YES나 NO로 변경함으로써 cops 실행시 실행한 사람에게 메일로
         실행결과가 전송되거나 그렇지 않도록 할 수 있다.

          MMAIL=YES    메일로 전송
          MMAIL=NO     메일로 전송 안되고 자신의 캅스 디렉토리로 실행결과 저장.
                               이 방식을 추천한다.

      * cops 파일 내 70번 줄을 YES로 변경해서 cops가 실행될 때 suid 프로그램도 함께 실행
         되도록 한다.
         이 부분을 “YES” 로 한 사람들은 아래 5. 알아두어야 할 점을 반드시 참고 바란다. 

             RUN_SUID=YES

       * cops 파일 내 93,94번 줄을 자신의 시스템 설정에 맞게 반드시 고쳐준다.
          이 부분만 고쳐 주어도 무방하다.

            SECURE=/자신의/캅스가/설치된 경로
            SECURE_USERS=”사용자@도메인명”

          (예)
            SECURE=/root/install/cops_104
           <=자신의 cops가 설치된 경로 적어준다.

            SECURE_USERS=”root@localhost”
            <=실행 결과를 메일로 받기 원하는 사람.

       * cops 파일 내 218-220,224-226번 줄의 “#”을 삭제(uncomment)해서 “crc.chk”도 함께
         cops와 실행되도록 한다.
       

      # if $TEST -n “$verbose” ; then  
      #       $ECHO “****crc.chk ****” >> $VERBUCKET ; fi
      # $SECURE/crc.chk       2>> $BIT_BUCKET

      # if $TEST -s “$SECURE/crc_results” ; then
      #       $CAT $SECURE/crc_results >> $RESULT
      # fi

         

      위에서 “#”들을 삭제한다.

     

    3. cops의 실행 법

      ### cops 실행 ###

      [root@www cops_104]# ./cops

      보통의 cops의 실행.
      백그라운드로 실행을 원하면 “&”을 붙여준다.

         예) ./cops &

        실행시간은 보통 1-2분 정도 걸린다. 내 경우 30초 걸렸다. 시스템마다 다르다.

      (주의)  캅스을 실행시키면 캅스 디렉토리 밑으로 자신의 호스트이름으로 디렉토리가 하나
                생성된다. 그 밑으로 실행결과가 “year_month_day” 형식으로 저장된다.

      예) [root@www~]  
            호스트 이름이 www로 시작되므로 캅스 디렉토리 내 www란 이름으로 디렉토리가
            생성된다.

      예) [root@localhost~]
            호스트 이름이 localhost이므로 캅스 디렉토리 내 localhost/란 디렉토리가 생성된다.

      각자의 호스트 이름에 따라 다르게 만들어 질 것이다.

      ### cops실행 결과 보기 ###

        [root@www cops_014]# cd www/
        [root@www www]# ls -al
       

      -rw-r--r--  1 root   root   143 Jan 15 16:16   2000_Jan_15

       

      “year_month_day”형식으로 저장된 것을 확인할 수 있다.

        [root@www www]# vi  2000_Jan_15
       

      ATTENTION:
      Security Report for Sat Jan 15 16:16:02 KST 2000
      from host www.redhat.com

      Warning! Home directory for ftp doesn’t exist!

       

        내 시스템의 cops 실행결과이다. 앞에서 밝혔듯이 cops는 보안경고만 밝혀줄 뿐
        직접 고쳐주지는 않는다. 여러분이 직접 수정해야만 한다.

       [주의] 경고메시지에 나온 에러를 수정하는 법은 아래 “5. 알아두어야 할 점” 참고 바란다.

      ### 알아두면 좋은 cops 실행 명령어 인자들###

      -d  전에 출력된 메시지와 다를 경우에만 메시지가 출력. -m인자와 함께 사용되거나,
            메일보내기를 허용했을 경우에만 효과적이다.

      -m user   user에게 메일을 보낸다.

      나머지 인자들은 cops파일에 나와있는 것을 참고 하거나, ./cops --help해서 참고 한다.

      예) [root@www cops_104]# ./cops -d -m root
           root에게 메일을 전해준다.

     

    4. cops 실제 사용 예

      * 일반사용자가 root 권한을 가지고 있는 것을 보여준다.
       

      ATTENTION:
      Security Report for Mon Jan 17 11:11:51 KST 2000
      from host www.redhat.com

      Warning!  Password file, line 17, user chris has uid = 0  and is not root
      chris:x:0:0:Nobody:/home:/bin/tcsh

       

      * anonymous ftp의 디렉토리가 없다는 것을 보여준다.
       

      ATTENTION:
      Security Report for Sun Jan 9 09:37:26 KST 2000
      from host www.redhat.com

      Warning! Home directory for ftp doesn’t exist!

       

      * root디렉토리가 777 모드로 변경되어 모든 사용자들이 드나들 수 있게 된 경우다. 메일로
        받도록 한 경우이다.
       

      Date: Mon, 17 Jan 2000 11:44:04 +0900
      From: root <root@www.redhat.com>
      To: root@www.redhat.com

      ATTENTION:
      Security Report for Mon Jan 17 11:44:02 KST 2000 from host
      www.redhat.com

      Warning!  User root’s home directory /root is mode 0777!
      Warning!  User operator’s home directory /root is mode 0777!

       

      * 각자 자신의 시스템의 설정에 따라서 다양한 메시지를 보게 될 것이다. 보통 사용자들에게는
         별 커다란 문제가 없겠지만, 크래커나 악의적인 내부 사용자에 의해 침투된 시스템은
         여러 에러메시지를 보여줄 것이다.

     

    5. 알아두어야 할 점

      * cops가 설치된 디렉토리는 root만이 접근해야 한다.
         만일 cops가 설치된 디렉토리가 root만이 아닌 다른 사용자들이 접근가능하도록 모드가
         되어있다면 문제가 발생할 수 있다. 다음과 같이 되어있는지 확인한다.
       

      drwx------  10 2993  78  2048 Jan 17 11:11  cops_104/

       

       위와같이 되어있지 않으면 바꾸어 주어야 한다.

         # chmod 700 cops_104/

      * “suid.chk” 프로그램 실행 전, 47번 줄의 메일을 받을 사람 주소를 변경해주어야 한다.

        # vi suid.chk

          INFORM=”root@localhost” <=메일받을 사람주소

      * “suid.chk” 프로그램은 적어도 일주일에 한 번씩 실행시켜 준다. 

        # ./suid.chk

      * cops실행후 받는 에러메시지에 대한 해결책은 자신의 캅스 디렉토리 내 docs/ 디렉토리
         안의 warnings 파일에 자세히 설명되어 있다. 

        # cd  /root/install/cops_104/docs ; vi warnings

      * cops_104 디렉토리 내 *.chk 실행파일들이 어떠한 작업을 하는지 좀 더 자세히 알고 싶은
         사람들은 release.notes 파일을 읽는다. 

        # vi   /root/install/cops_104/docs/release.notes

      * cops 실행결과를 너무 과신하지 말라.
         cops 실행결과가 “깨끗함“이라고 하더라도 다른 보안 툴을 실행시켜 서로 보완적인 결과를
         가져다 주도록 노력한다.

      * cops 디렉토리 내 “is_able.lst” 파일은 모든 시스템사용자들에게 읽기/쓰기 모드로 된
         파일들을 체크해 준다. 자신의 시스템에 맞게 고쳐주고 싶은 사람은 고쳐 주도록 한다.
         그리 필요치는 않을 것이다.

      *위 설명에 빠진 미진한 부분들은 cops_104/내 RE-ADME* 파일들과 cops_104/docs/ 에
        있는 파일들을 읽어보기 바란다.

      (주의) 위에 사용된 www.redhat.com은 예제로서 사용된 것이다.

      #######################

      부록: v i 편집기 사용법
       

       vI(파일명)  파일을 읽거나 쓰기 위해 열어준다.  
       x              커서 위의 한 글자 삭제시켜 준다.
       :set nu      각 줄에 번호가 매겨져 보여진다.
       dd            커서가 있는 줄 전체를 삭제한다.
       I               커서가 있는 곳에 글자를 삽입시켜 준다.
       a              커서가 있는 곳 다음 칸에 글자를 삽입시켜 준다.
       h              커서를 왼쪽으로 한 칸 옮겨 준다.
       l               커서를 오른쪽으로 한 칸 옮겨 준다.
       j               커서를 한 칸 아래쪽으로 내려 준다.
       k              커서를 한 칸 위로 올려 준다.     
       /찾는말     찾는 말에 커서를 옮겨 준다.
       nG           n번째 줄로 이동시켜 준다.
       1G           1번째 줄로 이동시켜 준다.
       G             끝 줄로 이동시켜 준다.
       “Esc”키    명령어 모드로 나가게 해준다.
       :q            변경하지 않은 문서를 닫고 vi 편집기를 종료한다.
       :q!           변경한 문서를 저장하지 않고 vi을 종료한다.
       :wq          변경한 문서를 저장하고 vi을 종료한다.

       

      [필자 소개]

      현미향님은 현재 하이텔 리눅스 동아리 회원이며, 시스템 관리자로 활동 중이다. PHP 언어에 대단한 관심을 가지고 있으며, 보안에 대한 공부에도 많은 시간을 보내고 있다고 한다.



    [원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=823


    이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

     
    (주) 수퍼유저