AIDE를 이용한 리눅스 파일 시스템의 무결성 점검

by 조쉬 posted Mar 26, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
리눅스 시스템의 보안 정책은 여러가지가 있을 수 있다. 네트워크 방화벽이나 웹방화벽을 운영하거나 개인 계정에 대한 보안정책을 설정하거나 필요하지 않는 서비스를 내릴 수도 있다.
하지만 해커가 시스템상에 침입을 성공해서 관리자 권한을 획득했을 시 파일 시스템의 무결성 점검은 최후의 보루가 될 수도 있다.

일반적으로 해커가 시스템에 침입하면 백도어를 만들어 놓거나 시스템파일을 변조시켜 자신의 침입 흔적을 지운다. 서버에무언가 이상이 있어서 관리자가 점검을 해도 시스템 명령어가 변조 되어 있으므로 침입 사실 자체를 찾지 못하고 단순히 서버 부하 문제로 생각하고 넘어가 버리는 경우도 있을 수 있다. 파일 시스템의 무결성을 점검 함으로써 이러한 문제점을 해결 할 수 있다.

파일 시스템의 무결성을 점검 툴로 가장 유명한 것이 tripwire이다. 아래 링크에서 다운 받을 수 있다.
tripwire 다운받기

tripwire 사용법

그 밖에 유용한 무결성 점검 툴로 perl 스크립트로 만들어진 fcheck, HIDS기반으로 동작하는 SAMHAIN등이 있다. 무결성 점검툴의 원리는 대부분 비슷하다. 해쉬함수를 이용해서 미리 시스템 파일의 무결성 데이타를 생성해서 보관해 놓았다가 이후 보관된 데이타와 비교를 해서 시스템 파일의 변조 유무를 판단하는 것이다. 때문에 중요한 것은 어떤 툴을 선택하느냐가 아니라 어떻게 운용하는 가이다. 여기서는 AIDE (Advanced Intrusion Detection Environment)를 통해서 파일 시스템 무결성 점검툴의 운용방법을 설명하려고 한다.

1. 설치
AIDE는 tripwire를 대체하기 위해서 나온 무결성 점검 툴이다. CentOS 5 에서는 yum으로 간단하게 설치가 가능하다.
# yum install aide.i386


2. AIDE 환경 설정
설치가 끝났으면 검사하고자 하는 시스템 파일의 무결성 데이타를 생성해야 한다. AIDE의 환경 설정은 /etc/aide.conf에서 할 수 있다. 기본 환경 설정 파일에는 환경설정 파일에 대한 설명과 기본적인 룰이 이미 생성 되어 있으나 룰이 너무 많고 광범위함으로 규칙을 이용해서 커스텀 룰을 생성해 보도록 하자.

AIDE의 룰은 매우 간단하다 다음 3가지만 알고 있으면 된다.
첫째 기본적인 룰은 / 중 경로명으로 시작한다. 이때 지정한 경로의 하위 디렉터리와 파일도 모두 db를 생성하고 검사한다.
예를 들어보면
/bin p+s+md5

이 룰은 /bin 디렉터리의 모든 하위 디렉터리와 파일들에 대해 p(퍼미션), s(사이즈), md5 checksume을 db를 생성하라는 것이다.

두번째 자기가 지정한 디렉터리나 파일만 검사하고 싶을때는 = 를 사용한다.
=/bin p+s+md5

이렇게 룰을 설정하면 /bin 디렉터리에 대해서만 룰을 생성한다 하위디렉터리나 파일들은 검사대상에서 제외된다.

세번째 특정디렉터리나 파일을 검사대상에서 제외하고 싶으면 !를 사용한다.
/var p+s+md5
!/var/tmp

이룰은 /var/tmp 디렉터리르 제외하고 /var 와 하위 디렉터리에 대해 db를 생성하고 검사하라는 옵션이다.

마지막으로 룰 작성시 주의할 점이 있다면 가장 일반적인 룰을 가장 나중에 놓으라는 것이다.
/ p
/etc p+md5

이런룰을 작성했다고 하면 보통 /디렉터리 이하는 p(퍼미션 검사)만 그리고 /etc 디렉터리는 p와 md5 검사를 한다고 생각할지 모르지만 /etc는 더 일반적인 룰은 /룰을 따른다. 이런 문제점을 피하려면 다음과 같이 상위 디렉터리 룰을 나중에 작성해 주어야 한다.
/etc p+md5
/ p

이제 나만의 커스텀 룰을 만들어 보자. /etc/aide.conf파일에서 룰 부분을 모두 주석처리 하고 다음과 같이 간단하게
나만의 룰을 만들 수 있다.

CUSTOM p+i+s+md5+sha256

/sbin CUSTOM
/bin CUSTOM
/usr/bin CUSTOM
/usr/sbin CUSTOM
/usr/local/bin CUSTOM
/usr/local/sbin CUSTOM

서버의 오버헤드를 줄이기 위해 감시 대상 파일을 시스템 명령어 디렉터리를 한정했고 CUSTOM이라는 매크로를 만들어서 p(퍼미션) + i(아이노드) + s(사이즈) + md5 + sha256 검사를 하도록 룰을 지정하였다. 이것은 간단한 예시이고 환경 설정 파일은 각자 자신의 서버에 맞도록 설정 하면 된다.

3. AIDE DB 생성
AIDE DB는 다음과 같은 명령을 생성하고 초기화 할 수 있다.
# /usr/sbin/aide --init
명령이 완료되면

/var/lib/aide/aide.db.new.gz 파일이 생성된다. aide는 /var/lib/aide/aide.db.gz파일을 참조하기 때문에
해당 파일을 생성해 주어야 한다.
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

4. AIDE를 통한 무결성 검사
무결성 DB를 생성 하였으면 다음 명령어를 통해서 파일 시스템의 무결성을 검사 할 수 있다.
# /usr/sbin/aide --check

5. AIDE 무결성 체크하기
그렇다면 AIDE자체의 무결성은 어떻게 점검 할 것인가? 해커가 시스템에 설치되어 있는 무결성 검사툴 자체를 변경하거나 룰을 바꿔치기 함으로써 이를 회피해 갈 수도 있다. 이는 무결성 관리 툴이 가지고 있는 헛점중 하나이다.

이를 회피하기 위해서 약간의 안전 장치를 더하기로 하자 원리는 같지만 AIDE 무결성 검사를 하기 위해서 약간의 다른 방식을 사용 할 것이다.
#mkdir /etc/.aide

#md5sum /etc/aide.conf >> /etc/.aide/aide.md5
#md5sum /usr/sbin/aide >> /etc/.aide/aide.md5
#md5sum /var/lib/aide/aide.db.new.gz >> /etc/.aide/aide.md5
#md5sum /var/lib/aide/aide.db.gz >> /etc/.aide/aide.md5

md5sum 명령어를 이용해서 직접 aide중요 파일의 md5 데이타를 생성하였다. 이들 파일의 무결성을 점검하려면 다음과 같이 하면 된다.
#md5sum -c /etc/.aide/aide.md5

6. 파일 무결성 점검툴의 운용방법
파일 무결성 툴의 설치나 환경설정 방법은 대부분 유사하다. 중요한것은 이를 운용하는 방법이다. 가장 중요한 것은 역시 해커가 파일 무결성 툴의 존재를 눈치챘더라도 이를 변경하거나 훼손할 수 없도록 CD롬같은 쓰기가 불가능한 매체에 이를 담아 놓고 운영하는 것이다. 하지만 이런 방법이 힘들다면 무결성 점검툴 자체의 무결성 점검에도 주의를 기울여야 한다. md5sum이나 pgp같은 도구를 이용하여 이들 파일의 무결성 DB를 따로 생성해 놓아야 한다. 또한 cron을 이용해 주기적으로 검사할 경우 서버 자체에서 cron을 실행하기 보다는 원격에서 ssh를 이용해 실행한다면 좀 더 안전하게 운용할 수 있을 것이다.