
【保存版】AWS そのCloudTrailのログ、改ざんされていませんか?
こんにちは、CryptoGamesの高橋です。
クリスペというサービスを行っている会社です。
本日は、CLI(コマンドラインインターフェース)を使って、CloudTraiのログが改ざん・削除がされていないかの検証方法を見ていきます。
こちらの公式に沿って進めていきます。
はじめる前に
CloudTrailやS3には料金がかかります。
事前に確認を行い、テスト終了後は最終章のクリーンアップを忘れずに行なうようにお願いします。
1 証跡を作成しよう
まずは証跡を作成しましょう。
CloudTrailから「証跡の作成」を選択

「証跡名」に任意の名前を入れて

「AWS KMSエイリアス」にも任意の名前を入れます。
ここで注目は「ログファイルの検証」がデフォルトで「有効」になっているところです。
これにより、検証を行うことができます。

「データイベント」にチェックを入れて(今回のケースでは入れなくても大丈夫そう。)

「データイベントタイプ」を「S3」にして、「次へ」

最後に「証跡の作成」で証跡が作れます。

このように作成が完了しました。
下のリソースネームとログの格納場所を使うことになります。

2 S3を操作しよう(ただ、今回はなくても大丈夫そうです)
今回はS3内での操作がデータイベントとして記録されます。
適当にS3を操作してください。(ただ、今回の検証にはなくても大丈夫そうです。)
もしご不明な場合は、こちらの第3章の操作を行ってください。
3 ログファイルの整合性を検証する
3ー1 CloudTrai-Digestがまだない(No digests found)
では、CLI(コマンドラインインターフェース)を実行しましょう。
CLI、特に --profile部分などがご不明の場合は、こちらをご参照ください。
aws cloudtrail validate-logs --trail-arn <リソース名> --start-time <時間> --profile <profile名>
--trail-arnには第1章の最後で出てきた、リソース名を、--start-timeではいつのログから検証するのかを入力します。
コマンドはこれで良いのですが、「No digests found」となるかもしれません。

これは、下の、「CloudTrai-Digest」にまだファイルが格納されていないことを表しています。

格納されるまで、ある程度時間がかかります。
私の場合は30分程度かかったイメージです。(正確には時間を見ていませんが。)
3ー2 CloudTrai-Digest作成後、ログの改ざんなし(valid)
では、CloudTrai-Digest内にログが作成後にもう一度コマンドを叩いてみましょう。
aws cloudtrail validate-logs --trail-arn <リソース名> --start-time <時間> --profile <profile名>
下のようになりました。
Digestファイル、ログが共に改ざんされていないことを示しています。

3ー3 CloudTrai-Digest作成後、ログの改ざんあり(invalid)
では、まずログファイルの内容を改ざんしてみようと思います。
※迷った末、その方法をここに載せるのはやめることにしました。ただ、簡単にできると思います。
再び、コマンドを叩いてみましょう。
aws cloudtrail validate-logs --trail-arn <リソース名> --start-time <時間> --profile <profile名>
すると下のようになりました。
「INVALID: hash value doesn't match」と出て、該当のファイルが改ざんされていることを示しています。

3ー4 CloudTrai-Digest作成後、ログの削除あり(invalid)
では、下のように削除が行われたらどうでしょう?
都合の悪いログを消されてしまうこともあり得ますね。

すると、このようになりました。
「INVALID: not found」となり、特定のファイルが削除されたことを示しています。

4 クリーンアップを行おう
最後にテストが終わりましたら、継続的に料金が発生しないように、不要なデータは削除しましょう。
もしやり方がご不明なら、これらの記事の最終章をご確認ください。
◎S3のクリーンアップ
◎CloudTrailのクリーンアップ
今回は以上です。
最後までありがとうございました。
いいなと思ったら応援しよう!
