AIDEでファイルの整合性をチェックする方法について記載します。
Table of Contents
1 AIDEをインストールする前に
あらかじめこちらの手順でPostfixをインストールしておきます。
2 AIDEのインストール
aideパッケージをインストールします。
$ sudo dnf install -y aide
3 データベースの作成
"aide –init"でaide.db.new.gzが作成されます。それをaide.db.gzへコピーする必要があります。
$ sudo aide --init. $ sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
4 ファイルの整合性をチェックする
aide –checkでファイルの整合性をチェックします。aide –updateでファイルの整合性をチェックしつつ、新たなデータベースaide.db.new.gzを作成します。aide.db.gzへのコピーが必要です。
$ 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 dnf install -y mailx liblockfile $ cat <<EOF | sudo tee /etc/cron.daily/aide #!/bin/sh LOCK_FILE=/var/run/aide.lock MAIL_ADDR=root@localhost dotlockfile -p \${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.gz /var/lib/aide/aide.db.gz 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.gz /var/lib/aide/aide.db.gz else # Cannot update database. cat \${TMP} | mail -s "AIDE fatal error" \${MAIL_ADDR} fi dotlockfile -u \${LOCK_FILE} EOF $ sudo chmod a+x /etc/cron.daily/aide