見出し画像

【AWS】 WAFの解説

WAF

ウェブアプリケーションファイアウォールサービスで、ウェブアプリケーションやAPIを悪意のあるウェブトラフィックから保護するために使われる。
具体的には、SQLインジェクションやクロスサイトスクリプティング(XSS)などの一般的な攻撃から保護する機能を提供している。

AWS WAFを利用することで、ユーザーは特定のIPアドレスからのアクセスを許可または拒否したり、HTTPヘッダーに基づいてフィルタリングルールを作成することができ、ウェブリクエストの本文内容に基づいてルールを設定することも可能である。
また、時間(1 分や 5 分)で指定されたリクエスト数を超える Web リクエストをブロックまたはカウントすることもできる。

リアルタイムのモニタリングとログ記録機能も提供しており、ユーザーはトラフィックパターンを観察し、セキュリティルールを適宜調整して保護を最適化することができる。
Amazon CloudWatchとも統合されており、カスタマイズ可能なダッシュボードを通じてセキュリティメトリクスを監視することができる。


V1とV2

バージョン(V1)は2015年にリリースされ、ユーザーが特定の条件に基づいてウェブトラフィックを許可またはブロックするための基本的なルールを設定できるようになった。V1は単純な条件と制限的なルール数で基本的なセキュリティを提供した。

その後、より柔軟で強力なセキュリティ管理が求められるようになり、AWSは2019年にV2をリリースした。V2では、ルールの柔軟性と複雑さが大幅に向上し、キャパシティユニット(WCU)を導入して多くのルールや複雑な条件の設定が可能になった。

詳細

V1ではルールの設定が10個までという制限があり、複雑な条件を組み合わせることが難しかった。しかし、V2ではキャパシティユニット(WCU)という新しい概念を導入して、ルールの複雑さに応じて1500WCUまで設定できるようになった。

※キャパシティユニット
AWS WAF V2で導入された新しい概念で、WAFルールの複雑さや評価コストを表す単位のこと。各ルールや条件に対してWCUが割り当てられ、その合計が使用可能なWCUの制限内で収まるようにする。例えば、単純なルールには少ないWCUが割り当てられ、複雑なルールや複合条件にはより多くのWCUが必要となる。この仕組みにより、より多くのルールや複雑な条件を柔軟に設定できるようになっている。

さらに、V1では単純なAND条件の組み合わせしかできなかったが、V2ではAND、OR、NOTの複合条件を使った高度なルール設定ができるようになった。これにより、細かいトラフィック制御やセキュリティポリシーの設定がより精密に行えるようになったんだ。

V2ではルールをJSON形式で記述できるため、ネストした複雑なルールを簡単に作成し、インポートやエクスポートも可能となった。これにより、設定の共有や再利用が容易になった点も大きな利点と言える。

また、V2ではAWSが提供するマネージドルールを利用できるようになり、これらのルールを簡単に導入することで、セキュリティの強化が図れる。マネージドルールはAWSやサードパーティベンダーが提供するもので、最新のセキュリティ脅威に対処するためのルールが含まれているため、セキュリティ管理者の負担を軽減する。

さらに、V1とV2は別のリソースとして扱われるため、V1からV2への移行は手動で行う必要があるが、移行後はより強力で柔軟なWAFの機能を利用できる。

まとめると、AWS WAF V2はルールの設定が柔軟で強力になり、複雑なセキュリティポリシーの実装が容易になった。キャパシティユニットの導入や複合条件の使用、マネージドルールの活用により、セキュリティ管理がより効果的に行えるようになったと言える。




主要コンポーネント

Web ACL

CloudFront、ALB、API Gatewayに割り当てるための1つのWAFの設定単位。各リソースに対して1つのWebACLのみを割り当てることができるが、同じWebACLを複数のリソースに適用することも可能。
複数のルールやルールグループを内包し、ウェブサイトやアプリケーションを保護するためのルールセットを提供する。これにより、どのリクエストを許可し、どのリクエストをブロックするかを決定する。
ルールに一致しないリクエストに対しては、事前に設定されたデフォルトのアクション(ブロックまたは許可)が適用される。

ルール

特定の条件を満たすリクエストを見つけるまとまり。たとえば、「この種類の攻撃から来たリクエストは止める」や「このIPアドレスからのアクセスはOK」といったことを設定できる。条件に合ったリクエストには、ブロックする、通す、数を数える、または特定のテスト(CAPTCHAなど)をする、といったアクションを適用できる。

ルールグループ

ルールをグループ化できる。自分で作ることもできれば、AWSが用意しているものを使うこともできる(AWS Marketplace managed rules)。
これによって、似たようなセキュリティ要件がある場合に、繰り返し同じルールを設定する手間を省ける。

アクション

リクエストをルールに照らし合わせた結果をどう扱うかを設定するもの。

  1. ALLOW:リクエストを許可する。

  2. BLOCK:リクエストをブロックする。

  3. COUNT:リクエストをカウントするが、許可やブロックの処理は行わない。

各ルールにはそれぞれアクションが設定され、すべてのルールに当てはまらなかった場合は、WebACLに設定されたデフォルトアクション(ALLOWまたはBLOCK)に従って処理される。

まとめ

簡単に言うと、AWS WAFでは「Web ACL」を使ってウェブサイトを守る大枠を作り、「ルール」で細かい条件を設定し、「ルールグループ」でルールをまとめて管理できる。さらに、各ルールにはリクエストをどう扱うかの「アクション」(ALLOW、BLOCK、COUNT)が設定されており、すべてのルールに当てはまらなかった場合は、Web ACLに設定されたデフォルトアクションに従って処理される。

















よろしければサポートお願いします!よりいい情報を発信します。