보안프로그램 tripwire을 돌려보자

현미향 climbk2@hitel.net

 

     

    목차

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

    테스트 환경

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

    Tripwire 시스템 요구사항

    최소 요구사항
    *알짜  5.2(커널 2.0.36)

    권장 사항
    *알짜  6.0(커널 2.2.12이상)
    * 10M의 여유공간

    직접 테스트는 하지 않았지만 데비안, 수세등에서도 이상없이 돌아간다고 설명서에 나와있다.

     

1.Tripwire은 무엇인가?

    Tripwire은 자신의 linux시스템을 외부의 크래커 공격과 내부의 악의적인 사용자의 공격으로부터 자신의 linux시스템을 지켜내는 마지노선과 같은 역할을 하는 프로그램이다. 자신의 시스템이 방화벽과 다른 보안수단으로 보안을 강화하고 있다고 하더라도 어느 순간 크래커나 내부사용자에 의해 시스템이 침투되어 질 수 있다. 침투한 크래커나 악의적인 내부사용자들은 다음을 위해 백도어를 만들어 놓거나, 시스템 파일을 변경해 놓거나, 아니면 지난번 야후나 아마존등 유명한 사이트을 공격할 때 사용되어진 DoS attack 프로그램등과 같은 악의적인 프로그램을 설치하여 크래커의 중간공격기지 역할을 하게 할 수도 있다.

    이와 같은 침투로 인한 문제로부터 시스템을 보호하기 위해서 자신의 시스템의 전체적인 파일들이 자신이 처음 설치한 그대로 유지되고 있는가를 확인하기 위한 프로그램이 필요한데, 이러한 작업을 Tripwire가 해주게 된다. 즉 tripwire는 자신의 시스템 전체에 대해 디지털방식으로 ‘스냅사진’을 찍어 보관해두고, tripwire을 다시 실행시킬 때마다 전에 찍어둔 원본 ‘스냅사진’과 현재의 파일시스템을 비교함으로서 자신의 파일시스템의 변경사항을 알아낼 수 있게 해준다. 시스템의 변경사항이 시스템 관리자에 의한 것이라면 원본 ‘스냅사진’-database file-을 업데이트 해주면 되며, 시스템 관리자 자신에 의한 것이 아닌 불법적인 변경이라면 자신의 시스템이 크래커나 악의적인 내부사용자에 의해 변경되었다는 것을 알게 된다.

    *Tripwire 프로그램 구하기*

     http://www.tripwiresecurity.com
    현재 최신버전- Tripwire_221_for_Linux_x86.tar.gz

    상업적인 사이트에서의 사용이 아닌 개인의 사용에 한해 무료이다.

     

2.Tripwire의 설치

    [참고]  ‘#’는 현재 root상태임을 나타낸다. 트립와이어는 루트로 설치한다.

    *  Tripwire 압축해제할 디렉토리 만들기(현재 디렉토리는 /root/install)
       [root@www install]# mkdir tripwire

    *  Tripwire 프로그램을 방금 만든 tripwire/ 디렉토리로 이동시킨다.
       [root@www install]# mv Tripwire_221_for_Linux_x86.tar.gz  tripwire/

    *  Tripwire 프로그램이 있는 디렉토리로 이동
       [root@www install]# cd  /root/install/tripwire

    *  Tripwire 프로그램 압축해제
       [root@www tripwire]# tar xvzf Tripwire_221_for_Linux_x86.tar.gz

    *  Tripwire 프로그램 설치

    [주의] Tripwire는 디폴트 디렉토리로 /usr/TSS을 사용한다(미리 만들어줄 필요는 없다).
              따라서 실력있는 크래커들은 TripWire의 존재여부를 위 디렉토리에서 확인해 볼
              것이다. 이를 피하기 위해 디렉토리를 변경해주는 것이 안전을 위해 필요하다.
              또한 에디터로 vi을 사용하지 않는 사람들은 자신이 사용하는 에디터로 변경해 주어야
              한다. 방법은 “5.알아두어야 할 점” 참조 바란다.
              설치 전 반드시 “5.알아두어야 할 점” 참고.

    [주의] 아래 설치방법은 디폴트 디렉토리 /usr/TSS을 그대로 사용하며, 에디터로 Vi을 사용
              한다. Vi사용법은 맨 마지막에 부록으로 있다.
     

     [root@www tripwire]# ./install.sh

      ..중략
      Redhat Linux 5.2
      Redhat Linux 6.0
      SGI Irix 6.5
      Compaq Tru64 Unix 4.0

 

    Continue with installation? [y/n]  <= y 라고 쳐준 후 [enter]누른다.

    *  라이센스 동의서가 보여진다.[enter]을 누르면 된다.

       Press ENTER to view the License Agreement.

       [스페이스 바]을 누르면 밑으로 내려간다.

    *  라이센스 동의서에 동의한다.

       Please type “accept” to indicate your acceptance of this license agreement.
       [do not accept]
       <= accept라고 쳐준 후 [enter]

    *  tripwire가 밑의 디렉토리에 설치된다.
     

    This program will copy Tripwire files to the following directories:

                TWROOT: /usr/TSS
                   TWBIN: /usr/TSS/bin
                 TWMAN: /usr/TSS/man
             TWPOLICY: /usr/TSS/policy
            TWREPORT: /usr/TSS/report
                    TWDB: /usr/TSS/db
       TWSITEKEYDIR: /usr/TSS/key
    TWLOCALKEYDIR: /usr/TSS/key

        CLOBBER is false.

 

     Continue with installation? [y/n] <= y 라고 쳐준 후 [enter]누른다.

    *  site keyfile 암호 생성

       Enter the site keyfile passphrase:
       Verify the site keyfile passphrase:
       최소 8자에서 최대 1023자 크기로 숫자와 대소문자로 조합한다.
       (와일드카드 문자는 사용금지.)

    *  local keyfile 암호 생성

       Enter the local keyfile passphrase:
       Verify the local keyfile passphrase:
       최소 8자에서 최대 1023자 크기로 숫자와 대소문자로 조합해서 만든다. 위 site keyfile 암호
       와  달라야 한다. site, local keyfile은 절대 복구가 불가능하므로 반드시 외워두도록 한다.

    *  Tripwire 설정파일 만든다.

       Generating Tripwire configuration file...

       Creating signed configuration file...
       Please enter your site passphrase:  <=위에서 만든 site 암호를 넣어준다.

       A clear-text version of the Tripwire configuration file
       /usr/TSS/bin/twcfg.txt  <=Tripwire설정파일이 만들어진다.

    *  Tripwire policy파일을 만든다.

    [참고]  policy파일은 시스템에서 어떤 파일/디렉토리를 감시할 것인가와 어느 정도의 강도로
               그 변경을 보고 할 것인가를 지정한다.

       Creating signed policy file...
       Please enter your site passphrase:  <=위에서 만든 site암호를 넣어준다.

       A clear-text version of the Tripwire policy file
       /usr/TSS/policy/twpol.txt <=Tripwire policy파일이 만들어진다.

    *  Tripwire 설치완료

       ..생략..
       The installation succeeded.
       ..생략..

       Tripwire설치가 성공하면 tripwire압축을 해제한 디렉토리를 삭제한다.

       [root@www install]# rm  -rf  /root/install/tripwire

    *  Tripwire 설치장소로 이동

       [root@www tripwire]# cd  /usr/TSS

    *  Tripwire 설정 변경

       [root@www TSS]#cd  bin/    ; ls -al
       [root@www bin]#vi  twcfg.txt

       이미 install.cfg 을 변경해서 자신이 원하는 설치 디렉토리와 에디터를 사용함으로 twcfg.txt
       파일을 변경할 필요는 그리 크지 않다. 변경한 사람은 아래방법대로 설정파일 인식시킬 수
       있다.

    *  변경된 Tripwire 설정 파일 인식

       [root@www bin]# ./twadmin  --create-cfgfile  --site-keyfile../key/site.key twcfg.txt

       Please enter your site passphrase:  <=site 암호를 넣어 준다.

       tripwire 설정파일이 /usr/TSS/bin/tw.cfg 로 암호화되어서 저장이 된다.
       암호화되어 있지 않는 /usr/TSS/bin/twcfg.txt 파일을 삭제한다.

       [root@www bin]# rm -f  twcfg.txt

    *  Tripwire policy 파일을 자신의 시스템에 맞게 변경(중요함)

    [주의]  policy파일은 자신 시스템 중 어느 파일/디렉토리를 감시할 것인가를 설정하는
               파일이므로 주의깊게 설정해야 한다.

       [root@www bin]#cd ../policy/    ; ls -al
       policy 파일이 있는 policy/디렉토리로 이동
       [root@www policy]# vi  twpol.txt

    [주의]  이 twpol.txt 파일을 자신의 시스템에 맞게 수정해주지 않으면 트립와이어 실행 도중
               많은 에러메시지를 만나게 된다.

       i.e)..생략..
        ### Warning: File system error.
        ### Filename: /bin/bsh/bin/ash/bin/csh
        ### \xb5\xf0\xb7\xba\xc5\xe4\xb8\xae\xb0\xa1\xbe틈爛求\xd9

         ### Continuing...
         ..생략..

    11~21번줄을 반드시 읽어서 severity가 어떻게 시스템에 적용되는지 확인 바란다.

    65번줄부터의 setuid/setgid 파일 중 자신의 시스템에 맞게 추가하거나 삭제한다.

      자신의 시스템파일중 setuid 된 파일 찾기와 파일로 저장하기
      # find / -perm -4000 >/root/doc/setuid.txt

      자신의 시스템파일중 setgid된 파일 찾기와 파일로 저장하기
      # find / -perm -2000 >/root/doc/setgid.txt

      [tip]실행프로그램 전체경로 파악하기
      # which  vi  <-which 명령어는 찾고자 하는 명령어의 전체 경로를 표시해준다.
        /bin/vi

    121번줄의 rulename = “Temporary directories”는 자신의 시스템의 /temp디렉토리를
    의미한다. 자신의 시스템에 맞게 추가/삭제하기 바란다.

    129번줄부터의 rulename=”User binaries”디렉토리 중 자신의 시스템의 실행파일이 존재하는 디렉토리를 추가하거나 삭제한다.

      # echo  $path   <-자신의 실행경로 파악하기
      /usr/sbin /sbin /usr/local/bin  /usr/bin  /usr/X11R6/bin

    138,148,163,172,188,203,216,261,272,307,342줄부터 시작하는 각각의 rulename 에 맞게 자신의 시스템에 어울리게 삭제/추가해주기 바란다.
    (지면관계상 자세한 예제는 생략함을 이해 바란다.)

    *  변경한 policy파일을 인식 시켜준다.

       [root@www policy]# cd   ../bin
       [root@www bin]#./twadmin   --create-polfile   ../policy/twpol.txt
        Please enter your site passphrase:  <=site 암호를 넣어준다.

       [root@www bin]# rm -f   ../policy/twpol.txt
       크래커가 볼 수 있음으로 twpol.txt 파일은 삭제한다.
       반드시 사본은 보관 바란다.

    *  Tripwire 데이타베이스를 초기화하기

       [root@www bin]#./tripwire --init

       Please enter your local passphrase: <=local암호를 넣어준다.

       Parsing policy file: /usr/TSS/policy/tw.pol
       Generating the database...
    *** Processing Unix File System ***
    Wrote database file: /usr/TSS/db/ns.twd
    The database was successfully generated. <=성공적으로 데이타베이스가 생성되었다.

    데이타베이스(스냅사진)을 초기화하는데 위처럼 에러메시지가 없이 성공되어야 한다. 에러메시지를 만나게 되면 자신의 policy 파일(twpol.txt) 수정이 잘못되었음으로 다시 수정해야만 한다. 수정방법은 먼저 twpol.txt파일을 에러메시지에 맞게 삭제/수정한 후 다음 명령어로 새로운 policy설정이 인식되도록 해준다.

       [root@www bin]# ./tripwire  -m  p  --secure-mode low
       ../policy/twpol.txt

 

3.Tripwire의 사용법(간단하게)

    *  ./tripwire  --help    <=사용법을 보여준다.

    *  ./tripwire  -m c      <=시스템 변경을 검사한다. 시스템 체크 후 report/ 디렉토리로
                                       *.twr파일로 결과가 저장된다.

    *  ./tripwire  -m u      <=위의 시스템 체크 후 데이타베이스(스냅사진)을 변경한다.
                                       단, 크래커에 의한 변경이 아닌 자신에 의한 시스템 변경일 경우에만
                                       업데이트를 한다.

          ./tripwire  -m  -u  -a  -r  ../report/호스트-년월일-시분초.twr
    [예]./tripwire -m -u -a -r ../report/localhost-20000223-023354.twr

    *  ./tripwire  -m p      <=policy파일을 업데이트한다.
        i.e) # ./tripwire -m p ../policy/twpol.txt

    *  ./tripwire  -m t        <=테스트 이메일을 보낸다.
        i.e) # ./tripwire  -m t --email  root@localhost

    그 외의 자세한 사용법을 알고 싶은 사람은 사용자 설명서를 읽기 바란다. tripwire를 다운로드시 *.pdf로 된 사용자 설명서도 함께 다운 받기 바란다.

 

4.Tripwire 실제사용 예

    *RealPlayerG2을 시스템에 새로 설치한 경우
     

    ...생략...

     ------------------------------------------------------

    Rule Name: Libraries (/usr/lib)
    Severity Level: 66

    ------------------------------------------------------

    Added:
    “/usr/lib/RealPlayerG2”
    “/usr/lib/RealPlayerG2/realplay”
    “/usr/lib/RealPlayerG2/Codecs”
    “/usr/lib/RealPlayerG2/Codecs/14_4.so.6.0”
    생략..

    *Setuid/Setgid파일이 변경된 경우

    ..생략..
    ------------------------------------------------------

    Rule Name: setuid/setgid (/bin/su)
    Severity Level: 100
    ------------------------------------------------------

    Modified:
    “/bin/su”
    생략..

 

5. 알아두어야 할 점

    *  Tripwire 설치 디렉토리를 자신이 원하는 디렉토리로 변경하기

       [root@www tripwire]# pwd    <-현재 디렉토리 확인하기
       /root/install/tripwire  <-tripwire 압축해제한 디렉토리

       [root@www tripwire]# vi  install.cfg  <-install 설정 변경

       TWROOT=”/usr/src/linux/tripwire/do/not/crack/tripwire”

    24번줄을 변경해서 자신의 tripwire가 설치될 디렉토리 지정.
    tripwire가 존재하지 않는 상위 디렉토리까지 만들어줌으로 미리 디렉토리들을 만들어 놓을 필요는 없다.

    *  vi 에디터가 아닌 자신이 사용하는 에디터로 변경 \ 하기

       TWEDITOR=”/bin/vi”  <-에디터 변경

    48번줄을 변경해서 자신이 사용하기 원하는 에디터의 전체 경로를 적어주기 바란다.

    [주의]  install.cfg을 vi 에디터로 변경한 경우 저장하기 위해  :wq! 을 사용할 것.

    [tip]프로그램의 실행경로 알아내기
           # which  vi  <-which 명령어는 찾고자 하는 프로그램의 전체 경로를 보여준다.

     *  tw.pol, nc.twd, twpol.txt 의 사본을 반드시 보관해 두라. 자신의 시스템이 자주 업데이트
        되지 않고 현재의 상태를 유지해 둔다면 보관해둔 것 사용해서 초기에 자신이 tripwire을
        설치한 그 상태가 지속되는지를 확인해 볼 수가 있을 것이다. 이 상태는 실력있는 크래커가
        tripwire마저 변경했을 경우를 대비하는 것이다.

     *  tripwire가 설치된 디렉토리는 root만이 접근가능하도록 해놓는다.

        chmod  700  /usr/src/linux/tripwire/do/not/crack/tripwire

     *  모르는 부분은 tripwire 다운로드시 같이 다운로드한 사용설명서를 읽어 보기 바란다.
         쉽게 설명이  되어있다.
     

    부록:vi편집기 사용법

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




▲ top

home으로...