こんにちは!
松田です!
爆速で2月になりましたね。
時間は容赦してくれません。
昨年の6月に登場した「Amazon GuardDuty Malware Protection for Amazon S3」をようやく実際に導入しました。
なので、機能についてと使用感を本記事にて紹介させていただきます。
GuardDuty Malware Protection for S3とは
GuardDuty Malware Protection for S3はS3バケットにアップロードされたオブジェクトを自動的にスキャンし、マルウェアを検出する
というGuardDutyの機能の1つです。GuardDutyの機能の一つなので、SecurityHubとの連携も容易です。マルウェアを検出したら、SecurityHub/EventBridgeと連携して、運用者へ通知するようなユースケースが想定されます。
AWSユーザガイド : GuardDuty Malware Protection for S3
S3 Protectionとの違い
GuardDutyには「GuardDuty S3 Protection」という機能もあります。
名前が似ているので紛らわしいですが、Malware Protection for S3とは全くの別物です。
S3 ProtectionはS3バケットに対する不正な操作を検出する機能です。具体的に言うとCloudTrailログのS3へのAPIアクセスを監視して、機械学習によって不正な操作を検知します。
まとめると
機能 | 目的 | 検出対象 | 検出方法 |
---|---|---|---|
S3 Protection | S3バケットへの不正な操作を検出する | CloudTrailログ | 機械学習に基づく |
Malware Protection for S3 | S3バケット内のオブジェクトのマルウェアを検出する | オブジェクトファイル | スキャンエンジンに基づく |
混同しないように注意しましょう。
Malware Protection for S3の深掘り
Malware Protection for S3の仕様についてもう少し詳細に見ていきます。
できること
Malware Protection for S3の機能単体でできることをざっくり言うと以下の通りです。
- オブジェクトに対するマルウェアスキャン
- スキャン範囲の指定
- バケット単位でスキャン対象を指定可能
- プレフィックスなどで対象オブジェクトをフィルタリングすることも可能
- マルウェア検出したオブジェクトへタグ付け(キーがGuardDutyMalwareScanStatusで、値が検出結果)
- オブジェクトがアップロードされたタイミングでのスキャン実行
逆に以下のことは機能単体ではできません。
- スキャン対象の除外フィルタリング
- オンデマンドスキャン
- マルウェアを検出したオブジェクトの隔離
オブジェクトの隔離はEventBridgeで隔離を実行するLambdaをキックすれば実装はできそうですね。
ちなみに以前、S3のマルウェア対策として「Cloud Storage Security Antivirus for Amazon S3」という製品を利用していました。
この製品ではスキャン対象の除外フィルタリング/オンデマンドスキャン/マルウェアを検出したオブジェクトの隔離が可能でした。
今後アップデートがあるかもしれませんが、Malware Protection for S3ではできることは最低限な印象です。
「Cloud Storage Security Antivirus for Amazon S3」については以下ブログで紹介されていますので、ぜひご参照ください。
料金
東京リージョンの価格は以下の通りです。
スキャン対象のオブジェクトのサイズと数に基づいた料金が発生します。
※このブログを書く直前に大幅値下げされたとのアップデートがありました。なんてタイミング。。。
Amazon GuardDuty Malware Protection for S3 announces price reduction
単位 | 料金 |
---|---|
スキャンされるオブジェクトサイズ(GB/月) | USD0.1185/GB |
スキャンされるオブジェクト数(数/月) | USD0.2825/1000個のオブジェクト |
これとは別に1年間限定の無料枠があります。詳細についてドキュメントをご参照ください。
スキャンの仕組み
スキャン実行までの流れ
- 検知 : GuardDutyはEventBridge経由で対象S3バケットにオブジェクトがアップロードされたことを検知する
- スキャン環境へコピー : PrivateLink経由でオブジェクトをダウンロードし、隔離されたスキャン環境(リージョン内のインターネットアクセスがないAWS管理下のVPC)にオブジェクトのコピーを保存する
- スキャン実行 : スキャン環境にてオブジェクトの読み取り、複合化、スキャンを実行する
- コピーオブジェクトの削除 : スキャンが完了したら、コピーオブジェクトを削除する
AWSユーザガイド : How does Malware Protection for S3 work?
スキャンエンジン
具体的にどのスキャンエンジンを利用しているかについては明記されていません。(おそらくセキュリティの観点から)
ただユーザガイドには以下の記述があります。
Amazon GuardDuty has an internally built and managed scan engine and a third-party vendor
The fully managed GuardDuty scan engine continuously updates the list of malware signatures every 15 minutes.
AWSユーザガイド : GuardDuty malware detection scan engine
記述から以下のことがわかります。
- AWS独自のエンジンとサードパーティーエンジン(Bitdefenderなど)を利用している
- シグネチャ(コンピュータウイルスやマルウェアを特定するための識別情報(パターン))の取得は15分ごとに行われる
実際に利用する
Malware Protection for S3を有効にして、マルウェアファイルの検出がどのように行われるかを実際に見ていこうと思います。
有効化
マネジメントコンソールにログインして、GuardDutyの画面から「S3 の Malware Protection」をクリックします。
そして、「S3 の Malware Protection」をクリックします。
スキャン対象のバケットとプレフィックスを指定します。(今回はプレフィックスは指定していません)
スキャン結果タグをオブジェクトに付与するかを選択します。
サービスロールを指定します。今回は新しいサービスロールを作成することにします。
この設定で有効化します。
有効化できたようです。
スキャン対象にしたS3バケットを見てみると、malware-protection-resource-validation-object
というオブジェクトができていました。
どうやらMalware Protection for S3の対象バケットには、このテスト用オブジェクトが作成されるようです。
動作確認
マルウェアのテストファイルであるEICARテストファイルをS3バケットにアップロードします。
https://downloadcenter.trendmicro.com/index.php?regs=jp&prodid=1424&ossl=2
上記リンクからeicar.comをダウンロードして、S3にアップロードします。
1分も経たないうちに検出されました。
オブジェクト(eicar.com)をみると、検出結果タグが付与されていることがわかります。
最後に
以上、Malware Protection for S3の機能説明と使用感の共有でした。
機能単体ではあくまで検出までしかできないので、それを運用者への通知などはEventBridgeやSNS/Chatbotを利用して実装する必要があります。
ただ導入が非常に簡単でコストも控えめなので、前向きに利用を検討する機能だと思います。
では。