강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급 : 시스템 보안 관련 유틸리티 및 명령어 : tripwire

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 시스템 보안 관련 유틸리티 및 명령어 : tripwire

 

 

 

 

침입자가 시스템 침입에 성공하면 향후 접속을 용이하게 하기 위해 백도어 프로그램인 트로이 목마나 루트킷 등의 프로그램을 설치하는 경향이 있다.

 

 

 

루트킷에 포함되는 프로그램으로는 ps, ls, netstat, login 등의 시스템 프로그램들이 있는데 원래의 프로그램을 대체하여 관리자가 시스템을 점검해도 문제를 찾을 수 없게 한다.

 

 

 

 

 

예를 들어 ps를 침입자가 바꿔치기를 한 후 시스템관리자가 ps를 실행 시켜도 침입자가 실행시킨 프로그램은 보이지 않는다.

 

 

 

그리고 ls를 바꿔치기를 하여 침입자가 만든 파일은 보이지 않도록 하는 것이다.

 

 

 

이렇게 침입당한 시스템에서 어떤파일이나 디렉토리가 위조, 변조가 되었는지를 찾는 것은 쉽지 않은 일이다.

 

 

 

혹은 파일크기나 수정된시간 생성된 날짜 등을 비교 하여 찾아낸다고 하여도 이러한 정보도 변조가 가능함으로 이를 전적으로 믿을 수는 없다.

 

 

 

따라서 원본파일의 무결성을 체크할 수 있는 프로그램이 필요하며 이를 효율적으로 해주는 도구가 tripwire이다.

 

 

 

 

 

tripwireMD5, SHA, CRC-32등의 다양한 암호화 함수를 제공하고 파일들에 대한 데이터베이스를 만들어 이를 통해 침입자에 의한 파일들의 변조여부를 변별함으로 시스템 관리자들이 유용하게 사용할 수 있다.

 

 

 

tripwire는 먼저 시스템에 존재하는 파일에 대해 데이터베이스를 구축한 후 생성된 데이터베이스와 비교하여 추가, 삭제, 변경된 파일이 있는지 점검하고 문서화 해주는 무결성 도구이다.

 

 

 

 

 

tripwire의 설치

 

 

tripwire1992년 퍼듀 대학의 Eugene Spafford 박사와 Gene kim에 의해 개발되었다.

 

 

 

초기 tripwire1.x는 오픈소스였으나 2.x로 오면서 tripwire 사에서 상용화하여 발표하고 tripwire1.3대의 ASR(Academic Source Release)에 대해 공개로 배포하고 있다 tripwire오픈소스 프로젝트를 추진하여 linux 시스템에서는 오픈소스 2.4대의 tripwire를 다운받아 설치 할 수 있다.

 

 

 

(http://www.tripwire.org)

 

그러나 Solaris, windows NT, HP-UX, IBM AIX 시스템에서2.x를 설치 하려면 상업용버전을 이용해야 한다.

 

 

 

(http://www.tripwire.com)

 

 

 

최근 배포판에서는 기본적으로 이러한 tripwire 패키지를 지원하고 있다.

 

 

 

이패키지는 공개 배포처에서 rpm버전을 다운로드 받을 수 있다.

 

 

 

 

 

먼저 기존에 설치된 패키지를 확인하기위해 다음과 같은 명령을 수행한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# rpm qa | grep tripwire

 

 

 

 

 

 

 

설치된 파일이 없다면 다음과 같이 설치한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# rpm -Uvh tripwire-2.4.2.2-1.el5.i386.rpm

 

 

 

 

 

기본적으로 tripwire/etc/tripwire 디렉토리에 설치된다.

 

 

 

/etc/tripwire 디렉토리에 생성되는 파일의 내용을 보면 다음과 같다.

 

 

 

 

 

twcfg.txt : 설치를 위한 환경 설정 파일

twpol.txt : 정책 파일

twinstall.sh : 설치 스크립트 2.4부터 tripwire-setup-keyfiles 명령어로 변경된다.

 

 

 

 

 

파일 설치가 완료되면 키생성과 정책을 생성한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# tripwire-setup-keyfiles

 

 

 

 

 

tripwire-setup-keyfiles(twinstall.sh)를 실행시키면 tripwiresite keyfile, local keyfile을 생성하기 위해 Passphrase(키생성 문자열)를 입력한다.

 

 

 

site keyfile은 정책 파일과 환경설정하는데 사용되고 local keyfiletripwire 데이터베이스와 레포트파일 초기화 하고 보호하는데 사용되는 암호화의 한 종류이다.

 

 

 

(passphrase는 최소 8자리 이상 문자열이어야 한다. )

 

설정파일, 정책파일을 생성하는 과정을 보면 아래와 같다.

 

 

 

 

 

keyfile 생성하기 위해 passphrase를 요구한다.

 

 

 

 

 

 

 

 

 

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

The Tripwire site and local passphrases are used to sign a variety of

files, such as the configuration, policy, and database files.

 

Passphrases should be at least 8 characters in length and contain both

letters and numbers.

 

See the Tripwire manual for more information.

 

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

Creating key files...

 

(When selecting a passphrase, keep in mind that good passphrases typically

have upper and lower case letters, digits and punctuation marks, and are

at least 8 characters in length.)

 

Enter the site keyfile passphrase:

 

 

 

 

 

 

site keyfile 생성하기 위해 입력한 passphrase를 확인을 위해 다시한번 요구한다.

 

 

 

 

 

 

 

 

 

Enter the site keyfile passphrase:

Verify the site keyfile passphrase:

Generating key (this may take several minutes)...Key generation complete.

 

 

 

 

 

 

 

keyfile 생성하기 위해 passphrase를 입력하고 확인을 위해 다시한번 입력한다.

 

 

 

 

 

 

 

 

 

(When selecting a passphrase, keep in mind that good passphrases typically

have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.)

 

Enter the local keyfile passphrase:

Verify the local keyfile passphrase:

Generating key (this may take several minutes)...Key generation complete

 

 

 

 

 

 

 

site passphrase를 이용하여 설정파일을 완성한다.

 

 

 

 

 

 

 

 

 

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

Signing configuration file...

Please enter your site passphrase:

Wrote configuration file: /etc/tripwire/tw.cfg

 

A clear-text version of the Tripwire configuration file:

/etc/tripwire/twcfg.txt

has been preserved for your inspection. It is recommended that you

move this file to a secure location and/or encrypt it in place (using a

tool such as GPG, for example) after you have examined it.

 

 

 

 

 

 

site passphrase를 이용하여 정책파일을 완성한다.

 

 

 

 

정책파일이 완성되면 다음 메세지와 함께 끝나게 된다.

 

 

 

 

 

 

 

 

 

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

Signing policy file...

Please enter your site passphrase:

Wrote policy file: /etc/tripwire/tw.pol

 

A clear-text version of the Tripwire policy file:

/etc/tripwire/twpol.txt

has been preserved for your inspection. This implements a minimal

policy, intended only to test essential Tripwire functionality. You

should edit the policy file to describe your system, and then use

twadmin to generate a new signed copy of the Tripwire policy.

 

Once you have a satisfactory Tripwire policy file, you should move the

clear-text version to a secure location and/or encrypt it in place

(using a tool such as GPG, for example).

 

Now run "tripwire --init" to enter Database Initialization Mode. This

reads the policy file, generates a database based on its contents, and

then cryptographically signs the resulting database. Options can be

entered on the command line to specify which policy, configuration, and

key files are used to create the database. The filename for the

database can be specified as well. If no options are specified, the

default values from the current configuration file are used.

 

 

 

 

 

 

설정 파일과 정책파일의 생성이 완료 되고 나면 아래의 명령을 실행하여 tripwire 데이터베이스를 초기화 한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# /usr/sbin/tripwire --init

 

 

 

 

 

이때 tripwirelocal passphrase를 요구한다.

 

 

 

 

 

 

 

 

 

Please enter your local passphrase:

Parsing policy file: /etc/tripwire/tw.pol

 

 

 

 

 

tripwire는 데이터베이스를 생성하고 그 결과를 출력한다.

 

 

 

 

 

 

 

 

 

Please enter your local passphrase:

Parsing policy file: /etc/tripwire/tw.pol

....

Wrote database file: /var/lib/tripwire/SULinux.twd

The database was successfully generated.

 

 

 

 

 

설정과정이 끝나고 나면 twcfg.txt.twpol.txt 파일을 삭제하거나 안전한 장소로 이동하여 보관한다.

 

 

 

 

 

tripwire 사용하기

 

무결성 검사하기

생성한 데이터베이스를 기준으로 파일 무결성을 검사하기 위해 다음과 같은 명령을 입력한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# /usr/sbin/tripwire --check

Parsing policy file: /etc/tripwire/tw.pol

*** Processing Unix File System ***

Performing integrity check...

 

 

 

 

 

무결성 검사의 결과는 /var/lib/tripwire/report 디렉토리에 저장된다.

 

 

 

 

 

데이터베이스 갱신

무결성 검사 후 발견되는 변경파일 중 침입자에 의한 것이 아니라 정상적인 변화로 판단되면 기존에 만든 데이터베이스를 갱신하여야 한다.

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# /usr/sbin/tripwire --update

[sulinux@sulinux ~]# /usr/sbin/tripwire m u

 

 

 

 

 

위와 같은 방법으로 데이터베이스를 업데이트 할 수 있다.

 

 

 

/usr/sbin/tripwire --update 명령을 이용하면 데이터베이스의 재초기화 없이도 데이터베이스를 갱신 할 수 있다.

 

 

 

 

 

정책파일 갱신

 

tripwire의 정책 파일을 갱신하기 위해서는 다음과 같은 명령을 이용한다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# /usr/sbin/tripwire --update-policy /etc/tripwire/policyfile.txt

[sulinux@sulinux ~]# /usr/sbin/tripwire m p /etc/tripwire/policyfile.txt

 

 

 

 

 

tripwire --update-policy는 이전 정책과 비교하여 새로운 정책에 대한 정보를 업데이트하는 것이므로 데이터베이스를 초기화하지 않고 추가 할 수 있다.

 

 

 

 

 

 

 

 

 

[sulinux@sulinux ~]# /usr/sbin/twadmin --creat-polfile /etc/tripwire/newpol.txt

 

 

 

 

 

새로운 정책 파일인 newpol.txt라는 정책 파일을 말들고자 할 경우 위와 같이 실행하면 생성이 된다.

 

 

 

twadmin --creat-polfile은 새로운 정책 파일을 생성하는 명령으로, 이를 위해서 데이터베이스의 초기화가 필요하다.

 

 

 

 

 

환경 설정 및 정책 설정 방법

 

 

앞서 기술했던 것과 같이 설치에 따른 기본 설정만으로도 충분히 무결성을 검사할 수 있다.

 

 

 

하지만 환경 설정을 통하여 좀더 세부적으로 변경하는 것도 가능하다.

 

 

 

또한 정책 파일을 별도로 생성하여 사용자의 환경에 맞는 형태로 설정 할 수 있다.

 

 

 

 

 

환경 설정 파일 구성

 

환경 설정 파일 (twcfg.txt)tripwire 유틸리티와 설정 파일들이 어디에 설치되어 있는지 등에 대한 정보를 저장하고 있다, 내용을 살펴보면 다음과 같다.

 

 

 

 

 

 

 

 

 

ROOT =/usr/sbin

POLFILE =/etc/tripwire/tw.pol

DBFILE =/var/lib/tripwire/$(HOSTNAME).twd

REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr

SITEKEYFILE =/etc/tripwire/site.key

LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key

EDITOR =/bin/vi

LATEPROMPTING =false

LOOSEDIRECTORYCHECKING =false

MAILNOVIOLATIONS =true

EMAILREPORTLEVEL =3

REPORTLEVEL =3

MAILMETHOD =SENDMAIL

SYSLOGREPORTING =false

MAILPROGRAM =/usr/sbin/sendmail -oi -t

 

 

 

 

 

[6-1]tripwire의 환경 설정 파일의 변수와 변수들의 의미를 정리한 것이다.

 

 

 

 

 

[] tripwire 설정 파일의 구성요소

 

 

 

변수명

설명

POLFILE

정책 파일의 위치 지정

기본 설정: /etc/tripwire/tw.pol

DBFILE

데이터베이스 파일의 위치지정

기본 설정 : /etc/tripwire/$(HOSTNAME).twd

REPORTFILE

실행후 생성된 결과 파일 위치 지정

기본 설정 : /var/lib/report/$(HOSTNAME)-$(DATE).twr

STIEKEYFILE

site keyfile 위치 지정

기본 설정 : /etc/tripwire/site.key

LOCALKEYFILE

local keyfile 위치 지정

기본 설정 : /etc/tripwire/$(HOSTNAME-local.key

EDITOR

사용하고자하는 편집기의 위치

기본 설정 : /bin/vi

LATEPROMPTING

tripwire가 마지막에 패스워드를 요구하도록설정

기본설정 : fales

SYSLOGREPORTING

SYSLOGREPORTINGture로 설정 되면 data base intialization, integrity checks, data base updates, and policy file 등의 updatesyslog에 알림

기본 설정 : true

LOOSEDIRECTORYCHECKING

디렉토리 변경사항이 있는지 출력해야 하는 것을 나타냄. 설정되어 있지 않으며 변화된 파일뿐아니라. 그파일이 있는 디렉토리도 결과에 출력되고, 설정되면 파일의 변화만 출력함

기본 설정 : false

REPORITLEVEL

tripwire preint-report 명령으로 report를 출력할 때의 레벨로 0~4까지 레포트레벨이 있음

기본 설정 3

MAILNOVIOLATIONS

무결성검사시 아무런 변화가 없을때에도 이메일 경고를 할지 나타냄

기본 설정 : ture

EMAILREPORTLEVEL

email report level0~4

기본설정 : 3

MAILMETHOD

이메일 경고를 위해 사용할 protocol 명시

기본설정 : SENDMAIL

MAILPRORAM

특정 메일 프로그램의 위치 지정

기본설정 : /usr/sbin/sendmail oi -t

 

 

 

 

 

정책 파일의 구성

 

 

tripwire 정책 파일(twpol.txt)tripwire가 감시할 대상(파일, 디렉토리)과 그위치를 명시한다.

 

 

 

관리하는 시스템에 맞게 정책 파일(twpol.txt)을 수정할 수 있는데, 이는 불필요하게 들어 있는 파일을 제거하고 필요한 파일을 추가함으로써 tripwire에서 쓸모 없는 결과물이 나오는 경우를 상당히 줄일 수 있도록 한다.

 

 

 

또한 초기 설정 명령을 실행 시킨 후 정책 파일을 수정하면 데이터베이스 파일을 초기화하기 전에 변경된 정책을 재실행 해야하는 번거로움이 있으므로 tripwire를 설치하기전에 시스템에 맞게 설정하는 것이 좋다.

 

 

 

 

 

[]tripwire의 정책 파일의 변수와 변수들의 의미를 정리한 것이다.

 

 

 

 

 

[] tripwire 정책 파일의 구성요소

 

 

정책 파일 구성요소

설명

Rules

정책 파일의 기본 구성요소로 무결성 검사시 시스템의 객체에 대해 모니터 할 Properity를 명시해 주는것

Stop points

무결성 검사시 스캔하지 않을 시스템의 객체 명시

Attributs

이메일을 보내거나 Recursion을 조정하는 Rules

Driective

하나의 정책 파일을 네트워크 서버에서 사용할 경우

Variable

관리자가 편리하게 정보를 바꾸도록 설정

 

각 구성 요소의 형식에 대해 알아보도록 하자.

 

 

 

rulesrules의 기본 형식은 다음과 같다.

 

 

 

 

 

 

 

 

 

Object name -> property mask

 

 

 

 

 

object name은 스캔할 디렉토리나 파일 경로이고 property mask는 실행혹은 실행하지 않을 object property에 대해 설정하는 부분이다.

 

 

 

(여기서 “->” object nameproperty mask를 구분해주는 기호이며 “;”rule의 끝을 나타낸다.)

 

 

???? /etc 디렉토리 전부에 대해 +mylove라는 property mask로 스캔하려면 다음과 같이 설정한다.

 

 

 

 

 

 

 

 

/etc -> +mylove;

 

 

 

 

여기서 +mylove라는 property mask는 관리자가 정의한 것으로, 이렇게 관리자가 정의해서 사용할 수도 있고 이미 정해져 있는 변수를 이용할 수도 있다.

 

 

 

이미 정해져 있는 변수에 대해서는 변수 항목을 참고하라.

 

???? /etc 디렉토리에 대해서는 관리자가 정의한 mask1로 스캔하고 /etc/passwd에 대해서만 mask2를 써서 스캔하도록 설정할 때 다음과 설정한다.

 

 

 

 

 

 

 

/etc -> $(mask1);

/etc/passwd ->$(mask);

 

 

 

 

 

[6-3]property mask의 내용을 정리한 것이다.

 

 

 

 

 

[] property mask

property

설명

-

표시된 특성을 무시함

+

표시된 특성을 사용함

p

파일 퍼미션

i

아이노드 번호

n

링크의 수(아이노드 참조개수)

u

소유자의 UID

g

소유자의 GID

t

파일 타입

s

파일 크기

d

파일과 연관된 아이노드가 저장된 디스크 장치 번호

r

아이노드가 지시하는 장치 번호 또는 장치에 대해서만 유효

b

할당된 블럭의 수

m

수정시간의 타임스템프

c

아이노드 생성 및 수정에 대한 타임스탬프

I

파일이 늘어나야 하는 파일에 대한 지속적 증가에 대한 속성

만약에 파일이 마지막 기록된 크기보다 작으면 해당 속성에 대한 위반이된다.

 

 

 

이것은 log파일의 무결성을 검사하는 데 유용하다.

 

 

 

 

a

액세스 시간에 대한 타임스탬프

+a propertyhash propertis(+CMSH) 와 충돌한다.

 

 

 

 

해시를 계산하기 위해 파일을 읽어드려야하는데 이때 엑세스 타임이 변경된다.

 

 

 

 

C

CRC-32, POSIX,1003.2에 따르는 32bit cyclic redundany check. 상대적으로 높은 성능을 내지만 그와 반비례하여 보안 수준은 상대적으로 낮아진다.

 

 

 

 

M

MD5, RSA Data security ,inc에서 개발한 message digest 알고리즘을 사용하여 상대적으로 높은 보안 수준의 hash를 선택한다.

 

 

 

 

S

SHA, SHS,/SHA 알고리즘을 사용하여 상대적으로 높은 보안 수준의 hash를 선택한다.

 

 

 

 

H

HAVAL 128bit signature 알고리즘을 사용하여 상대적으로 높은 보안 수준의 hash를 선택한다.

 

 

 

 

 

- stop pointsstop points는 무결성 검사를 하는 동안 스캔하지 않을 object에 대해 설정하는 부분이다.

 

 

 

기본형식은 다음과 같다.

 

 

 

 

 

 

 

 

 

! object name

 

 

 

 

 

예를 들어. 홈디렉토리만 제외한 모든 파일 시스템을 스캔한다고 할 때 다음과 같은 설정을 하면 된다.

 

 

 

 

 

 

 

 

 

/ ->$(Readonly) -ar;

!/home

 

 

 

 

 

- Rule AttributesRule Attributes는 정책 파일 전체로 무결성을 검사하지 않고 몇 개의 rulename에 대해서만 점검을 하도록 하거나, 정책파일에 변화가 있는 부분에 대해 관리자가 email로 받을 수 있도록하는 등의 설정을 하는 부분이다.

 

 

 

 

 

[]Rule Attributes의 내용을 정리한 것이다.

 

 

 

 

 

[] Rule Attributes

Attribute

설명

rulename

rulename 과 규칙을 연결한다.

 

 

 

 

기본설정은 각 규칙이 적용되는 object name의 마지막 element이다.

 

 

 

 

emailto

정책위반에 대한 경고를 위해 보내어질 이메일 주소를 지정한다.

 

 

 

 

기본설정 : none

severtiy

정책에 대한 적용의 엄격성을 수치적인 level로 표현하다.

 

 

 

 

기본설정 : 0

설정 값의 범위 : 0 ~ 1000000

recurse

디렉토리 스캔을 위한 재귀적인 스캐닝을 제어한다

-1 ture, 0false를 의미하며 0이상의 수치적인 값은 유효한 값이된다.

 

 

 

 

기본 설정 : true

 

 

- Directives하나의 폴리시 파일을 기반으로 다수의 서버에서 tripwire를 사용하고자 할 때 사용하는 항목이다.

 

 

 

 

 

- Variables정책 파일에서는 두 가지 변수를 사용할 수 있는데 전역 변수(Global variables)는 정책 파일 전체에 대해서 사용할 수 있고 지역 변수(Local variables)는 정해진 섹션에만 사용이 가능하다.

 

 

 

 

 

형식은 아래와 같다.

 

 

 

 

 

 

 

 

 

변수 = ;

 

 

 

 

 

[6-5]Variables의 내용을 정리한 것이다.

 

 

 

 

 

[] Variables

variable

설명

ReadOnly

해당 변수는 전역 설정이 가능하지만 read-only로 적용된 파일들을 점검하는데 좋다.

 

 

 

 

Expands to : +pinugsmtdbCM-raclSH

Dynamic

해당 변수는 변경이 잦은 사용자 디렉토리나 파일들을 점검하는데 좋다

Expands to : +pinugtd-rsacmblCMSH

Growing

해당변수는 로그파일처럼 늘어나지만 줄지 않는 파일을 점검하는데 좋다.

 

 

 

 

Expands to : +pnugtdl-rsacmbCMSH

IgnoreAll

해당 변수는 파일이 있는지 없는지는 점검하지만 다른 특성들에 대해서는 점검하지 않는다.

 

 

 

 

Expands to : -pinusgamctdrblCMSH

IgnoreNone*

해당 변수는 모든 특성들을 점검하도록 한다.

 

 

 

 

그리고 사용자가 지정한 property mask대한 starting point를 제공한다.

 

 

 

 

Expands to : +pinusgamctdrbCMSH-I

Device

해당 변수는 tripwire가 접근하지 말아야할 device나 파일에 들 대한 변수 이다.

 

 

 

 

Expands to : +pugsdr-intlbamcCMSH

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  71 명