AIDEでファイルの整合性をチェックする方法について記載します。
Table of Contents
1 AIDEをインストールする前に
あらかじめこちらの手順でPostfixをインストールしておきます。
2 AIDEのインストール
aideパッケージをインストールします。
> sudo zypper -n in aide > sudo sed -e 's/^verbose=.*/verbose=5/g' -i /etc/aide.conf
3 データベースの作成
"aide –init"でaide.db.newが作成されます。それをaide.dbへコピーする必要があります。
> sudo aide --init. > sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
4 ファイルの整合性をチェックする
aide –checkでファイルの整合性をチェックします。 aide –updateでファイルの整合性をチェックしつつ、新たなデータベース aide.db.newを作成します。aide.dbへのコピーが必要です。
> sudo aide --check <snip> > echo $? 0
ファイルに変更があった場合は戻り値が0以外の値になります。
> sudo mv /usr/sbin/ip /usr/sbin/ip.orig > echo "modified" | sudo tee /usr/sbin/ip > sudo aide --check <snip> > echo $? 4
5 aideを実行するcronジョブ
cronジョブは用意されていないので、独自に作成する必要があります。この記事では、"aide –update"を実行し、エラーがあった場合にメール送信するcronジョブを作成します。
> sudo zypper -n in mailx procmail
> cat <<EOF | sudo tee /etc/cron.daily/aide
#!/bin/sh
LOCK_FILE=/var/run/aide.lock
MAIL_ADDR=root@localhost
lockfile \${LOCK_FILE} || exit 1
TMP=\$(mktemp -t aide.XXXXXX)
trap "rm \$TMP* 2>/dev/null" 0
aide --update > \${TMP} 2>&1
ret=\$?
if [ \${ret} -eq 0 ]; then
# Nothing is changed.
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
elif [ \${ret} -lt 8 ]; then
# Some file is changed.
cat \${TMP} | mail -s "AIDE detects changes" \${MAIL_ADDR}
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
else
# Cannot update database.
cat \${TMP} | mail -s "AIDE fatal error" \${MAIL_ADDR}
fi
rm -f \${LOCK_FILE}
EOF
> sudo chmod a+x /etc/cron.daily/aide