TOP>コラム一覧>Amazon GuardDutyでAmazon S3バケットをマルウェアから保護する

Amazon GuardDutyでAmazon S3バケットをマルウェアから保護する

はじめに

こんにちは。CTCの近藤です。
AmazonS3バケットにアップロードされるファイルのマルウェア対策はされていますか?
本記事では、AWS re:Inforce 2024のKeynote内でGuardDutyの新機能として発表された「Malware Protection for Amazon S3」でAmazon S3バケットをマルウェアから保護する方法についてご紹介します。

Amazon GuardDuty Malware Protection for Amazon S3とは

従来Amazon S3上のマルウェア検知にはTrend Micro社の「Cloud One - File Storage Security(C1FSS)」やCSS社の「Antivirus for Amazon S3」といったサードパーティ製品を使用する必要がありましたが、今回の「Malware Protection for Amazon S3」を利用することによりサードパーティ製品を使用せず、GuardDutyで同様のマルウェア検知を行えるようになりました!

利用コスト

「Malware Protection for Amazon S3」の利用コストをTrend Micro社の「C1FSS」と比較しながら紹介いたします。


Amazon GuardDuty Malware Protection for Amazon S3

主に検査したオブジェクトサイズとオブジェクトの数に対してコストがかかります。

課金単位 料金
オブジェクトサイズ $ 0.79/GB
オブジェクト数 $ 0.282/1k objects

※上記表のコストの他オブジェクトに対する検査結果のタグ付けにも別途少額のコストが発生します。


Cloud One - File Storage Security(C1FSS)

主にC1FSSは1時間当たりのスキャン数に応じてコストがかかります。

スキャン数(1時間当たり) 料金(1時間当たり)
1-20ファイル $ 0.00/h
21-200ファイル $ 0.40/h
201-400ファイル $ 0.60/h
401ファイル以上 $ 1.10/h

個人的見解ですが、オブジェクト数は少ないが、オブジェクトサイズが非常に大きい場合は、C1FSSの方がコスト的にも良いと思います。また、C1FSSはサーバレスかつS3アップロード時のみ動作します。

Malware Protection for S3利用手順

  1. 1. GuardDutyの画面から「S3のMalwareProtection」を選択し、[今すぐ始める]を押します。
    ※既にGuardDutyを有効化している場合はこの画面は表示されません。


  2. 2. GuardDutyの左カラム内の「保護プラン」の中に「S3のMalwareProtection」を選択し、「有効にする」を選択します。


  3. 3. 検査を行いたいS3バケットを「S3を参照」から選択します。


  4. 4. 今回は検証用に「guardduty-malware-test」というバケットを作成し、選択します。
    ※バケットとGuardDutyのリージョンが異なると表示されません


  5. 5. 「スキャンされたオブジェクトにタグを付ける」では、基本的にタグを付けるを選択します。
    ※後ほど記述していますが、スキャン結果がタグに登録されます


  6. 6. S3 MlwareProtection で利用するIAMロールを選択します。
    ここでは、S3内のデータをスキャンする必要がある為GuardDuty用のロールとは別のロールを基本的に作成する必要があります。
    また、「アクセス許可を表示」を選択すると選択済みのS3バケット用のパラメータが表示されるのでコピーを行います。




  7. 7. IAMロールを作成します。ここでは「カスタム信頼ポリシー」を選択し、上記でコピーを行った信頼ポリシーをコピー&ペーストします。


  8. 8. ポリシーはここではアタッチせず、ロール名をどのS3バケット用か分かりやすい名前で作成します。


  9. 9. ロール作成完了後、「インラインポリシーを作成」を選択し、許可ポリシーを作成します。


  10. 10. ここでも上記でコピーを行った許可ポリシーをコピペします。
    注意点として、S3バケットでKMSKeyを使用している場合はIDを置き換え、SSE-S3を使用している場合は、画像の青い部分を削除し許可ポリシーを作成してください。






  11. 11. IAMロールの設定が終わったら、先ほどの画面に戻りIAMロールを選択し、「有効にする」からプランを作成します。


これでマルウェア検知の設定が完了です

プランを選択すると、CloudWatcのメトリクスも表示されていることを確認できます。

マルウェア検知を試してみる

ここでは、設定したマルウェア検知がどのように表示されるのか、また検知を行ってくれるのか見ていきます。
今回は安全なファイルとしてテキストファイルの入ったZIPフォルダと、マルウェア検査で用いられるEICARを用いて検証します。


事前準備

マルウェア検知を検証する為に、安全なデータと検出用疑似マルウェア(EICAR)を準備します。

安全なデータ

テキストファイルが入った「Test」という名前のZipファイルを作成します。
以下コマンドにてCloudShellで今回は作成し、S3へアップロードしています。


  #テストフォルダの作成
  $ mkdir test
  $ cd test
  
  #テストテキストファイルの作成
  test$ vim test.txt
  test$  cd ..
  
  #テストフォルダのZIP化
  $ zip -r test.zip test
  
  #S3へアップロード
  $aws s3 cp test.zip s3://~~/test.zip

検出用疑似マルウェア(EICAR)

EICARはセキュリティソフトの脅威検地を模擬する為に作成されたテスト用ファイルです。
以下コマンドにてCloudShellでダウンロード及び、S3へアップロードしています。


  #EICARのダウンロード
  $ wget https://secure.eicar.org/eicar_com.zip
  
  #S3へアップロード
  $aws s3 cp eicar_com.zip s3://~~/eicar_com.zip  



※アップロードを行うと、CloudWatchのスキャンの数グラフに反映されていることが確認できます。


検出結果を確認する

保護プランを作成した段階で、テスト用のオブジェクトが作成され、アップロードされたタイミングで、「validation-object」フォルダが作成されています。
アップロードしたファイルはこの「validation-object」フォルダ内に格納されます。



安全なデータの確認

保護プラン作成時にタグ付与を選択している為、マルウェア検出結果はオブジェクトのタグに付与されます。
安全なデータ「test.zip」の詳細画面からタグを確認します。

「GuardDutyMalwareScanStatus」が「NO_THREATS_FOUND」であるというタグが付与されています。
検査結果のタグには以下のステータスがあります。

ステータス 内容
NO_THREATS_FOUND 安全なファイル
THREATS_FOUND マルウェアである可能性があるファイル
UNSUPPORTED サイズの上限の問題で、スキャンが出来なかったファイル
ACCESS_DENIED アクセス権限がなく、スキャン出来なかったファイル

検出用疑似マルウェア(EICAR)の確認

安全なデータ同様に、詳細画面から確認します。
「GuardDutyMalwareScanStatus」が「THREATS_FOUND」であるというタグ付与され、検出がされていることを確認できます。

また、GuardDutyを有効化している場合は、検出結果画面に「Object:S3/MaliciousFile」という検出結果タイプで検出され、確認が可能です。

本機能の特徴と注意点

特徴

  • GuardDutyは基本的に”AWS環境全体(リージョン単位)”で有効化しますが、「Malware Protection for Amazon S3」はGuardDutyのすべての機能を有効化することなく、単体で利用が可能です。
  • GuardDutyは検出のみに対応したサービスですが、「Malware Protection for Amazon S3」ではS3オブジェクトのタグベースのアクセスコントロール(TBAC)でブロックの実装が可能です。

注意点(2024/12時点)

  • スキャン可能な最大オブジェクトサイズは5GB
  • 有効化できるS3バケット数は最大25バケット

まとめ

いかがでしょうか。
本記事では、「Malware Protection for Amazon S3」でS3バケットにアップロードされたオブジェクトのマルウェアスキャンの設定方法及びその動作について見ていきました。
本機能ではマルウェアの可能性があるファイルの隔離や、付与される「GuardDutyMalwareScanStatus」タグを利用したタグベースのアクセスコントロールでブロックを行うことが可能です。
アクセスコントロールによるブロックについては以下のAWSの公式ドキュメントに記載されております。

https://aws.amazon.com/jp/about-aws/whats-new/2024/06/detect-malware-object-uploads-amazon-s3-guardduty/

今回紹介した機能の登場により、従来はサードパーティ製品を使用する必要がありましたがAWSのサービスだけでマルウェア対策を行うことが出来るようになりました。
是非本機能を活用し、Amazon S3のマルウェア対策を行ってみてはいかがでしょうか。

CTCは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

お問い合わせ

【著者プロフィール】

近藤 隆太(こんどう りゅうた)

伊藤忠テクノソリューションズ株式会社 クラウドエンジニア

2024 Japan AWS Jr.Champions
2022年に新卒で入社し、オンプレミスネットワークの設計および構築業務を経験。
現在はAWSの設計・構築を担当。
社内活動として、西日本エリアでのAWSサービスの啓蒙活動やAI/MLサービスの評価・検証にも積極的に取り組んでいる。

近藤 隆太(こんどう りゅうた)

TOP>コラム一覧>Amazon GuardDutyでAmazon S3バケットをマルウェアから保護する

pagetop