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秒程度なので、個別に実行するよりこちらの方がリソースを食わない。
設定ファイル
デフォルト設定
@@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 |
セキュリティ関連記事
- PHPセキュリティ強化モジュール Suhosin
- DoS攻撃/ブルートフォース攻撃対策アプリの近況
- Linuxアンチウイルスソフト ClamAV
- Linux Malware Detect
- ルートキット検出ツール Rootkit Hunter (rkhunter)
- ルートキット検出ツール chkrootkit
- ファイル改ざん検知ツール AFICK
- ファイル改ざん検知ツール AIDE
- 脆弱性スキャナー OpenVAS
- Linuxセキュリティ監査ツール Lynis