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

## AIDE
[AIDE](http://aide.sourceforge.net/) はホスト型侵入検知システム (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](http://qiita.com/bezeklik/items/298dafd2aeb053b4ca88) 3.6.0 (2017/12/08) - SourceForge に rpm パッケージがある。
* [AIDE](http://qiita.com/bezeklik/items/d144d77a3e54cd35c06b) 0.16 (2016/07/25) - CentOS の Base リポジトリにある。
* [OSSEC](http://qiita.com/bezeklik/items/2143c02f1432d90f5c38)  3.0beta01 (2018/02/27) - inotify 対応。Atomic リポジトリにある。
* [Samhain](http://qiita.com/bezeklik/items/6b7fb75f1a37b0fc41a2) 4.2.4 (2017/12/21) - inotify 対応。コンパイル必須。
* [Tripwire](http://qiita.com/bezeklik/items/2dfb871b9397211c735b) 2.4.3.6 (2017/10/02) - EPEL リポジトリにある。

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

# 初期化
```bash
aide --init
```
```text:出力例
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
```bash
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
```
```text:出力例
AIDE, version 0.15.1

### All files match AIDE database. Looks okay!
```
やはり1分前後かかる。 `aide -C` でも同様。

## 検査と更新
```bash
aide --update
mv --force /var/lib/aide/aide.db{.new,}.gz
```
```text:出力例
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) [^ctime] |
| 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 のみ) |

[^ctime]: http://x68000.q-e-d.net/~68user/unix/pickup?%A5%BF%A5%A4%A5%E0%A5%B9%A5%BF%A5%F3%A5%D7

## デフォルトルール
| ルール         | 内容 |
|---------------|---|
| 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](http://qiita.com/bezeklik/items/5e8b1f76465e39dc6cd0)
* [DoS攻撃/ブルートフォース攻撃対策アプリの近況](http://qiita.com/bezeklik/items/6d86a162e278f576e4ca)
* [Linuxアンチウイルスソフト ClamAV](http://qiita.com/bezeklik/items/4696e15c889ffff6bc41)
* [Linux Malware Detect](http://qiita.com/bezeklik/items/43a7d4fce6bc23fe84d3)
* [ルートキット検出ツール Rootkit Hunter (rkhunter)](http://qiita.com/bezeklik/items/bc7affef8afe7c63f2ce)
* [ルートキット検出ツール chkrootkit](http://qiita.com/bezeklik/items/7964ce67f1a1363b694e)
* [ファイル改ざん検知ツール AFICK](http://qiita.com/bezeklik/items/298dafd2aeb053b4ca88)
* [ファイル改ざん検知ツール AIDE](http://qiita.com/bezeklik/items/d144d77a3e54cd35c06b)
* [脆弱性スキャナー OpenVAS](http://qiita.com/bezeklik/items/a64cad37eb03a1db2de4)
* [Linuxセキュリティ監査ツール Lynis](http://qiita.com/bezeklik/items/cf9be2deb546c69123e7)