LoginSignup
47
59

More than 5 years have passed since last update.

ファイル改ざん検知ツール AIDE

Last updated at Posted at 2016-08-08

AIDE

AIDE はホスト型侵入検知システム (HIDS: Host-based Intrusion Detection System) のひとつ。ファイルの差分を確認することで改竄を検知する。

RHEL / CentOS では標準リポジトリからインストールできる。

最新版は 2016/07/25 リリースの AIDE 0.16 で 0.15.1 から6年ぶりのアップデートだったが、その後のリリースはない。

機能

  • サポートされているメッセージダイジェストアルゴリズム: md5, sha1, rmd160, tiger, crc32, sha256, sha512, whirlpool (加えて libmhash があれば: gost, haval, crc32b)
  • サポートされているファイル属性: ファイル種別, パーミッション, iノード, Uid, Gid, リンク名, サイズ, ブロックカウント, リンク数, Mtime, Ctime, Atime
  • Posix ACL, SELinux, XAttrs, 拡張ファイルシステム属性(もしサポートがコンパイルされていれば)
  • 簡潔にするための平易なテキストの設定ファイルとデータベース
  • 監視するファイルとディレクトリを選択的に含有、除外する強力な正規表現をサポート
  • gzipデータベース圧縮(zlibのサポートがコンパイルされていれば)
  • 簡易クライアント/サーバーモニタリング設定のためのスタンドアローンの静的バイナリー

HIDS

AIDE を含む主な HIDS は以下の通り。

  • AFICK 3.6.0 (2017/12/08) - SourceForge に rpm パッケージがある。
  • AIDE 0.16 (2016/07/25) - CentOS の Base リポジトリにある。
  • OSSEC 3.0beta01 (2018/02/27) - inotify 対応。Atomic リポジトリにある。
  • Samhain 4.2.4 (2017/12/21) - inotify 対応。コンパイル必須。
  • Tripwire 2.4.3.6 (2017/10/02) - EPEL リポジトリにある。

インストール

yum -y install aide

CentOS の Base リポジトリでインストールできるが、バージョンは CentOS 7 だと 2010/09/13 リリースの AIDE 0.15.1 に、 CentOS 6 だと 2010/03/16 リリースの AIDE 0.14 なる。

初期化

aide --init
出力例
AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

比較的クリーンな環境でも1分前後かかる。 aide -i でも同様。

mv /var/lib/aide/aide.db{.new,}.gz

デフォルト設定ではデータベースファイルは上書きされないため、手動で差し替える必要がある。

cron

curl -sL https://github.com/duritong/puppet-aide/raw/master/files/CentOS/{aide.cron} -o /etc/cron.daily/#1 && chmod +x /etc/cron.daily/aide.cron

定期実行のためのスクリプトは用意されていないので、上記を拝借する。一部手直しが必要。(TODO)

検査

aide --check
出力例
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

やはり1分前後かかる。 aide -C でも同様。

検査と更新

aide --update
mv --force /var/lib/aide/aide.db{.new,}.gz
出力例
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

### New AIDE database written to /var/lib/aide/aide.db.new.gz

--check--init が同時に実行される。 aide -u でも同様。
時間はプラス10秒程度なので、個別に実行するよりこちらの方がリソースを食わない。

設定ファイル

デフォルト設定

/etc/aide.conf
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.new.gz
gzip_dbout=yes
verbose=5
report_url=file:@@{LOGDIR}/aide.log
report_url=stdout
FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
EVERYTHING = R+ALLXTRAHASHES
NORMAL = FIPSR+sha512
DIR = p+i+n+u+g+acl+selinux+xattrs
PERMS = p+i+u+g+acl+selinux
LOG = >
LSPP = FIPSR+sha512
DATAONLY =  p+n+u+g+s+acl+selinux+xattrs+sha256
/boot   NORMAL
/bin    NORMAL
/sbin   NORMAL
/lib    NORMAL
/lib64  NORMAL
/opt    NORMAL
/usr    NORMAL
/root   NORMAL
/etc    PERMS
/etc/exports  NORMAL
/etc/fstab    NORMAL
/etc/passwd   NORMAL
/etc/group    NORMAL
/etc/gshadow  NORMAL
/etc/shadow   NORMAL
/etc/security/opasswd   NORMAL
/etc/hosts.allow   NORMAL
/etc/hosts.deny    NORMAL
/etc/sudoers NORMAL
/etc/skel NORMAL
/etc/logrotate.d NORMAL
/etc/resolv.conf DATAONLY
/etc/nscd.conf NORMAL
/etc/securetty NORMAL
/etc/profile NORMAL
/etc/bashrc NORMAL
/etc/bash_completion.d/ NORMAL
/etc/login.defs NORMAL
/etc/zprofile NORMAL
/etc/zshrc NORMAL
/etc/zlogin NORMAL
/etc/zlogout NORMAL
/etc/profile.d/ NORMAL
/etc/X11/ NORMAL
/etc/yum.conf NORMAL
/etc/yumex.conf NORMAL
/etc/yumex.profiles.conf NORMAL
/etc/yum/ NORMAL
/etc/yum.repos.d/ NORMAL
/var/log   LOG
/var/run/utmp LOG
/etc/audit/ LSPP
/etc/libaudit.conf LSPP
/usr/sbin/stunnel LSPP
/var/spool/at LSPP
/etc/at.allow LSPP
/etc/at.deny LSPP
/etc/cron.allow LSPP
/etc/cron.deny LSPP
/etc/cron.d/ LSPP
/etc/cron.daily/ LSPP
/etc/cron.hourly/ LSPP
/etc/cron.monthly/ LSPP
/etc/cron.weekly/ LSPP
/etc/crontab LSPP
/var/spool/cron/root LSPP
/etc/login.defs LSPP
/etc/securetty LSPP
/var/log/faillog LSPP
/var/log/lastlog LSPP
/etc/hosts LSPP
/etc/sysconfig LSPP
/etc/inittab LSPP
/etc/grub/ LSPP
/etc/rc.d LSPP
/etc/ld.so.conf LSPP
/etc/localtime LSPP
/etc/sysctl.conf LSPP
/etc/modprobe.conf LSPP
/etc/pam.d LSPP
/etc/security LSPP
/etc/aliases LSPP
/etc/postfix LSPP
/etc/ssh/sshd_config LSPP
/etc/ssh/ssh_config LSPP
/etc/stunnel LSPP
/etc/vsftpd.ftpusers LSPP
/etc/vsftpd LSPP
/etc/issue LSPP
/etc/issue.net LSPP
/etc/cups LSPP
/root/\..* PERMS
!/usr/src
!/usr/tmp
!/etc/mtab
!/etc/.*~
!/var/log/sa
!/var/log/aide.log
!/var/log/and-httpd

ルールパターン

パターン 内容
p パーミッション
i iノード
n リンク数
u ユーザー
g グループ
s サイズ
b ブロックカウント
m 最終更新日時 (mtime)
a 最終アクセス日時 (atime)
c 最終ステータス変更日時 (ctime) 1
S 増大するサイズのチェック
acl アクセスコントロールリスト
selinux SELinux セキュリティコンテキスト
xattrs 拡張ファイル属性
md5 md5 チェックサム
sha1 sha1 チェックサム
sha256 sha256 チェックサム
sha512 sha512 チェックサム
rmd160 rmd160 チェックサム
tiger tiger チェックサム
haval haval チェックサム (MHASH のみ)
gost gost チェックサム (MHASH のみ)
crc32 crc32 チェックサム (MHASH のみ)
whirlpool whirlpool チェックサム (MHASH のみ)

デフォルトルール

ルール 内容
FIPSR p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
R p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5
L p+i+n+u+g+acl+selinux+xattrs
E Empty group
> Growing logfile p+u+g+i+n+S+acl+selinux+xattrs
ALLXTRAHASHES sha1+rmd160+sha256+sha512+tiger
EVERYTHING R+ALLXTRAHASHES
NORMAL FIPSR+sha512
DIR p+i+n+u+g+acl+selinux+xattrs
PERMS p+i+u+g+acl+selinux
LOG >
LSPP FIPSR+sha512
DATAONLY p+n+u+g+s+acl+selinux+xattrs+sha256

セキュリティ関連記事

47
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
59