AIDE/ko

AIDE(Advanced Intrusion Detection Environment : 고급 침입 탐지 환경)은 호스트 기반 침입 탐지 시스템입니다. AIDE는 파일 및 기타 자원을 검사하며, 이 파일 정보를 데이터베이스에 저장합니다. 저장한 정보에는 파일 해시 출력, 파일 크기, 소유자, 수정 일시, 생성 일시 등의 키 파일 속성을 담고 있습니다. 데이터베이스를 처음 만들고 나면, AIDE에서 시스템을 다시 검사하고 새 검사 결과와 이전 검사 값과 비교합니다. 값이 다르면 파일의 내용이 바뀌었음을 의미하며, 바뀐 내용을 보고합니다. AIDE를 사용하는 개념은 시스템 스냅샷을 만들고 각 스냅샷의 내용을 비교하여 감시 범위를 벗어난 파일을 찾는 것에 있습니다.

USE 플래그
를 설치하는 일은 다음 항목과 같이 USE 플래그를 설정하면 참 간편합니다.

각각의 꾸러미 상태를 바꾸는 USE 플래그는 파일 또는  디렉터리의 텍스트 파일에 설정합니다. 예를 들어 "파일"을 사용한다면:

Emerge
USE 플래그를 설정했으면, 프로그램을 설치하십시오:

간단히 살펴보기
프로그램 설정 파일은 처음에 보신 바와 같이 주눅들게 하지는 않습니다. 기본 파일은 에 있지만 원할 경우 설정 파일 여러 개로 쉽게 만들 수 있습니다. 몇가지 변수에 따라, 설정 파일에는 파일의 어떤 특징을 검사할 지(해시만 검사할지, inode 정보 등까지 검사할 지)와 어떤 파일을 검사할 지 조금 간단한 표기 설정이 들어있습니다.

일단 database 변수를 들여다보도록 하겠습니다:

상단 예제의 첫번째 줄에서는 알려진 값을 보관하는 데이터베이스의 위치를 설정합니다. 두번째 줄 다른 데이터베이스를 이미 만들었을 경우 새 데이터베이스를 저장할 위치를 설정합니다. 보통 동일한 데이터베이스를 가리키도록 두 변수의 값을 설정(두 변수에 동일한 경로를 설정)하는 것이 좋습니다. 어떤 데이터베이스가 다른 데이터베이스에 덮어쓰기를 한다면, 가장 좋은 방법이 있다면, 한 위치에서 다른 위치로 이미 만든 데이터베이스에 "직접 복사"하는 방법이 있습니다. 예를 들어 앞의 데이터베이스를 그 다음 데이터베이스로 덮어쓰려면, 다음 명령을 사용할 수 있습니다:

일단, 데이터베이스 변수 값은 그대로 두겠습니다. 자세한 내용은 이 글에서 나중에 다루겠습니다.

다음, 어떤 정보를 데이터베이스에 기록할 지 간단한 표기법으로 나타낸 변수를 고려해보겠습니다.

각 문자의 설명은 기본 파일에 들어있지만, 다음 표를 통해 편의상 보통 사용하는 옵션을 보여드리겠습니다:

다음은 어떤 디렉터리를 검사할 지, 어떤 항목을 검사할 지 간략하게 보여줍니다. 여기 예제 세 줄을 따라 살펴보면, AIDE는 과 디렉터리를 Binlib 로 줄여 표기한 변수에 지정한 방식대로 검사하라고 지시를 받습니다. 파일에서는 상단에 설정한 Logs 변수의 내용대로 검사 내용을 보여줍니다.

AIDE에는 정규표현식을 지원하며 일치하는 요소를 "제거" 할 수 있습니다. 예를 들어, 를 검사하지만 를 검사하지 않으려면, 다음과 같이 제외 경로 앞에 (느낌표)를 붙여 제외 항목을 설정하십시오:

상세 옵션
설정 파일은 파일 및 디렉터리에 대한 정규 표현식, 매크로, 규칙이 기반입니다. tripwire solution 을 활용해 본 사용자는 AIDE 설정 파일을 다루는데 난해함이 없겠습니다. 다음 매크로를 활용할 수 있습니다:

여러 젠투 머신에서 동일한 설정을 활용할 경우 이 매크로를 다루기 편해집니다. 모든 머신에서 동일한 서비스를 실행하거나 동일한 사용자를 보유하고 있는건 아닙니다.

다음, 파일과 디렉터리를 검사할 권한, 파일 속성, 검사합, 암호화 해시를 식별하는 플래그를 알아보겠습니다.

AIDE에서 mhash를 지원하도록 컴파일했다면, 마찬가지로 다음 플래그도 활용할 수 있습니다:

초기화 및 꾸준한 검사
기본 AIDE 설정을 하려면, 데이터베이스를 초기화 해야합니다. 옵션을 사용하여 진행합니다. AIDE가 이전 섹션에서 설정한 환경 설정 내용을 활용하도록 한다면 올바른 설정 파일을 가리키도록  옵션을 확실히 전달하십시오:

초기화를 하고 나면, 이전의 데이터베이스 파일 사본을 넘길 수 있습니다:

새 데이터베이스가 있으면,  옵션을 사용하여 (지금 아니면 나중에) 항목을  다시 검사할 수 있습니다. 이 명령을 통해 데이터베이스를 처음 만든 후 파일 시스템에 바뀐 내용이 있다면 바뀐 내용이 들어있는 다른 데이터베이스를 만듭니다. 옵션 값이 처음 데이터베이스를 만든 위치와 동일한 지 확인하십시오:

파일 수정이 발생하면, 다음 알림을 내보냅니다:

검사 대상을 확실히 설정 하십시오
기본 AIDE 설정은 유용하지만, 사용자의 요구에 맞추려면 세밀하게 조절해야 합니다. 어떤 파일을 왜 검사해야 하는지 아는 것이 중요합니다.

예를 들어, 인증 관련 파일만을 모두 검사하지만, 다른 파일에 대해서는 검사하지 않는다면, 다음처럼 설정을 사용할 수 있습니다:

데이터베이스를 오프라인 상태 및 읽기 전용으로 유지하십시오
두번째로 중요한 양상은, 필요하지 않을 때는 데이터베이스를 오프라인에 저장해야하며, 필요할 때는 읽기 전용 방식으로 사용하려 하는 점입니다. 이러한 방식을 통해 타협 숙주를 지니고 데이터베이스를 멋대로 수정하는 악의적인 사용자로부터 보호할 수 있습니다. 예를 들어 읽기 전용 NFS 마운트(서버) 또는 CD/DVD 또는 읽기 전용 USB 메모리같은 읽기 전용 매체(머신에 직접 접근할 수 있을 경우)를 통해 결과 데이터베이스를 제공할 수 있습니다.

각각의 읽기전용 위치에 데이터베이스를 저장한 후, 파일을 업데이트 하여  가 새 위치를 가리키도록 하십시오.

오프라인 상태에서 검사하십시오
가능하다면, 시스템에 대해 오프라인 검사 방법을 사용해보십시오. 가상 플랫폼의 경우 시스템의 스냅샷을 취할 수 있고 이 스냅샷을 마운트(읽기 전용) 할 수 있으며 마운트한 파일 시스템에 대해 AIDE 검사를 수행할 수 있습니다.

위의 접근 방식에서는 를 사용했습니다. 실제 시스템에서 초기 파일 시스템을 검사할 경우에만 필요하며, 관리자는 오프라인 방식 검사를 원합니다. 초기 오프라인 검사가 끝나면, 파일은 마운트 지점을 가리키며, 데이터베이스는 이 경로를 즉시 사용합니다. 따라서 chroot를 할 필요가 없습니다.

추가 참조

 * Integrity/Concepts 에서는 시스템 무결성과 관련 있는 개념을 다룹니다

외부 자료

 * Tutorial on how to use AIDE (Linux.com)
 * Securing Linux with AIDE article (Symantec.com)