AWS EC2(AmazonLinux2)に改ざん検知ツール(AIDE)を導入する手順


## 0.IAMユーザー作成 (AWS Management Console)

CloudWatchを利用できるポリシーをアタッチした
IAMユーザーを作成しアクセスキー、シークレットアクセスキーを取得する
※EC2インスタンスにロールを付与する方法でも可能と思います。

```
適用ポリシー:CloudWatchFullAccess,CloudWatchLogsFullAccess

アクセスキーID：
*

シークレットアクセスキー：
*

```

## 1.AWS CLI インストール (EC2)

インストールされていなければ実施

```
#yum install awscli
#aws --version
```

## 2.AWS CLI クレデンシャル情報設定(EC2)

今回は、aws configureは実施しませんでした。
管理者ユーザーで以下、設定を実施

```
# mkdir .aws
# vi /root/.aws/config
[default]
output = json
region = ap-northeast-1


# vi /root/.aws/credentials
[default]
aws_access_key_id = *
aws_secret_access_key = *
```

## 3. AIDEインストール(EC2)

```
#yum install aide
```

## 4. AIDE設定(EC2)

監視対象ディレクトリ、監視除外ディレクトリの設定を追加する。
(除外指定は先頭に!を付与)

```
# vi /etc/aide.conf
略
```

AIDEデータベース作成およびコピー

```
# aide --init
Start timestamp: 2020-12-15 19:08:14 +0900 (AIDE 0.16.2)
AIDE initialized database at /var/lib/aide/aide.db.new.gz

Number of entries:      65201

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.new.gz
  MD5      : 
  SHA1     : 
  RMD160   : 
  TIGER    : 
  SHA256   : 
  SHA512   : 


End timestamp: 2020-12-15 19:08:58 +0900 (run time: 0m 44s)

# cp -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
```

## 5. 監視用シェルスクリプト作成(EC2)

```
# vi AideDetect.sh
----------------------
#!/bin/bash
export AWS_SHARED_CREDENTIALS_FILE=/root/.aws/credentials
LOGFILE=/var/log/aide/aide.log
AIDEDIR=/var/lib/aide

# 2重起動防止
OLDEST=$(pgrep -fo $0)
if [ $$ != $OLDEST ] && [ $PPID != $OLDEST ]; then
    echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。"
    exit 1
fi

# LOG BACKUP
\cp -f  $LOGFILE $LOGFILE.`date +%Y%m%d%H%M`
find /var/log/aide/ -name 'aide.log*' -mtime +30 -exec rm {} \;

/usr/sbin/aide  -u > $LOGFILE
\cp -f $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz

isDifferent=$(grep "Looks okay" $LOGFILE | wc -l)
if [ $isDifferent -eq 1 ]
then
# OK
# Push Custom Metrics
aws cloudwatch put-metric-data --metric-name added --dimensions Instance=インスタンス名 --namespace "AIDE" --value 0
aws cloudwatch put-metric-data --metric-name changed --dimensions Instance=インスタンス名 --namespace "AIDE" --value 0
aws cloudwatch put-metric-data --metric-name removed --dimensions Instance=インスタンス名 --namespace "AIDE" --value 0
else
# DETECTED
# Shape data
added=$(cat $LOGFILE | grep "Added entries:" | sed s/[^0-9]//g)
changed=$(cat $LOGFILE | grep "Changed entries:" | sed s/[^0-9]//g)
removed=$(cat $LOGFILE | grep "Removed entries:" | sed s/[^0-9]//g)

# Push Custom Metrics
aws cloudwatch put-metric-data --metric-name added --dimensions Instance=インスタンス名 --namespace "AIDE" --value $added
aws cloudwatch put-metric-data --metric-name changed --dimensions Instance=インスタンス名 --namespace "AIDE" --value $changed
aws cloudwatch put-metric-data --metric-name removed --dimensions Instance=インスタンス名 --namespace "AIDE" --value $removed
fi
--------------------------

#chmod 755 AideDetect.sh

```

AideDetect.shを実行する。/var/log/aide/aide.logやCloudWatchへ書き込めているか確認

## 6. cron設定(EC2)

例)1時間毎(0分開始)にAideDetect.shを実行する設定

```
# crontab -e

00 * * * *  /パス/AideDetect.sh > /dev/null 2>&1
```

参考情報：
AIDEの改ざん検知結果をCLOUDWATCHカスタムメトリクスで取得する
https://blog.denet.co.jp/aide_cloudwatch/

----

### AIDEの設定を変更する場合

#### 1.cron実行の停止

#### 2.設定ファイルの更新
vi /etc/aide.conf

#### 3.aide初期化 
aide --init

#### 4.データベースファイルのコピー
cp -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

#### 5.cron実行の再開