2024.01.19
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
今回は、『AWS アカウントへの abuse report をチャット通知させる』という話題を取り扱います。
そもそも『AWS アカウントに対する abuse report』とは何なのか
簡単に言えば苦情報告です。
特に『このサーバーから迷惑メール送ってるって苦情来たよ』というものがほとんどだと思います。
特にメールサーバーを利用していると、この報告を受ける機会が増えます。
abuse report は、以下2つの経路で送信されます。
- セキュリティ通知先に設定しているメールアドレス
- AWS アカウントの Health Dashboard
以下、メールで受信した『管理している AWS アカウント上のメールサーバーに対する abuse report』の例です。
Hello,
We’ve received a report that your AWS resource
AWS ID: (AWSアカウントID) Region: (リージョン名) EC2 Instance Id: (メールサーバーのインスタンスID)
AWS ID: (AWSアカウントID) Region: (リージョン名) Network Interface Id: (ENI ID)
has been implicated in activity that resembles the sending of spam or unsolicited email. Sending spam or unsolicited email is forbidden by the AWS Acceptable Use Policy (https://aws.amazon.com/aup/). We’ve included the original report below for your review.
(以下略)
abuse report を受け取ったら、24時間以内に返事をしないと AWS アカウントそのものを停止されることがあります。
AWS アカウント上でメールサーバーを管理すると、 abuse report への対応は必ず考慮しなければいけない
AWS アカウント上でメールサーバーを取り扱うと、大抵 abuse report を受け取る機会が生じます。
以下の全てに合致すれば 99% 程度は防げますが、EC2 インスタンス上に自前で建てていると、常に最新状態にするのが難しい場合もあります。
- メールサーバーのセキュリティが十分
- 常に脆弱性のないバージョンを利用している
- 特定の経路からのみ、メールを送信できるようにしている
- 外部からのリレーに利用されない
- メールアカウントのパスワード強度を高くしている
- スパムとみなされないよう、必要な設定をする
- 名前解決の正引き、逆引き設定
- SPF, DKIM, DMARC を全て設定済み
- メールサーバーと Web サーバーの連携部分のセキュリティが十分
- 問い合わせフォームでの自動返信機能を狙った大量スパムメール送信を防ぐ対策をしている
- 例)reCAPTCHA やフォーム入力欄検証の導入
- 問い合わせフォームでの自動返信機能を狙った大量スパムメール送信を防ぐ対策をしている
こうして見ると、ほとんどが『メールサーバーを管理するならやって当然の対策』と言えるものです。
しかし、管理するサーバーの数が増えると、重要度の低いものは放置されがちで、最新の要件をクリアできていないことを見落とす場合もあります。
そもそも abuse report を受け取った場合に何をしないといけないか
基本は以下の3~4段階の対応が必要です。
- abuse report に対して対応する旨の返信
- 24時間以内に返事をしないと、AWS アカウントそのものを停止される可能性あり
- (一次対応)abuse report で報告されたメール送信を再現されないよう、対策する
- 例)メールサーバーの設定を変更して、苦情元のメールドメインに対してメールを送信しないようにするなど
- 同じ問題が発生しないように対応した旨を AWS abuse チームに返信する
- この時点で、abuse report 自体はクローズされることが多い
- (できれば)根本的な解決
- 例)メールサーバーの脆弱性を塞ぐ、問い合わせフォームへの reCAPTCHA 導入など
特に最初の返信を 24時間以内に間に合わせることが重要です。
(本題)abuse report が来た場合に push 通知させる
これまでの情報から、『abuse report が届いたら、最初の返信だけはすぐにしたい』ということが分かると思います。
緊急性があるので、push 通知で受け取りたいです。
これを実現する方法は2通りあります。
- AWS Health Dashboard の通知をトリガーにして、チャットに通知する
- クラスメソッドさんが以下で紹介しているように、Slack に通知するなら ChatBot だけで対応可能
- https://dev.classmethod.jp/articles/abuse-chatbot-slack/
- Chatwork に通知する場合、Lambda を呼ぶ形になる
- クラスメソッドさんが以下で紹介しているように、Slack に通知するなら ChatBot だけで対応可能
- メール受信をトリガーに、チャットに通知する
- 自前のメールサーバーの場合
- メール受信をトリガーに、スクリプトを実行
- Amazon WorkMail の場合
- Eメールフロール-ルで Lambda を実行し、Amazon WorkMail メッセージフロー API でメール本文を取得して、対象メールなら通知
- 自前のメールサーバーの場合
どちらもほぼリアルタイムで対応できるので、AWS Health Dashboard の方がオススメかもしれません。
まとめ
- AWS アカウント上のメールサーバーが何らかの理由で abuse report 対象になる場合がある
- abuse report には24時間以内に最初の返信だけはしたいので、push 通知を受け取りたい
- AWS Health Dashboard や WorkMail を Lambda と組み合わせることで、対応可能
参考元
abuse report を受け取った場合の対応
https://repost.aws/ja/knowledge-center/aws-abuse-report
abuse report のチャット通知
https://repost.aws/ja/knowledge-center/aws-abuse-report
Amazon WorkMail での、メール受信をトリガーにした操作
https://docs.aws.amazon.com/ja_jp/workmail/latest/adminguide/email-flows.html