Linux
CentOS
セキュリティ
AIDE

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


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


セキュリティ関連記事