AWS S3 にテストウイルスのファイルを CloudShell でアップする


はじめに

EICAR のテストウイルスが HTTP でダウンロードできなくなったので、Amazon S3 の静的ウェブサイトを使ってテストウイルスのダウンロード環境を作ってみました。
(以前 Lambda 版を公開していましたが、今回は CloudShell 版です)

CloudShell にて

S3 バケットを作成します。

$ aws s3 mb s3://[バケット名]

公開設定を行います。

$ aws s3api put-public-access-block --bucket [バケット名] --public-access-block-configuration  "BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false"

確認します。

$ aws s3api get-public-access-block --bucket [バケット名]

以下の結果であればOK
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": false,
        "IgnorePublicAcls": false,
        "BlockPublicPolicy": false,
        "RestrictPublicBuckets": false
    }
}

バケットポリシーを設定し匿名ユーザーへアクセス許可します。
まずは CloudShell のローカルで json ファイルを作成します。

$ cat  << EOS > bucket-policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow", 
            "Principal": "*", 
            "Action": "s3:GetObject", 
            "Resource": "arn:aws:s3:::[バケット名]/*" 
        } 
    ] 
}
EOS

作成したjsonファイルを元にS3バケットへポリシー適用します。

$ aws s3api put-bucket-policy --bucket [バケット名] --policy file://bucket-policy.json

必要ないと思いますが、index ファイルの設定も行っておきます。

$ aws s3 website s3://[バケット名] --index-document index.html

CloudShell のローカルにテストウイルスのファイルを作成します。

$ cat << EOS > eicar.com
X5O!P%@AP[4\PZX54(P^)7CC)7}\$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!\$H+H*
EOS

作成したテストウイルスを S3 にアップロードします。

$ aws s3 cp eicar.com s3://[バケット名]/

S3 にアップロードできたか確認します。

$ aws s3 ls [バケット名]
2021-06-10 00:00:01         69 eicar.com

curl コマンドで HTTP アクセスできるか確認します。

$ curl http://[バケット名].s3-website-ap-northeast-1.amazonaws.com/eicar.com

※URLのリージョン部分は環境にあわせて読み替えてください

以上でテストウイルスのダウンロード環境構築は完了です。
実際に利用する際は curl コマンドで確認した URL を使ってアクセスしてください。