【AWS re:Invent2019】CMY303 – Using Amazon CloudFront, AWS WAF, and Lambda@Edge to keep spammers outを受講しました

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

Using Amazon CloudFront, AWS WAF, and Lambda@Edge to keep spammers outセッションを受講しました。

講演者:Anders Bjoernestad
https://aws.amazon.com/jp/developer/community/heroes/anders-bjornestad/

本セッションはWEBアプリケーションに対するスパマーからの攻撃をどのようにして防御するのかといった内容となります。

基本構成

本セッションで紹介されていた(当初の)システムの基本構成は以下となります。

CloudFrontをフロントとして、配下にEC2とS3を配置したシンプルな構成となります。(おそらくシステム全体はもっと複雑かと思いますが)
今回のシステムはユーザが記事を投稿し、それに対するコメント等が行える掲示板のようなサイトのようです。

認証についてはCaptchaなどのSelfRegistration及びE-mailにて行っているとのこと。

課題

今回のシステムにおける課題は先ほど記載した通りインターネットからの不特定多数の攻撃をどのように防御するのかというものです。

対応策

段階的に以下のアーキテクチャを検討、採用されていました。

GeoRestrictionによる地域ごとのIP制限

こちらはCloudfrontの標準機能である「GeoRestriction」にて制限を実施しております。
本機能は特定地域(国)の接続元IPからのアクセスを拒否する機能となります。
特定地域のみのサービス展開であれば外部からの不正な攻撃を一括して拒否することが出来ます。
(※今回の例ではロシアとウクライナのIPを拒否されていました)

参考:https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/georestrictions.html

ただし、こちらではすべて同じ地域から攻撃が来るわけではない、また正規アクセスも拒否されてしまう場合があるため正式な採用には至っていません。

WAF security automationによるブラックリストIP自動更新

こちらはAWSが提供しているWAFのルールを自動で構築&アップデートする機能です。
こちらにより、一般的なSQLインジェクションなどの攻撃や、不正なIPアドレスからのアクセスを日々自動更新し攻撃元IPのみを自動的に設定、更新することが可能となります。
また、ハニーポットを設置し悪意のある接続を判別することも可能なため、botなどのアクセスを軽減する効果も期待できます。

アーキテクチャを見るとやや複雑な構成に見えますが、AWS CloudFormation テンプレートによりこちらのシステムをまるっと展開することが可能です。

参考:https://aws.amazon.com/jp/solutions/aws-waf-security-automations/

こちらにより不特定多数の攻撃を防げたとの結果ですが、完全に攻撃を無くすには至っておりませんでした。
そこで本システムで認証に利用しているメールアドレスによるブラックリストも利用したIP制限を検討されたそうです。
そこで登場するのが以下に記載するLambda@Edgeとなります。

Lambda@Edgeによるブラックリストメールアドレス判別

Lambda@EdgeはCloudFrontへのリクエストまたはレスポンス時にLambda functionを実行することが出来る機能となります。

参考:https://aws.amazon.com/jp/lambda/edge/
Lambda@Edgeを利用することでUser-Agent毎にアクセス内容を変える、Basic認証を設定するなど様々な対応が考えられますが、今回はLambda function上で不正なメールアドレスを外部のブラックリストと照合し、不正な場合はハニーポット用のURLにリダイレクトするといったものとなっておりました。

こちらにより、ハニーポットに誘導された不正アドレスの接続はそこでIPが判別されWAFのIPリストに追加されます。

最終構成

本セッションにおける最終構成は以下

まとめると、

  • ブラックリストIPはWAF security automation のIP評価リストにて自動で更新
  • ブラックリストメールアドレスはLambda@Edgeによって判別され、不正な場合はWAF security automationのハニーポットにリダイレクトしIPリストを更新

となります。
以上の対応により外部からの攻撃はほぼ完全に防御が可能になったそうです。

今後は各種ログの管理やDynamoDBと連携したspam bot listのTTL設定などを検討しているとのこと。

まとめ

WEBアプリケーションの管理者様はこのような攻撃に対して頭を悩ませている方も多いのではないでしょうか。
本セッションでも講演者の方が色々試行錯誤されていて、Trial&Errorの繰り返しだったように感じます。

セキュリティの対応はコストや運用体制の面からなかなか十分な対策が取れていない場合も多いかと思いますが、それゆえ今回のようなセキュリティ対応の自動化というのは今後さらに注目されてくるのではないでしょうか。

なお、近年ではAIによるセキュリティの自動判別なども注目されています。
AWS WAFとAIを利用したクラウド型WAF運用サービス「WafCharm」なども弊社では取り扱っておりますので、ご興味のある方はぜひお問い合わせください。

参考:https://www.skyarch.net/security/wafcharm.html

投稿者プロフィール

fukuda
2012年スカイアーチ入社。
主にAWSを中心としたインフラ構築運用や導入支援などを行っています。

ABOUTこの記事をかいた人

2012年スカイアーチ入社。 主にAWSを中心としたインフラ構築運用や導入支援などを行っています。