Tripwire
IT위키
더 많은 작업
- 무결성 점검 도구
- 시스템의 특정 상태를 저장해 두고, 사고 발생 시 비교하여 변경 여부를 확인한다.
- 파일마다 MD5·SHA·CRC-32 같은 여러 해시값을 함께 저장해 두고 비교하므로 파일의 추가·삭제·변조를 모두 찾아낸다
1992년 퍼듀 대학교의 진 킴과 유진 스패퍼드가 개발했다. 침입자가 시스템 파일이나 명령어 바이너리를 바꿔치기하는 것을 잡아내기 위한 도구로, 파일 무결성 검사(FIM, File Integrity Monitoring) 분야의 사실상 원형이다. 이름은 '건드리면 터지는 덫줄'이라는 뜻이다.
- 정책 파일에 감시할 대상과 검사할 속성(권한, 소유자, 크기, inode, 수정 시각, 해시 등)을 정의한다.
- 시스템이 깨끗한 상태에서 기준 데이터베이스를 생성한다. 각 파일의 속성과 해시값이 여기에 저장된다.
- 이후 주기적으로 검사를 돌려 현재 상태와 데이터베이스를 대조한다.
- 값이 달라진 파일을 보고서로 출력하고 관리자에게 통보한다.
- 정당한 변경(패치 적용 등)이면 데이터베이스를 갱신한다.
해시 함수의 일방향성 덕분에 내용이 1비트만 바뀌어도 전혀 다른 값이 나오므로, 크기와 수정 시각을 그럴듯하게 위조해도 변조가 드러난다.
- 데이터베이스 자체를 보호해야 한다. 침입자가 파일을 바꾼 뒤 기준 데이터베이스까지 다시 만들면 탐지되지 않는다. 그래서
- 데이터베이스와 정책 파일, 실행 파일을 읽기 전용 매체나 분리된 저장소에 보관하고
- 파일에 암호학적 서명을 걸어 무단 변경을 막는다.
- 물리적 보안이 필요 없어지는 것이 아니다. 오히려 기준 데이터베이스가 담긴 매체에 대한 물리적 통제가 전제되어야 도구가 성립한다.
- 탐지는 사후다. 변경을 막는 것이 아니라 일어난 변경을 알려 준다.
- 자주 바뀌는 로그·임시 디렉터리를 그대로 감시 대상에 넣으면 오탐이 쏟아진다. 정책 조정이 운영의 핵심이다.
무결성 점검은 바뀌면 안 되거나, 바뀌었을 때 반드시 알아야 하는 파일을 대상으로 한다.
| 대상 | 예 | 이유 |
|---|---|---|
| 계정·인증 파일 | /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers | 침입자가 UID 0 계정이나 백도어 계정을 추가하면 passwd 가 바뀐다 |
| 시스템 명령 바이너리 | /bin, /sbin, /usr/bin 의 ls·ps·netstat·login 등 | 루트킷이 명령을 바꿔치기해 흔적을 숨긴다 |
| 서비스 설정 파일 | 웹 서버 httpd.conf, sshd_config, /etc/inetd.conf, crontab | 설정 변경으로 백도어 포트·우회 경로를 만든다 |
| 부팅·커널 | /boot, 커널 모듈 | 부팅 단계에서 실행되는 악성코드 |
- /etc/passwd 는 계정을 만들거나 지울 때 바뀌므로 변경이 잦다는 이유로 감시에서 빼면 안 된다. 비밀번호 해시가 든 /etc/shadow 만 감시하면 passwd 에 UID 0 계정을 몰래 추가하는 공격을 놓친다. 정당한 계정 변경 뒤에는 기준 데이터베이스를 갱신하는 절차로 오탐을 줄인다.
- 설정 파일은 무결성 점검과 함께 주기적으로 백업해 두어야 변조를 찾은 뒤 원래대로 되돌릴 수 있다.
- 반대로 /var/log 의 로그 파일처럼 내용이 계속 늘어나는 파일은 내용 해시 대신 권한·소유자만 감시하거나 증가만 허용하도록 정책을 따로 둔다.
- AIDE (Advanced Intrusion Detection Environment) : 오픈소스 계열의 대표적 대안
- Samhain : 중앙 집중 관리를 지원하는 무결성 검사 도구
- OSSEC : 무결성 검사와 로그 분석을 함께 수행하는 HIDS
무결성 검사는 호스트 기반 침입 탐지(HIDS)의 핵심 기능 중 하나로 분류된다.