はじめに
EICAR のテストウイルスが HTTP でダウンロードできなくなってしまったので、Amazon S3 の静的ウェブサイトを使ってテストウイルスのダウンロード環境を作ってみました。
Amazon S3 の設定
バケットを作成して静的ウェブサイトの設定を行います。
詳細は下記チュートリアルや他サイトを参照ください。
Lambda の設定
言語は Python 3.8 で作成。
下記コードを保存 → Deploy → Test 実行 で S3 にファイルがアップされます。
トリガなど特に設定する必要はありません。
import json
import boto3
import os
def lambda_handler(event, context):
# ローカルにテストファイル作成
fp = open('/tmp/eicar.com', 'w')
# EICARテストファイルのアスキー文字列を書き込みます
fp.write('X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*')
# ファイルのクローズ。
fp.close()
# S3アップロード
s3 = boto3.resource('s3')
s3.meta.client.upload_file('/tmp/eicar.com', '[S3バケット名]', 'eicar.com')
# ローカルファイル削除
os.remove('/tmp/eicar.com')
動作確認
ブラウザ等から以下のURLにアクセスしてファイルがダウンロードできることを確認します。
http://[S3バケット名].s3-website-ap-northeast-1.amazonaws.com/eicar.com
※上記リージョンは東京ですので環境に合わせてURLを調整ください
うまくいかない場合は、S3のバケット内にファイルがアップされているか確認してください。
最後に
今回 Lambda を使いましたが、一度きりの作業で他システムからの連携もありませんので、あえて Lambda でやるメリットはあまりなかったかもしれません。
まあ環境を作って壊してを繰り返すときは Lambda にコードが残っていれば、再作成は容易いかなと思います。
参考サイト
https://rioner2525.hatenablog.com/entry/2019/07/25/185907
https://www.eicar.org/?page_id=3950