[보안] 무결성 체크 프로그램 Fcheck

간단하면서도 막강한 파일 무결성 체크 프로그램 Fcheck

        

리눅스에는 기본적으로 약 30,400 여개가 넘는 파일들이 설치된다고 한다.

리눅스 관리자는 이 많은 파일들에 대해 일일이 각 파일들의 무결성을 체크할 수 없는데,

이를 틈타 악의적인 목적을 가지고 시스템에 중요한 파일을 변조하거나 관리자의 허락

없이 임의의 파일을 설치할 수 있다. 이를 체크하고 감시하기 위해 “파일 무결성 체크 프

로그램” 의 필요성이 제기되는데, 여기에서는 간단한 설정만으로 강력한 기능을 제공하

는 Fcheck 라는 파일 무결성 체크 프로그램을 소개하고자 한다.

일반적으로 파일 무결성 체크 프로그램으로는 Tripwire 가 알려져 있지만, 많은 기능을

제공하는 만큼 설정이 너무 복잡하여 리눅스 초보자나 간단한 설정으로 관리하고자 하

는 리눅스 관리자에게는 Fcheck 라는 프로그램을 권장한다.

Fcheck 는 간단한 설정으로 특정 디렉토리나 파일 또는 전체 파일 시스템에 대해 파일

의 추가, 변경, 삭제여부를 체크하여 그 결과를 알려준다.

  다운로드 및 설치

먼저 Fcheck 홈페이지인 http://www.geocities.com/fcheck2000/ 에 접속하여

최신 버전의 Fcheck 를 다운로드 한다. 필자가 글을 쓸 때 당시의 최신버전은 2.07.59 이

며 위 사이트에서 FCheck_2.07.59.tar.gz 파일을 다운로드후 압축을 해제한다.

참고로 이 프로그램은 프리웨어로 자유롭게 이용이 가능하다.

[root@www local]# tar zxvfp FCheck_2.07.59.tar.gz

fcheck/

fcheck/license

fcheck/fcheck

fcheck/fcheck.cfg

fcheck/README

fcheck/install

.  

/usr/local 디렉토리에서 압축을 풀면 fcheck 라는 디렉토리가 생기면서 관련 파일들이

설치된다. 생성된 fcheck 디렉토리로 이동 후 fcheck 라는 실행파일과 fcheck..cfg 라는

설정파일 이렇게 두개 파일만 수정해 주면 된다.

Fcheck 파일 수정하기.

위 파일을 열면

$config=”/usr/local/admtools/conf/fcheck.cfg”;

라는 부분이 있는데, 이는 fcheck 의 설정파일인 fcheck.cfg 파일의 위치를 지정해 주는

것으로 현재의 디렉토리를 적절히 지정해 주면 된다.

필자의 경우처럼 /usr/local/fcheck 디렉토리에 설치하였다면

$config=”/usr/local/fcheck/fcheck.cfg”; 처럼 변경한다.

Fcheck 파일에 대한 설정은 이곳으로 끝이다.

Fcheck.cfg 파일 수정하기.

이제 Fcheck.cfg 의 설정을 내 환경에 맞도록 변경해 보자.

# Directory

이 부분은 파일의 무결성을 체크하고자 하는 디렉토리를 정의한다.

주로 시스템 관련 파일이 존재하면서 파일의 속성이 자주 변경되지 않는 디렉토리를 지

정한다. 필자의 경우에는

Directory=/etc/

Directory=/bin/

Directory=/usr/bin/

Directory=/sbin/

Directory=/usr/sbin/

Directory=/lib/

와 같이 설정하였다.

# Exclusion

이 부분은 위의 “Directory” 부분에서 지정한 무결성 여부를 체크할 디렉토리내에서 자

주 변경되는 디렉토리나 파일이 있어 체크를 제외할 파일이나 디렉토리등을 지정하면 된

다.

(물론 제외할 디렉토리나 파일이 없으면 설정하지 않으면 된다.)

필자는 아래와 같이 /etc/passwd 와 /etc/shadow 파일 그리고 /lib/modules/ 디렉토

리를 추가하였다.

Exclusion       = /etc/passwd

Exclusion       = /etc/shadow

Exclusion       = /lib/modules/

# DataBase

fcheck 는 무결성 상태의 파일 시스템에 대한 각종 정보를 DB 형태로 기억하고 있다가

일정시간마다 DB 에 기록된 정보와 현재의 파일 시스템을 비교하여 파일의 추가/변경/

삭제가 있을 경우 이를 알려주게 되는데, DataBase 는 이때 기억되는 각종 파일 시스템

에 대한 정보를 기억하고 있을 DB 의 경로 및 파일명을 지정하여 주는 것이다.

필자는

DataBase        = /usr/local/fcheck/data/data.dbf

와 같이 설정하였다.

이를 위해  /usr/local/fcheck 디렉토리밑에 mkdir data 로 data 디렉토리를 생성한다.

이와 같이 설정한 후 DB생성 명령어(fcheck –ac)를 입력하면 data 라는 해당 디렉토리

에 data..dbf  라는 파일이 생성된다.

# TimeZone

TimeZone 은 시스템의 각종 시간등에 대한 정보를 위해 필요하다.

한국의 TIMEZONE은 GMT+9 인데, GMT+9 를 입력하면 시간의 차이가 생기며 오히려

GMT-9 로 설정해 주어야 정상적으로 작동한다. 이는 프로그램의 버그인듯 하다.

따라서 아래와 같이 설정해 준다.

TimeZone        =GMT-9

# File

이 부분은 설정할 필요가 없는 부분이므로 아래와 같이 주석처리하면 된다.

#File   = /usr/local/admtools/logs/sol.dbf

이로서 설정이 끝났다.

이외 다른 설정도 몇가지 있지만 그대로 두어도 무방하다.

현재의 상태에서

[root@www fcheck]# ./fcheck –ac 를 입력하면 현재의 파일 시스템을 체크하여

파일 시스템에 대한 정보를 아래와 같이 생성한다.

[root@www fcheck]# ls -la data/

-rw——-   1 root     root       156519 Apr 10 11:33 data.dbf  

이제 정상적으로 체크가 되는지 확인해 보자.

아래와 같이

[root@www fcheck]# touch /usr/bin/test 로 파일을 생성한 후 fcheck –a 를 실행해

보았다.

ADDITION: [www.tt.co.kr] /usr/bin/[

        Inode   Permissons      Size    Created On

        273211  -rw-r–r–      0       Apr 10 12:21 2001

ADDITION: [www.tt.co.kr] /usr/bin/test

        Inode   Permissons      Size    Created On

        273211  -rw-r–r–      0       Apr 10 12:21 2001

위와 같이 /usr/bin/test 가 생성되었음을 알려준다.

각자 파일의 생성이나 변경, 삭제를 한 후 테스트를 해 보기 바란다.

무결성 체크 자동으로 하기.

관리하는 리눅스 시스템이 많다면 일일이 각 시스템에 로긴후 모두 체크하기란 여간 귀

찮은 일이 아닐 수 없다. 따라서 이를 자동으로 체크하여 만약 파일 시스템의 변동이 있

을 경우 관리자에게 변동 내용을 메일로 통보해주면 편리할 것이다. 아쉽게도 Fcheck

는 기본적으로 이러한 기능은 제공되지 않는데, 이를 위해 약간의 추가설정을 하면 된다.

이를 위해 /etc/cron.daily/ 에 fcheck.cgi 라는 파일을 생성하여 아래와 같이 추가한 후

실행할수 있도록 권한을 700 으로 설정해 주기만 하면 된다.

#!/usr/bin/perl

$TASK = `/usr/local/fcheck/fcheck -a|grep Inode`;  ##자신의 경로에 맞게 설정한

다.

$HOSTNAME = `/bin/hostname`;

$TO_MAIL      = ‘antihong at

tt.co.kr’;   ## 통보를 받을 e-mail 주소를 입력한다.

$SUBJECT      = “$HOSTNAME File 변조 확인”; ## 메일로 통보받을 제목을

지정한다.

$MAIL_PROGRAM  = “/usr/sbin/sendmail”;

if ($TASK){

  $TASK_CONFIRM = `/usr/local/fcheck/fcheck -a`;  ## 자신의 경로에 맞게 설정한

다.

&task_confirm;

}

sub task_confirm{

open(MAIL, “|$MAIL_PROGRAM -t”);

    print MAIL “To: $TO_MAIL \\n”;

    print MAIL “Subject: $SUBJECT \\n\\n”;

    print MAIL “Host: $HOSTNAME \\n”;

    print MAIL “$TASK_CONFIRM \\n”;

close(MAIL);

}

위와 같이 설정후에는 매일 자동으로 파일 시스템의 무결성을 체크하여 변경이 있을 경

우에는  변경된 내용을 관리자에게 메일로 통보해준다.

만약 통보된 변화가 정상적인 것이라면 관리자는 “fcheck –ac” 명령을 이용하여 데이터

베이스를 새로운 정보로 업데이트 하면 된다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

1 Response

  1. 2022년 6월 21일

    1blunderbuss

페이스북/트위트/구글 계정으로 댓글 가능합니다.