본문 바로가기
운영체제 (LNX,WIN)

Fcheck 를 이용한 파일 시스템 감시

by 날으는물고기 2009. 4. 23.

Fcheck 를 이용한 파일 시스템 감시

1.목적
Fcheck 툴을 이용해 파일 시스템의 상태를 체크함으로써 간단히 IDS기능을 구현한다.
(파일 시스템의 무결성을 감시 한다.)

1.실행
크래커서 서버에 침투해서 특정한 파일을 변조 하거나 추가하여 백도어 또는 시스템에 악영향을 주는
파일을 숨겨 놓았다면, 서버 관리자는 상당히 곤욕 스러울 것이다. 시스템을 새로 설치하기엔 부담이
너무 크고 그렇다고 해당 백도어 파일을 쉽게 찾아내는 것은 쉽지 않은 일이다.
(또 이러한 경우가 아니더라도 사용자 혹은 관리자의 실수로 잘못 수정된 파일이 생길 수도 있으며,
이로인해 서비스 중인 시스템에 악영햐을 미칠 수 도 있다.)

이 때를 대비하여 우리는 파일시스템을 체크하는 툴들을 사용하는데 대표적인 예로 Tripwire 라는 툴이 있다.
하지만 이 툴은 설정도 약간€ 복잡하고 사용하기 번거로운 면도 없지 않아 있다.
여기서 소개하려는 Fcheck 라는 툴은 Tripwire 에 비해 설정도 간단하면서도 막강한 기능을 가지고 있다.

Fcheck라는 툴을 이용하여 간단한 파일 시스템 감시 시스템을 구축하여 보자.

Fcheck는 사용자가 설정한 디렉토리, 파일의 정보를 데이터베이스에 저장하고 있다가 정해진 시간마다
파일 시스템을 체크하여 파일 시스템의 무결성(파일 변조)을 체크하는 프로그램이다.
Fcheck 는 아래 링크에서 다운 받을 수 있다.
http://www.geocities.com/fcheck2000/download.html 현재 2.07.59 버전 까지 릴리즈 되어 있다.

해당 파일을 다운로드 한뒤에 압축을 풀고 설정화일의 변경만으로 바로 사용할 수 있다.


[root@vellev root]# tar zxvf FCheck_2.07.59.tar.gz
fcheck/
fcheck/license
fcheck/fcheck
fcheck/fcheck.cfg
fcheck/README
fcheck/install
[root@vellev root]#

설정할 화일은 실행 화일은 fcheck 와 설정화일은 fcheck.cfg 이다.
fcheck.cfg 에서는 무결성을 검사할 디렉토리와 타임존 그리고 무결성 데이터 베이스가 존재할 경로를 설정한다.
설정은 이와 같이 할 수 있다.
vi fcheck.cgf

#fcheck.cfg-
# 무결성을 모니터링할 디렉토리
Directory = /bin/
Directory = /sbin/
Directory = /usr/sbin/
Directory = /usr/bin/

# 무결성 데이터베이스를 저장할 위치
Database = /root/fcheck/data.dbf

#타임존 설정
TimeZone = GMT-9

fcheck 실행화일 에서는 fcheck.cfg 화일의 경로만을 설정해 주면 된다.
화일의 약 212 라인에 유저가 수정할 수 있는 영역이 있다.

#vi fcheck
213 #####################################################################
214 # #
215 # User modifiable variable definitions: #
216 # #
217 #####################################################################
218 # This should be passed through the command line, but hard coding still works
219 $config="/root/fcheck/fcheck.cfg";


위에서 처럼 fcheck.cfg 가 위치할 디렉토리를 설정하면 된다.

설정후 fcheck -ac 를 실행함으로서 무결성 디비를 생성하게 된다.

[root@vellev fcheck]# ./fcheck -ac
[root@vellev fcheck]# ls -al
합계 144
drwxr-xr-x 3 root root 102 2월 22 09:33 .
drwxr-x--- 32 root root 4096 2월 22 09:33 ..
-r--r--r-- 1 root root 13582 3월 13 2001 README
-rw------- 1 root root 10300133 2월 22 09:34 data.dbf
-r-xr-xr-x 1 root root 72543 2월 22 09:28 fcheck
-r--r--r-- 1 root root 4138 2월 22 09:33 fcheck.cfg
-r--r--r-- 1 root root 12873 3월 13 2001 install
-r--r--r-- 1 root root 17982 3월 13 2001 license
drwxr-xr-x 2 root root 6 2월 22 09:32 log
[root@vellev fcheck]#

이제 테스트를 해보도록 하겠다. 현재 감시중인 /usr/ 디렉토리에 화일을 생성하고 검사해 보도록 하겠다.

[root@vellev fcheck]# touch /usr/backboor
[root@vellev fcheck]# ./fcheck -a

PROGRESS: validating integrity of Files
STATUS:
WARNING: [vellev.com] /root/fcheck/data.dbf
[Sizes: 0 - 10300133, Times: Feb 22 09:39 2005 - Feb 22 09:40 2005]

PROGRESS: validating integrity of /usr/
STATUS:
ADDITION: [vellev.com] /usr/backboor
Inode Permissons Size Created On
414515 -rw-r--r-- 0 Feb 22 09:41 2005

PROGRESS: validating integrity of /usr/bin/
STATUS:passed...


PROGRESS: validating integrity of /sbin/
STATUS:passed...


PROGRESS: validating integrity of /usr/sbin/
STATUS:passed...

[root@vellev fcheck]#


/usr/ 디렉토리에 backdoor 라는 파일이 추가된것을 확인 할 수 있다.

이와 같은 방법으로 각 핵심 파일시스템이나 특정 프로그램의 파일시스템의 무결성을 체크할 수 있다.
주의해야 할점은 정산적인 시스템의 변경이나 패키지 추가/변경 작업 후에는 반듯이 무결성 데이터베이스를
업데이트(fcheck -ac) 해주어야 한다.

이를 응용하여 cron 같은 데몬을 통해서 주기적으로 fcheck 를 실행하고 이 내용을 메일로 전송 받거나 외부
전송을 통해서 해당 시스템의 파일시스템 무결성을 체크 할 수 있을 것이다



fcheck는 Tripwire 와 동일한 파일 무결성 체크 툴입니다. 기존 시스템에 대한 정보를 데이터베이스로
가지고 있다가 변화가 생기면 비교를 통해 변화 내용을 관리자에게 알려주는 툴입니다.

tripwire에 비해 자세한 정보를 알려주지는 않지만 사용법이 간결하고, 출력정보가
복잡하지 않아서 편리하게 사용하실 수 있습니다.

http:www.geocities.com/fcheck2000

fcheck 홈 페이지에서 다운로드 후에 설치를 합니다. fcheck 는 펄로 만들어진 스크립트라서
컴파일이나 인스톨 과정은 거치치 않는 대신에 몇 가지 설정 파일을 수정하셔야 합니다.

/usr/local/fcheck 디렉토리에 설치하쟝.
압축을 해제하고 해당 디렉토리로 이동하면 달랑 5개 파일 뿐이지요.


[root@gyn fcheck]# ll
합계 136
-r--r--r-- 1 root root 13582 3월 13 2001 README
-r-xr-xr-x 1 root root 72507 3월 13 2001 fcheck
-r--r--r-- 1 root root 4168 3월 13 2001 fcheck.cfg
-r--r--r-- 1 root root 12873 3월 13 2001 install
-r--r--r-- 1 root root 17982 3월 13 2001 license

먼저 fcheck 파일을 열어서 설정파일의 위치를 수정해줍니다.

###########################################################
#
# User modifiable variable definitions:
#
###########################################################
# This should be passed through the command line, but hard coding still works
$config="/usr/local/admtools/conf/fcheck.cfg";

$config="/usr/local/fcheck/fcheck.cfg";
<-- 설치된 디렉토리로 변경.

#$config="C:/Work/fcheck/fcheck.cfg";

그 후에는 환경설정파일을 수정합니다.


[root@gyn fcheck]# vi fcheck.cfg

Directory = /etc
Directory = /bin
Directory = /boot
Directory = /dev
Directory = /etc
Directory = /home
Directory = /lib
Directory = /root
Directory = /usr/bin
Directory = /usr/local/bin
Directory = /usr/local/sbin
# 위와 같이 파일 무결성을 체크할 디렉토리를 지정해줍니다.
# 중요도가 높은 디렉토를 기술합니다.

#Exclusion = /tmp/dir/afile
#Exclusion = /usr/local/admtools/data/
#Exclusion = /usr/local/admtools/logs/
#Exclusion 은 자주변경되는 파일이나 중요도가 떨어지는 디렉토리처럼 무결성 체크에서
#제외할 파일 또는 디렉토리를 선언합니다.


DataBase = /usr/local/fcheck/data/data.dbf
#DataBase 는 파일정보를 저장할 파일을 지정합니다. 하위 디렉토리는 만들어 줍니다.

TimeZone = GMT-9
#기준 시간을 적용합니다.

#File = /usr/local/admtools/logs/sol.dbf
#file 설정은 주석으로 처리합니다.

나머지 설정들은 디폴트 값으로 두고, data 디렉토리를 만든후에 무결성 체크를 실행 합니다.


[root@gyn fcheck]# mkdir data
[root@gyn fcheck]# ll
합계 140
-r--r--r-- 1 root root 13582 3월 13 2001 README
drwxr-xr-x 2 root root 4096 11월 21 18:15 data
-r-xr-xr-x 1 root root 72500 11월 21 16:35 fcheck
-r--r--r-- 1 root root 4314 11월 21 18:15 fcheck.cfg
-r--r--r-- 1 root root 12873 3월 13 2001 install
-r--r--r-- 1 root root 17982 3월 13 2001 license


[root@gyn fcheck]# ./fcheck -ac


fcheck -ac 명령을 실행하고 나며 data 디렉토리 내의 환경설정 파일에서 지정한 디렉토리의 정보를
저장한 data.dbf 파일이 생성됩니다.


[root@gyn fcheck]# vi data/data.dbf

# - Host gyn.pe.kr
# - OS Linux 2.4.7-2
# - Database Creation Nov 21 18:17 2001
# - Uname Linux gyn.pe.kr 2.4.7-2 #1 Tue Aug 14 05:16:54 EDT 2001 i686 unknown
# - FCheck by Michael A. Gumienny
# - - - - -> BEGIN Directory /etc <- - - - -
228994!33152!0!1001896148!/etc/.pwd.lock!NOCRC
3581137!16877!4096!1001896739!/etc/CORBA!NOCRC
228986!33188!2434!1001896129!/etc/DIR_COLORS!NOCRC
3123321!16877!4096!1001896173!/etc/FreeWnn!NOCRC
229021!33188!81211!1001896200!/etc/Muttrc!NOCRC
277985!16877!4096!1001896939!/etc/X11!NOCRC
229002!33188!2561!1001896188!/etc/a2ps-site.cfg!NOCRC
229006!33188!15223!1001896188!/etc/a2ps.cfg!NOCRC
..중략..

일단 fcheck 를 한 번 실행한 후에 시스템에 변경사항이 생기면 변화를 체크해서 리포트를 출력하게
됩니다.
예제로 /home 에 111 이란 파일을 만든 후에 실행을 시키면 경고메세지를 보냅니다.


[root@gyn home]# touch 111
합계 12
-rw-r--r-- 1 root root 0 11월 21 18:28 111

drwx------ 4 backup backup 4096 11월 13 11:10 backup
drwx------ 6 data data 4096 11월 16 15:39 data
drwxr-xr-x 5 root root 4096 10월 25 11:41 members




[root@gyn fcheck]# ./fcheck -ad

PROGRESS: No individual files to validating
PROGRESS: validating integrity of /home
STATUS:
ADDITION: [gyn.pe.kr] /home/333
Inode Permissons Size Created On
2960394 -rw-r--r-- 0 Nov 21 18:28 2001

PROGRESS: validating integrity of /lib
STATUS:passed...

그런데 한가지 아쉬운 점은 하위 디렉토리의 변경은 정확하게 파악을 하지 못 하는게 좀 부족하다고
느끼는데 간편하게 쓰기엔 좋은 것 같습니다.
실행 세부 옵션은 다음과 같습니다.


-a automatic mode, 설정파일의 모든 디렉토리 검사.
-c 새로운 데이터 베이스 생성.
-d 디렉토리 하위 변경사항 체크.
-f 환경설정 파일 지정.
-i 생성시간 무시
-l 로그 파일에 변경된 내용 추가.
-r
-x
리포트 내용을 파일로 저장.




출처: http://user.oss.or.kr/lecture
728x90

댓글