インストール
# yum -y install epel-release ← EPEL リポジトリをインストール
# yum -y install --enablerepo=epel tripwire
コンフィグ・ファイルの編集
# vim /etc/tripwire/twcfg.txt
LOOSEDIRECTORYCHECKING =true ← ディレクトリとファイルの2重チェックをしない
キー・ファイルのセットアップ
あらかじめサイト・パスフレーズとローカル・パスフレーズを決めておき、
# tripwire-setup-keyfiles
ポリシー・ファイルの作成
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
改竄チェック用データの作成
# tripwire --init
チェックを実行
# tripwire --check > tripwire.out 2>&1
大量のエラーメッセージが出る。それを tripwire.out に保存する。
「存在しない」と表示されるファイルのリストを取得
# grep '### Filename:' tripwire.out | awk '{print $3}' > tripwire_not_found.txt
存在しないファイルをチェック対象から外す
twpol.php を使って、存在しないファイルをチェック対象から外す
# php twpol.php > twpol.txt
/root, /var/log も、チェックされたら五月蝿いのでコメントアウト
# vim twpol.txt
diff を取ってみる
# diff /etc/tripwire/twpol.txt twpol.txt | less
その後、
# mv twpol.txt /etc/tripwire/.
twpol.php
<?php
// /etc/tripwire/twpol.txt の不要なパスを含む行をコメントアウトするやつ
$paths = array();
$pf = fopen('./tripwire_not_found.txt', 'r');
for (; $path = fgets($pf); )
{
$path = trim($path);
$paths[$path] = TRUE;
}
fclose($pf);
$pf = fopen('/etc/tripwire/twpol.txt', 'r');
for (; $line = fgets($pf); )
{
foreach ($paths as $path => $value)
{
if (preg_match("'^[ \t]*{$path}'", $line))
{
echo '#';
break;
}
}
echo $line;
}
fclose($pf);
ポリシー・ファイルの作り直し
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
改竄チェック自動実行用スクリプトの削除
標準のスクリプトでは改竄を検出してもメールが来ないので、
# rm /etc/cron.daily/tripwire-check
改竄チェック用データの作り直し
# tripwire --init
改竄チェックスクリプト(bash)の作成
tripwire_check.sh という名前のファイルを作成し、実行許可を与える
tripwire_check.sh の中身
tripwire_check.sh
#!/bin/bash
dir=`dirname $0`
cd $dir
output="./tripwire.out"
hostname=`hostname`
cat << EOS > $output
From: Tripwire <root@$hostname>
To: hoge@hoge.co.jp ← アドレスは適当に変更
Subject: Detected intrusion!
Host name: $hostname
EOS
/usr/sbin/tripwire --check >> $output 2>&1
status=$?
if [ 0 -lt $status ]; then
/usr/sbin/sendmail -t < $output
fi
exit 0
チェックを手動で実行してみる
# ./tripwire_check.sh
チェック対象ディレクトリ、ファイルに何らかの変化があれば「改竄!」と報告される。
問題のない変化なら tripwire --init を実行すれば報告は来なくなる。
改竄チェックの自動実行
# crontab -e
11 7 * * * /root/projects/tripwire/tripwire_check.sh ← パスは適当に変更