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