Amazon Simple Storage Service

Cloud One File Storage Security(C1FSS)でS3バケットにアップロードされたマルウェアを検出する

Cloud One File Storage Security(C1FSS)でS3バケットにアップロードされたマルウェアを検出する

こんにちは、運用サービス課の栩野です。

皆さん、S3にマルウェアがアップロードされていないか...気になりますよね...!?

S3にマルウェアがアップロードされていると、他のシステムやユーザーがそのファイルをダウンロードしてしまい、感染拡大のリスクが発生します。

ということで、今回はトレンドマイクロ社が提供する「Cloud One File Storage Security(C1FSS)」を使って、S3でマルウェア対策を行う方法についてご紹介します!

C1FSSについて

概要

Cloud One File Storage Security(略してC1FSS)は、AWSやAzure、GCPなどのクラウドストレージサービス内のファイルに対して、マルウェアスキャンを実施してくれるサービスです。

ユーザーまたはプログラムが指定されたクラウドストレージ、AWSの場合S3にファイルをアップロードすると、C1FSSによるマルウェアスキャンが実行されます。
スキャンが完了すると、マルウェアが検出されたかどうかの結果をファイルにタグとして付与してくれます。

以下は、C1FSSの基本的なアーキテクチャの構成図になります。

参照元: AWSのアーキテクチャとフロー

対応ファイルと検出プログラム

対応ファイルに制限はなく、すべてのサイズと種類のファイルでスキャンが可能です。
またウイルス、トロイの木馬、スパイウェアなど、あらゆる種類の不正プログラムを検出することが出来ます。

価格

C1FSSの価格設定は以下の通りです。
従量課金制となっており、スキャンが実行された時間のみ課金が発生します。

例えば、1日の中で1時間だけ401ファイル以上のアップロードが発生し、それ以外の時間帯にアップロードが発生しない環境は、$1.155/日 だけの課金となります。
また1時間あたり20ファイル以下のアップロードに収まるような環境の場合は、無料で利用することが可能です。

課金階層 1時間あたりに検索されるファイル数 1時間あたりのコスト(USD) 対応サービス
無料(有効期限なし) 1時間あたり1-20ファイルの検索 無料 -
低価格帯 1時間あたり21-200ファイルの検索 $0.42 - Amazon S3 バケット
- GCP バケット
中価格帯 1時間あたり201-400ファイルの検索 $0.63 - Amazon S3 バケット
- GCP バケット
上位価格帯 1時間あたり401~2000ファイルの検索 $1.155 - Amazon S3 バケット
- GCP バケット

詳しい仕様や料金はFile Storage Securityとは何ですか?のドキュメントをご確認ください。

C1FSSを導入してみる

ここからは実際にC1FSSを導入して、S3に対してマルウェア検出機能をテストしていきます。

C1FSS導入時にCloudFormationでIAMやLambda等のリソースが作成されるため、必要なポリシーをIAMユーザーに付与する必要があります。
利用するIAMユーザーで権限が制限されている場合は、以下のサイトを参考に必要な権限を付与してください。
展開のためのユーザー権限

1. Cloud Oneのアカウント作成

Cloud Oneのアカウント作成方法については、過去に「AWS MarketplaceからCloud OneのサブスクライブとCloud Oneアカウント作成」で紹介しておりますので、こちらの記事を参考にアカウント作成を行ってください。

2. S3バケットのマルウェアスキャン設定

Cloud Oneのアカウント作成ができたら、S3バケットのマルウェアスキャン設定を行います。
今回はテスト用として事前に「denet-blog-test-bucket」という名前で空のS3バケットを作成しており、このバケットをスキャンの対象とします。

  1. Cloud Oneのホーム画面にある「File Storage Security」を選択します。

  2. C1FSSの管理画面が表示されるので、左メニューの[Stack Management]を選択します。(デフォルトで選択されています)

  3. 上部のタブで「AWS」を選択し、[+Deploy]をクリックします。

  4. ポップアップが表示されるので、[Scanner Stack and Storage Stack]を選択します。

  5. 表示されるステップに沿って必要な情報を入力します。

    ステップ1. AWSアカウントへのサインイン
    Cloud OneをサブスクライブしたAWSアカウントにサインインしておきます。(この後、CloudFormationを実行するため)

    ステップ2. CloudFormationのテンプレートを実行するリージョンの選択とスタックの起動
    C1FSSのスキャンと通知に必要なリソースがCloudFormationで作成されます。
    リージョンは、スキャン対象となるS3バケットを作成しているリージョンを選択し、[Launch Stack]をクリックします。

    ちなみに、ストレージスタックとスキャナースタックの役割は以下の通りです。

    スタック名 説明
    ストレージスタック S3バケットに追加されたファイルを監視し、それらをスキャナースタックに送信する
    スキャナースタック 追加されたファイルをスキャンし、結果をSNSに送信する

    別タブでCloudFormationのスタック作成画面が起動するので、最低限として以下の2つの情報を入力します。

    パラメータ名 説明
    S3BucketToScan スキャン対象のS3バケット名 denet-blog-test-bucket
    ObjectFilterPrefix スキャン対象を限定する場合に指定。指定文字列で始まるオブジェクトがスキャン対象になります。空白の場合は全オブジェクトが対象です。 例: uploads/ (uploads/で始まるオブジェクト)

    ※その他のパラメータの詳細が知りたい場合は、以下のドキュメントをご参照ください。
    CloudFormationスタックのデプロイ方法

    最下部に作成されるスタックに関する注意事項が表示されているため、どちらも承認するようチェックします。

    • AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
    • AWS CloudFormation によって、次の機能が要求される場合があることを承認します。

    問題なければ[スタックの作成]をクリックします。

    「All-in-one-TM-FileStorageSecurity」のスタック作成が始まるので、しばらく待ってステータスが全て[CREATE_COMPLETE]になればスタックの作成が完了です。

    ※ネストされたスタックを含めて3つのスタックが作成されます。

    スタックの作成完了後、上部タブの[出力]を選択し、以下の2つのARN情報を確認してコピーし、メモしておきます。

    • ScannerStackManagementRoleARN
    • StorageStackManagementRoleARN

    ステップ3. 先ほどコピーした[ScannerStackManagementRoleARN]のARNを貼り付けます。

    ステップ4. [StorageStackManagementRoleARN]のARNを貼り付け、最後に[Submit]をクリックします。

  6. 少し待つとデプロイが完了し、スキャン対象のS3バケットが読み込まれます。

    「Scan Activity」を選択すると、検出履歴が管理画面から確認できます。

    現状はまだ何もスキャンしていないので、何も表示されていません。

これでS3バケットのマルウェアスキャンの準備が整いました。

3. マルウェア検出の動作検証

実際にS3にマルウェアをアップロードして、しっかり検出されるかテストしてみます。

実際にマルウェアを利用するのは危険なので、今回はマルウェアテスト用のファイルであるEICARファイルを利用します。

EICARファイルは以下のサイトよりダウンロードが可能です。
各製品共通テストウイルス
※ダウンロード時は作業PCにインストールされているウイルス対策ソフトを一時的にオフにする必要があります。

  1. 正常ファイルのアップロード
    まずは正常なファイルをアップロードして、通常時の動作を確認します。
    アップロード後、数秒ほどタイムラグはありますが、自動でマルウェアスキャンが実施され、オブジェクトに以下のようなタグが付与されます。

    • fss-scanned: true
    • fss-scan-result: no issues found
    タグ名 説明
    fss-scanned true スキャンが実行されたことを示す
    fss-scan-result no issues found マルウェアが検出されなかったことを示す

    スキャンの結果、マルウェアは検出されず、正常なファイルであったことが分かります。

  2. マルウェアのアップロード
    次にEICARファイルをS3バケットにアップロードします。

    すると先ほどとは違い、タグに以下のような値が付与されます。

    • fss-scanned: true
    • fss-scan-result: malicious
    タグ名 説明
    fss-scanned true スキャンが実行されたことを示す
    fss-scan-result malicious マルウェアが検出されたことを示す

    スキャンの結果、マルウェアが検出されたことが分かります。

さいごに

C1FSSを利用したS3バケットにアップロードされたマルウェアをスキャンする方法をご紹介させてもらいました。

マルウェアを検出できるようにはなりましたが、これだけではスキャン結果を定期的に目視で確認し、マルウェアがあれば手動で隔離や削除を行う必要があります。

C1FSSでは、SNSでLambdaをトリガーすることで、自動通知や自動隔離が行えます。
方法については、また別のブログでご紹介しようと思っております。

以上、最後までご覧いただきありがとうございました!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA