필자 : 이강석, 노병규 (ksalice, nono@kisa.or.kr)
|
||||||||||||||||||||||||||||||||||||||||||||||||
목차 1. 데이터 무결성과 보안
1. 데이터 무결성(Integrity)과 보안 네트워크 환경에 있는 시스템인 경우 외부의 크래커나 내부의 악의적인 사용자의 공격에 노출되어 있다. 이들은 시스템에 침투하여 중요한 파일을 변경 또는, 삭제하거나 백도어(Backdoor)와 같은 프로그램을 설치하여 시스템에 해를 끼칠 수 있다. 예를 들면, 리눅스 서버의 호스트를 보호하기 위해 많이 사용되고 있는 TCPWrapper는 /etc/hosts.allow 및 /etc/hosts.deny 에 접근권한을 설정하고 있는데, 이 파일에 누군가 조작을 가하면 모든 사용자들의 접속을 허용하도록 할 수 있다. 관리자는 파일을 열어보지 않고서는 파일이 변조되었음을 알 수가 없다. 이와 같은 문제로부터 시스템을 보호하기 위한 방법은 파일에 대한 불법 변조여부를 검사해 주는 것이다. 데이터 무결성은 시스템 내의 중요한 데이터가 허가되지 않은 사용자에 의해 삭제, 수정, 추가 등의 행위에 대해 감시 또는 방지하는 기능이다. 이러한 기능을 제공하기 위해서는 무결성 대상 데이터를 정의하고, 데이터의 변경을 감지하기 위해 원본 데이터로부터 유일하게 구분되는 값인 무결성 데이터를 생성해야 한다. 무결성 대상 데이터는 시스템 내의 중요한 디렉토리나 파일이 해당된다. 무결성 데이터는 단 방향 함수라고 불리는 해쉬(Hash) 함수로 생성되며, 대표적인 해쉬 함수는 MD5, SHA1 등이 있다. 해쉬 함수는 입력 값에는 무관하게 일정한 길이의 출력 값을 생성하며, MD5인 경우 128비트, SHA1은 160비트의 출력 값을 생성하고, 생성된 값으로부터 본래의 입력 값을 알아내기는 어렵다.
데이터 무결성 과정은 (그림 1)과 같다. 무결성 대상 데이터는 해쉬함수를 통해 무결성 데이터를 생성하여 보관한다. 데이터가 변조되었는지를 검사하기 위해서는 동일한 과정으로 무결성 데이터를 생성하여 저장된 무결성 데이터와 비교하게 된다. 무결성 대상 데이터가 변조되었을 경우에는 변조여부를 바로 알게 된다. 데이터 무결성에 필요한 프로그램으로는 Tripwire나 AIDE 등이 있으며, 여기에서는 AIDE에 대해 소개한다.
2. AIDE 소개 AIDE(Advanced Intrusion Detection Environment)는
데이터 무결성을 검사해주는 도구로, GPL(General Public License)로
배포된 제한이 없는 유틸리티이다. 이것은 Solaris 계열, Linux
계열, FreeBSD 등의 UNIX 환경의 플랫폼에서 동작한다. AIDE는 환경설정 파일인 aide.conf에 정의된 정규 표현 방식에 따라 무결성 데이터베이스를 생성한다. 무결성 데이터베이스는 위에서 지원하는 여러 가지 무결성 알고리즘으로 생성되며, 파일의 무결성을 검사하는데 사용된다.
3. AIDE 설치 여기서는 AIDE에 대한 설치환경과 설치방법에 대해 알아본다. 3.1 필요한 요소 AIDE를 설치하기 전에 다음과 같은 요소들이 필요하며, 설치 전에 필요한 다음 파일을 /tmp 디렉토리에 다운로드한다. - AIDE source code (http://www.cs.tut.fi/~rammer/aide.html)
3.2 설치 절차 AIDE는 root 또는 특정 사용자가 동작해도 가능하지만, 좀더 보안을 강화하기 위해서는 root가 관리하는 것이 좋다. ① 무결성 알고리즘을 추가하여 CRC32, HAVAL,
그리고 GOST를 사용하고자 할 경우, [root@digital /tmp]# ls [root@digital /tmp]# tar -vzxf mhash-0.8.9.tar.gz ② AIDE 설치도 마찬가지로 ./configure, make,
make install을 [root@digital /tmp]# tar vzxf aide-0.7.tar.gz
MHASH와 함께 기본적으로 설치할 경우 컴파일 옵션은 다음과 같다. [root@digital aide-0.7]# ./configure --with-mhash 설치 디렉토리를 사용자가 정의하고 설치할 경우 컴파일 옵션은 다음과 같다. [root@digital aide-0.7]# ./configure --with-mhash --prefix=/usr/local/aide AIDE의 설치 디렉토리는 /usr/local 에 설치되며, 실행파일은 /usr/local/bin에 위치하게 된다. 현재 배포된 버전(AIDE-0.7)에서는 위와 같이 기본(default)으로 설치하거나 사용자 정의 디렉토리 옵션을 사용하여 설치했을 경우, 환경설정 파일인 aide.conf의 위치를 찾지 못하기 때문에 configure 파일을 직접 수정해야 한다. 따라서 다음과 같이 ./configure 파일을 수정하도록 한다. [root@digital aide-0.7]# vi configure 을 다음과 같이 수정한다. #define CONFIG_FILE “/usr/local/aide/etc/aide.conf” [root@digital aide-0.7]# ./configure --with-mhash
--prefix=/usr/local/aide 설치 디렉토리는 /usr/local/aide이고, AIDE 실행파일은 /usr/local/aide/bin 에 있다. 사용자는 자신의 환경 설정파일에 /usr/local/aide/bin 디렉토리 경로를 설정한다. bash를 사용할 경우 다음과 같이 PATH를 설정한다. [root@digital aide-0.7]vi ~/.bash_profile [root@digital aide-0.7]source ~/.bash_profile [root@digital aide-0.7]# cd /usr/local/aide
4 AIDE 사용법 여기서는 환경설정파일인 aide.conf 파일에 대해 설명하고, 처음 AIDE를 실행할 때 필요한 작업들에 대해 알아본다. 4.1 환경설정파일 aide.conf AIDE를 실행하기 위해서는 우선 aide.conf를 설정해야 한다. aide.conf를 설정하기 앞서 설치 디렉토리에서 etc 와 doc 디렉토리를 생성하고, 원본 AIDE 디렉토리의 doc 디렉토리에서 환경설정 파일을 생성한 etc 디렉토리 아래에 복사한다. [root@digital aide]# mkdir /usr/local/aide/etc 기본으로 제공되는 aide.conf 파일을 열어 다음과 같이 수정한다. 세부적인 설명은 생략한다. [root@digital etc]# vi /usr/local/aide/etc/aide.conf url=stdout 4.2 AIDE 사용법 AIDE 사용법은 다음과 같다. [root@digital aide]# aide -h [root@digital aide]# aide -i [root@digital aide]# aide -C [root@digital aide]# aide -u 4.3 AIDE 실행 AIDE의 실행파일이 있는 위치(/usr/local/aide/bin)를 PATH로 연결했다면, 다음과 같이 /usr/local/aide/doc로 이동한 후에 AIDE를 실행할 준비를 한다. [root@digital doc]# pwd AIDE를 처음으로 실행하면서 데이터베이스를 초기화한다. [root@digital doc]# aide -i -i 옵션은 aide.db.new를 생성하고, 그 결과를 report.txt에 저장하게 된다. 이 파일은 무결성 체크를 하기 위해 aide.db로 이름을 바꿔준다. [root@digital doc]# mv aide.db.new aide.db 무결성을 체크한다. 파일의 변화가 발생했을 경우에는 화면에 결과를 보여주고, report.txt 파일에 그 결과를 기록한다. [root@digital doc]# aide -C 무결성 데이터베이스를 갱신할 경우 -u 옵션을 사용하여 새로운 데이터베이스 파일을 생성하고, 이전 데이터베이스를 갱신한다. -u 옵션은 무결성을 체크하고 갱신하는 옵션이다. [root@digital doc]# aide -u
5. AIDE 룰 설정 AIDE는 환경설정 파일인 aide.conf에 무결성 대상과 방법을 설정하고 있다. 여기에서는 환경설정에 필요한 값들과 설정방법 그리고 룰 정책에 대해 알아본다. 5.1 룰 표현 값 다음 [표 1]은 룰을 설정하기 위한 표현 값들을
보여주고 있으며, 이 룰들을 이용하여 사용자는 원하는 룰을 만들
수 있다.
5.2 룰 예제 다음은 무결성 대상데이터 설정과 해쉬알고리즘 설정에 대해 예제로 설명하고자 한다. aide.conf 파일을 다음과 같이 수정한다. [root@digital etc]# vi /usr/local/aide/etc/aide.conf MyRule=p+i+n+u+g+s+b+m+c+md5+sha1 # 룰 설정
부분 5.3 룰 정책 무결성 대상데이터는 관리자의 정책을 가지고 설정할 필요가 있다. 보안을 강화하기 위해 무조건 많은 디렉토리와 파일에 대해 무결성을 유지하려 한다면, 무결성을 체크하는데 많은 시간과 작업을 필요로 하게 된다. 따라서, 무결성 대상데이터에 대한 선별이 이루어져야 하고, 얼마의 주기로 무결성을 체크하도록 할 것인가에 대한 정책을 가지고 있어야 한다. 무결성 대상데이터는 시스템에 중요한 파일 또는 디렉토리를 정하고, 시스템이 HTTP나 FTP 등과 같은 서버로서 동작을 하고 있다면 이들에 대한 데이터나 환경설정파일들에 대해서도 고려해야 할 것이다.
6. 결론 AIDE는 데이터 무결성을 체크하는 도구로 Tripwire가 상용인데 반해, 그 사용의 제한이 없고 사용이 간편하다는 장점을 가지고 있지만, Postgres와의 연동문제와 컴파일시에 나타나는 문제가 남아 있다. 또한 무결성 체크를 원할 때마다 AIDE를 실행시켜야 하고, 갱신시에는 DB 파일 또한 갱신해야 한다는 불편함을 지니고 있다. AIDE는 TCP Wrapper와 같은 보안프로그램과 CRON 등의 백업도구를 함께 사용하여 단점을 보완하고 효율적으로 사용할 수 있을 것이며, 차후에는 데이터베이스 연동, 압축, 암호화 부분의 추가를 계획하고 있다.
7. 참고 사이트 [1] Aide, |