LoginSignup
0
3

More than 3 years have passed since last update.

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

Posted at

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実行の再開

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3