Tripwire는 오픈 소스 호스트 기반 침입 탐지 시스템(IDS)으로 파일 변경을 감시하고 경보를 보냅니다. 이 가이드는 Ubuntu 16.04에 Tripwire를 설치하고 정책을 구성하며, 규칙을 추가하고 이메일 알림과 크론 자동화를 설정하는 전체 절차를 단계별로 설명합니다.
Tripwire는 파일 무결성 검사(FIM, File Integrity Monitoring)를 제공하는 호스트 기반 침입 탐지 도구입니다. 핵심 목적은 시스템 파일과 디렉터리의 예기치 않은 변경(추가, 삭제, 권한/소유자 변경 등)을 감지하고 관리자에게 알리는 것입니다. 한 줄 정의: Tripwire는 파일 메타데이터와 내용을 기준으로 스냅샷을 만들어 이후 변경을 탐지하는 도구입니다.
중요 용어
- Site-key: 중앙(사이트) 암호키로 정책 파일을 암호화하는 데 사용됩니다.
- Local-key: 개별 호스트의 로컬 데이터베이스를 보호하는 암호키입니다.
- twpol.txt: Tripwire 정책을 사람이 읽을 수 있는 형식으로 정의한 텍스트 파일입니다.
- Tripwire 설치
- Ubuntu 시스템에 맞는 Tripwire 정책 구성
- Tripwire 설정 검증 및 무결성 검사
- Tripwire 정책에 새 규칙 추가
- Tripwire 알림 및 cron 자동화 설정
- Ubuntu 16.04 서버
- 루트(root) 권한 또는 sudo 사용 권한
준비 팁
- 설치 전에 시스템을 업데이트하세요: sudo apt update
- 이메일 알림 설정을 위해 서버에서 메일 송신(Postfix 또는 다른 MTA)이 동작해야 합니다.
1단계 - Tripwire 설치
공식 Ubuntu 저장소에 Tripwire 패키지가 포함되어 있습니다. 다음 명령으로 저장소 정보를 갱신하고 설치하세요.
sudo apt update
sudo apt install -y tripwire
설치 과정에서 Postfix SMTP 구성 화면이 나타나면 ‘Internet Site’를 선택하고 진행합니다.
메일 시스템 이름은 기본값을 유지하고 ‘OK’를 선택합니다.
설치 중 Tripwire 구성 관련 질문이 이어집니다. ‘site-key’와 ‘local-key’를 생성하라는 프롬프트가 나오면 Yes를 선택하고 각 키에 대해 강력한 암호(패스프레이즈)를 입력하세요.
사이트 키 생성 확인 단계입니다. Yes 선택 후 Enter를 누릅니다.
Tripwire 구성 재빌드와 정책 재빌드를 묻는 화면에서는 ‘Yes’를 선택합니다.
site-key 및 local-key의 패스프레이즈를 각각 입력하고 재확인합니다.
설치가 완료되면 Tripwire의 기본 파일/정책이 /etc/tripwire 디렉터리에 생성됩니다.
2단계 - Ubuntu 시스템용 Tripwire 정책 구성
모든 Tripwire 관련 구성 파일은 /etc/tripwire에 있습니다. 설치 후 데이터베이스를 초기화해야 합니다.
sudo tripwire --init
local-key 패스프레이즈를 묻습니다. 입력 후 진행하면, 경우에 따라 ‘No such directory’ 오류가 발생할 수 있습니다. 이는 기본 정책에서 존재하지 않는 경로를 참조하기 때문입니다.
존재하지 않는 파일/디렉터리 목록을 찾으려면 다음을 실행하세요.
sudo sh -c "tripwire --check | grep Filename > no-directory.txt"
cat no-directory.txt
그다음 /etc/tripwire/twpol.txt를 편집하여 존재하지 않는 항목을 주석 처리하거나 정책을 현재 시스템에 맞게 조정합니다.
cd /etc/tripwire/
vim twpol.txt
예시: Boot Scripts 규칙에서 존재하지 않는 항목을 주석 처리합니다.
(
rulename = "Boot Scripts",
severity = $(SIG_HI)
)
{
/etc/init.d -> $(SEC_BIN) ;
#/etc/rc.boot -> $(SEC_BIN) ;
/etc/rcS.d -> $(SEC_BIN) ;
System Boot Changes 규칙에서도 존재하지 않는 항목을 주석 처리하세요.
(
rulename = "System boot changes",
severity = $(SIG_HI)
)
{
#/var/lock -> $(SEC_CONFIG) ;
#/var/run -> $(SEC_CONFIG) ; # daemon PIDs
/var/log -> $(SEC_CONFIG) ;
Root config files 규칙에서 필요에 따라 일부 항목을 활성화하거나 주석 처리합니다.
(
rulename = "Root config files",
severity = 100
)
{
/root -> $(SEC_CRIT) ; # Catch all additions to /root
#/root/mail -> $(SEC_CONFIG) ;
/root/.bashrc -> $(SEC_CONFIG) ;
/root/.bash_history -> $(SEC_CONFIG) ;
Devices & Kernel information 규칙에서는 proc와 dev 관련 항목을 적절히 설정합니다(일부 항목은 시스템에서 동적으로 변하므로 주석 처리 권장).
(
rulename = "Devices & Kernel information",
severity = $(SIG_HI),
)
{
/dev -> $(Device) ;
/dev/pts -> $(Device);
/dev/shm -> $(Device);
/dev/hugepages -> $(Device);
/dev/mqueue -> $(Device);
#/proc -> $(Device) ;
/proc/devices -> $(Device) ;
/proc/net -> $(Device) ;
/proc/tty -> $(Device) ;
/proc/cpuinfo -> $(Device) ;
/proc/modules -> $(Device) ;
/proc/mounts -> $(Device) ;
/proc/dma -> $(Device) ;
/proc/filesystems -> $(Device) ;
/proc/interrupts -> $(Device) ;
/proc/ioports -> $(Device) ;
/proc/scsi -> $(Device) ;
/proc/kcore -> $(Device) ;
/proc/self -> $(Device) ;
/proc/kmsg -> $(Device) ;
/proc/stat -> $(Device) ;
/proc/loadavg -> $(Device) ;
/proc/uptime -> $(Device) ;
/proc/locks -> $(Device) ;
/proc/meminfo -> $(Device) ;
/proc/misc -> $(Device) ;
}
편집을 저장한 뒤, 트립와이어 정책 파일을 암호화된 형식으로 재생성합니다.
sudo twadmin -m P /etc/tripwire/twpol.txt
site-key 패스프레이즈를 입력하면 새 정책이 생성됩니다. 그 다음 데이터베이스를 다시 초기화합니다.
sudo tripwire --init
local-key 패스프레이즈를 입력하면 오류 없이 초기화가 완료되어야 합니다.
이로써 Ubuntu 시스템에 맞는 Tripwire 정책 구성이 완료되었습니다.
3단계 - 시스템 파일 무결성 검사
정책과 데이터베이스가 준비되었으면 수동으로 검사해볼 수 있습니다.
sudo tripwire --check
정상이라면 출력에서 ‘No Violation’ 및 ‘No Error’ 항목을 확인할 수 있습니다.
테스트용으로 루트 홈에 새 파일을 만들고 Tripwire를 다시 실행하면 추가(added) 항목과 디렉터리 수정(modified directory)이 위반으로 감지되는 것을 볼 수 있습니다.
cd ~/
touch hakase-labs.txt
sudo tripwire --check
이와 같이 Tripwire는 파일 추가/삭제/변경을 탐지합니다.
4단계 - Tripwire에 새 규칙 추가
특정 경로(예: 웹 루트)를 별도 규칙으로 관리하면 탐지와 알림을 더 세분화할 수 있습니다. 여기서는 ‘/var/www’를 감시하는 ‘Wordpress Ruleset’ 규칙을 추가해봅니다.
cd /etc/tripwire/
vim twpol.txt
파일 끝에 다음 블록을 추가합니다.
# Ruleset for Wordpress
(
rulename = "Wordpress Ruleset",
severity= $(SIG_HI)
)
{
/var/www -> $(SEC_CRIT);
}
저장 후 정책을 재생성합니다.
sudo twadmin -m P /etc/tripwire/twpol.txt
site-key 패스프레이즈 입력 후 데이터베이스를 재초기화합니다.
sudo tripwire --init
local-key 패스프레이즈를 입력합니다.
이제 /var/www/에서 파일을 생성하거나 수정하고 검사하면 보안 수준 100에 해당하는 위반으로 보고됩니다.
cd /var/www/
touch hakase-labs.txt
echo " Hakase-labs Tutorial
" > html/index.nginx-debian.html
sudo tripwire --check
규칙이 정상적으로 작동하면 Tripwire가 변경을 감지합니다.
5단계 - Tripwire 알림 및 cron 설정
Tripwire는 정책 내에 emailto 옵션을 사용해 특정 규칙에 대해 이메일 알림을 보낼 수 있습니다. 설치 시 Postfix를 선택했다면 기본적으로 이메일 전송이 가능해야 합니다.
먼저 테스트 알림을 보냅니다.
tripwire --test --email [email protected]
서버에서 보내는 테스트 이메일을 수신하는지 확인하세요.
이제 twpol.txt에서 Wordpress 규칙에 emailto를 추가합니다.
cd /etc/tripwire/
vim twpol.txt
규칙 블록 예시:
# Rules for Web-app
(
rulename = "Wordpress Rule",
severity = $(SIG_HI),
emailto = [email protected]
)
정책을 재생성하고 데이터베이스를 재초기화합니다.
sudo twadmin -m P /etc/tripwire/twpol.txt
sudo tripwire --init
site-key와 local-key 패스프레이즈를 입력하면 적용됩니다.
수동으로 검사하면서 이메일 보고서를 전송하려면 다음을 사용합니다.
sudo tripwire --check --email-report
이메일로 검사 결과 보고서를 수신하는지 확인하세요.
자동화를 위해 루트 크론에 검사 작업을 추가합니다.
sudo crontab -e -u root
크론 항목(매일 00:00 실행):
0 0 * * * tripwire --check --email-report
크론 저장 후 cron 서비스를 재시작합니다.
systemctl restart cron
이제 시스템은 매일 자동으로 검사하고 구성한 규칙에 따라 이메일 알림을 전송합니다.
다음 섹션은 실제 운영 환경에서 Tripwire를 안전하고 효과적으로 운영하기 위한 보완 자료입니다.
언제 Tripwire만으로 부족한가 (한계와 실패 사례)
- 실시간 차단 기능 없음: Tripwire는 탐지와 보고 중심이며, 변경을 자동으로 롤백하거나 차단하지 않습니다. 탐지 이후 수동 또는 자동화된 대응 프로세스가 필요합니다.
- 동적 파일/로그의 과다한 노이즈: /proc, /dev, /var/run 등 동적으로 변하는 항목은 false positive가 많아 적절히 정책에서 제외하거나 Device 타입으로 설정해야 합니다.
- 대규모 분산 시스템에서의 스케일링: 여러 호스트에서 중앙관리/집계가 필요할 경우 Tripwire Open Source 단독으로는 한계가 있어 SIEM 연동이나 중앙 로그·알림 시스템이 필요합니다.
대안 및 보완 도구
- AIDE(Advanced Intrusion Detection Environment): Tripwire와 유사한 파일 무결성 검사 도구로 가볍고 널리 사용됩니다.
- OSSEC / Wazuh: 로그, 파일 무결성, 호스트 기반 탐지 기능을 통합하여 중앙관리와 규칙 기반 알림을 제공합니다.
- Samhain: 분산 모니터링과 중앙 서버 기능을 제공하는 FIM 도구입니다.
선택할 때 고려사항: 중앙집중식 관리, 알림/티켓 통합, 운영자 편의성, 기존 보안 스택과의 연동성.
배치 및 성숙도 모델(간단)
- 레벨 0: 설치 전 테스트 환경에서 단독 실행 및 정책 튜닝
- 레벨 1: 운영서버에 설치, 수동 알림 수신 및 간단 크론 자동화
- 레벨 2: 정책을 표준화하고 변경 관리 프로세스와 연동(예: CI/CD, 구성관리)
- 레벨 3: 중앙수집(SIEM)과 연동, 자동화된 사고 대응(playbook) 적용
운영자(역할)별 체크리스트
관리자(시스템):
- Tripwire 패키지 버전 확인 및 정기 패치
- 키(site/local) 안전 보관 및 백업
- 정책(twpol.txt) 변경 시 변경 내역 및 승인 기록 유지
보안팀:
- 이메일 알림 수신 확인 및 알림 우선순위 정의
- 규칙 세분화 및 허용/예외 목록 관리
- SIEM 연동 및 상관관계 규칙 구성
개발/웹팀:
- 웹 루트(예: /var/www) 변경 정책에 대한 승인 프로세스 수립
- 배포 스크립트에서 Tripwire 예외 등록/갱신 절차 마련
간단한 SOP(사건 대응 개요)
- Tripwire 알림 수신: 규칙명, 심각도, 변경된 파일 목록 확인
- 1차 분류: 허용된 변경(배포/업데이트)인지 여부 판단
- 비허가 변경이면 해당 호스트를 네트워크 격리(필요 시)
- 변경 파일을 백업하고 파일 해시/타임스탬프 조사
- 이벤트를 SIEM 또는 티켓 시스템에 등록하고 조사 진행
- 복구 시나리오 적용(백업에서 복원하거나 패치 적용)
- 후속으로 정책 튜닝 또는 추가 규칙 적용
테스트 케이스 및 수용 기준
- 초기 상태: tripwire –check 실행 시 ‘No Violation’ 및 ‘No Error’ 출력 확인
- 파일 추가 테스트: 지정된 디렉터리에 파일 생성 후 위반으로 탐지되는지 확인
- 파일 수정 테스트: 콘텐츠 변경, 권한 변경, 소유자 변경이 탐지되는지 확인
- 규칙 별 이메일 테스트: –email-report로 이메일 수신 확인
- 크론 자동화 테스트: 수동으로 크론 명령을 실행하여 이메일 전송 및 로그 기록 확인
수용 기준: 모든 테스트 케이스에서 탐지/보고가 일관되게 수행되고 false positive는 정책 조정으로 억제되어야 함.
보안 강화 권장사항
- 키 관리: site-key와 local-key를 안전한 비밀 관리 시스템(예: Vault)에 보관하거나 오프라인 백업 유지
- 정책 관리 변경 이력: Git과 같은 형상관리 시스템으로 twpol.txt 버전 관리, 변경 시 서명된 커밋 프로세스 적용
- 로그 보호: Tripwire 보고서와 로그 파일의 접근 권한을 제한하고 중앙 로그서버로 전송
- 최소 권한: Tripwire 실행 권한은 루트 필요 시에만 부여하고, 스크립트/크론 파일의 권한을 제한
개인정보 및 규정 준수 주의사항
- Tripwire는 파일 메타데이터와 일부 내용(정책에 따라)을 검토하므로 개인 식별 정보(PII)가 포함된 파일을 모니터링할 경우 내부 정책과 개인정보 보호 규정을 준수해야 합니다.
- 이메일 보고서에 민감정보가 포함되지 않도록 정책 검토 및 이메일 수신자 관리를 철저히 하세요.
호환성 및 마이그레이션 팁
- Ubuntu 16.04에서 설정한 정책은 18.04/20.04에서 대부분 호환되지만, 시스템별 디렉터리 차이(예: systemd 서비스 파일 위치, 기본 웹 루트 등)를 점검 후 정책을 조정하세요.
- systemctl 기반 시스템에서는 /etc/init.d 대신 systemd 단위 파일(unit files)을 고려해야 할 수 있습니다.
Tripwire는 경량의 오픈 소스 호스트 기반 침입 탐지 시스템으로, 파일 무결성 감시를 통해 시스템 변경을 탐지하고 보고합니다. 이 문서에서는 Ubuntu 16.04에 Tripwire를 설치하고 정책을 튜닝하여 실제 운영에서 활용하는 방법을 단계별로 다뤘습니다. 정책 구성 시에는 동적 파일의 false positive를 줄이는 것과 키·로그 관리, 알림 운영 프로세스를 함께 설계하는 것이 중요합니다.
중요 사항
- Tripwire는 탐지 도구이며 자동 차단 기능은 제공하지 않습니다. 탐지 후 대응 절차를 준비하세요.
- 정책(twpol.txt)을 테스트 환경에서 먼저 튜닝한 뒤 운영에 적용하세요.
- 이메일 알림 및 cron 자동화를 통해 정기 검사를 운영하세요.
감사합니다. 추가로 Ubuntu 18.04/20.04로의 업그레이드 또는 SIEM과의 통합 방법이 필요하면 요청해 주세요.
참고 자료
요약된 핵심 포인트
- Tripwire는 파일 변경을 감지하는 오픈 소스 IDS입니다.
- 설치: apt install tripwire 후 site/local key 생성
- 정책 편집: /etc/tripwire/twpol.txt에서 경로/규칙 조정
- 정책 적용: sudo twadmin -m P … 및 sudo tripwire –init
- 알림: emailto 옵션 및 –email-report, 크론으로 자동화