[ワークショップ] 不正防止のためにAWS WAFを実装する方法を学びました #AWSreInvent #NET308

2023.12.01

こんにちは!AWS事業本部のおつまみです。

今回はre:Invent2023のワークショップ Get hands-on with fraud prevention using AWS WAF に参加してきたので、内容をご紹介します!

ワークショップの概要

タイトル

Get hands-on with fraud prevention using AWS WAF

概要

In today’s competitive digital landscape, earning and keeping customer trust is key to gaining a competitive advantage. But how can you ensure that all login activity and accounts created on your site are from real users and not bots? In this workshop, help UnicornRentals use AWS WAF and Amazon CloudFront to implement controls for fraud prevention using best practices. Gain insights through monitoring and log analysis, and understand how this ties into the broader bot control landscape. You must bring your laptop to participate.

競争の激しい今日のデジタル環境では、顧客の信頼を獲得し、維持することが競争優位性を獲得するための鍵となります。しかし、サイト上で作成されたすべてのログインアクティビティやアカウントが、ボットではなく本物のユーザーによるものであることを確認するにはどうすればよいでしょうか?このワークショップでは、UnicornRentals社がAWS WAFとAmazon CloudFrontを使用し、ベストプラクティスを使用して不正防止のためのコントロールを実装するのを支援します。モニタリングとログ分析を通じて洞察を深め、これがボット対策にどのようにつながるかを理解します。参加にはノートパソコンの持参が必要です。

スピーカー

  • Diana Alvarado
  • Manuel Pata

レベル

300

このワークショップで学べること

  • Webアプリケーションのログインとサインアップのプロセスに焦点を当てて、アカウント詐欺行為の制御を構築する方法
  • 不正行為防止のための AWSマネージドルールグループに焦点を当てて、AWS WAFを作成および設定する方法
  • Amazon CloudWatch Logs Insightsを使用して AWS WAFログを設定およびクエリする方法

ワークショップの内容

ワークショップでは、下記の既存アプリケーションに対してWAFのルールを設定していくことでボット対策を防ぎます。

ログイン・ユーザー登録のみのシンプルなアプリケーションです。

全体の流れ

既にCloudFrontに対して、AWSマネージドルールがいくつか適用されたWAFが設定されていました。

このWAFに対して、初期設定としてCloudWatch LogsInsightsでクエリを実行するために、まずはロギングを有効化させます。

そこからは以下の流れで2つの不正対策を行いました。

  • アカウント乗っ取りとブルートフォース攻撃への防御
    • アプリケーションのログインページ保護
    • 盗まれた認証情報への対応
    • AWS WAF SDKでのアカウント乗っ取り防止
    • ATPに対するテスト
  • ACFP(Account Creation Fraud Prevention)のセットアップ
    • Web ACL に Account Creation Fraud Prevention を追加
    • 新しく作成したルールのテスト
    • ACFP によるリクエスト強化
    • Lambda@Edgeを使用し、追加の不正チェックを実行

下記のAWSのマネージドルールに対して、カスタムルールを作成し、アプリケーションの動作を変えるといったものでした。

  • Account creation fraud prevention
  • Account takeover prevention

特に面白かった箇所

Account takeover preventionを設定する箇所が特に面白かったので、ご紹介します。

ATPとは、AWS WAF Fraud Control アカウント乗っ取り防止のことを指します。

ATP を使用すると、異常なログイン試行や盗まれた資格情報を使用したログイン試行を可視化して制御でき、不正行為につながる可能性のあるアカウントの乗っ取りを防止できます。

悪意のあるアカウント乗っ取りの試みの一部である可能性があるリクエストにラベルを付けて管理するために、マネージドルールグループのAWSManagedRulesATPRuleSetを設定します。

AWS WAF Fraud Control account takeover prevention (ATP) rule group - AWS WAF, AWS Firewall Manager, and AWS Shield Advanced

このルールでは認証リクエストを検査するため、どのエンドポイントのペイロードのどの部分を対象とするか指定し、ACLをAWSリソースへ関連付けします。

シミュレーション用の盗まれた資格情報をアプリケーションに入力します。

username:WAF_TEST_CREDENTIAL password:WAF_TEST_CREDENTIAL_PASSWORD

するとこのように、awswaf:managed:aws:atp:signal:credential_compromisedのラベルが表示されていることがわかります。

このようにマネージドルールでは検査結果として、ラベルを付与してくれます。

あとはラベルが一致させた時に、ブロックするためのカスタムルールを追加で作成します。

シミュレーション用の盗まれた資格情報をアプリケーションに入力します。
すると2回目以降はブロックされ、アプリケーション画面もエラーページに遷移していることがわかりました!

最後に

今回のワークショップで、Amazon CloudFrontとWAFの連携からアプリケーションを考慮したルールの操作を一通り学ぶ事ができました!

AWSマネージドルールは非常に便利なため、今後活用する際に提案していけると感じました。

ただ設定内容がかなり複雑だなとも思いました。
そのため、このルール設定もAmazon Qがいい感じにやってくれないかなと思いました。笑

最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!

参考

AWS WAF Fraud Control アカウント乗っ取り防止 (ATP) - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced