LoginSignup
15
17

More than 3 years have passed since last update.

AWS WAFを導入してみた

Last updated at Posted at 2020-10-20

はじめに

WAFを構成する要素として、「Web ACLs」「Rules」「Associated AWS resources」があります。これはIAMの考え方と似ていて、

  • Web ACLs = IAM Group
  • Rules = IAM Policy
  • Associated AWS resources = IAM User

というイメージを持つとわかりやすいでしょう。
つまり「Web ACLs」という箱を作り、そこにアクセスの可否を制御する「Rules」を設定し、そこに対象となるAWSリソース(ALB or CloudFront)を紐付けることになります。

作成

それでは実際に作っていきます。

Web ACLsの作成&リソースの関連付け(Describe web ACL and associate it to AWS resources)

  1. AWSのコンソールから、「WAF&Shield」を選択
  2. 左サイドバーの「Web ACLs」を選択 > 「Create WebACL」を選択

Web ACL details

まずはルールやリソースを関連づけるための箱であるWeb ACLを作成します。
* 「Name」:ACLの名前を記入
* 「Resource type」:関連づけたいリソースの種類を選択(今回はALBなのでそのまま)
* 「Region」:リージョンを選択
image.png

Associated AWS resources

続いて、作成したWeb ACLにWAFの監視対象とするリソースを関連づけます。

  1. 「Add AWS Resources」を選択
  2. WAFを適用させたいリソースを選択して「Add」を選択 image.png
  3. 「Next」を選択

ルールの設定(Add rules and rule groups)

作成したWeb ACLにルールを適用していきましょう。WAFルールには、

  • Managed Rule:AWSが提供しているルールセット
  • My Own Rule:ユーザーが独自に定義するルール

の二種類あり、イメージとしてはIAM Policyでいうところの「AWS Managed Policy」と「Customer Managed Policy」の関係になります。
各Managed Ruleの詳細は公式ドキュメントにまとまっているので、ベースはManaged Ruleを使いつつ、追加で設定したいポリシーはMy Own Ruleとして定義するのが良いと思います。
今回はさくっと設定できる「Managed Rule」を設定することにします。

  1. 「Add rules」 > 「Add managed rule groups」を選択
    image.png

  2. 適用するルールを選択肢して、「Add rules」を選択
    今回は不審なIPからのアクセスをブロックする「Amazon IP reputation list」を追加します。
    image.png

  3. 「Default action」は「Allow」のまま「Next」を選択

ルールの優先度(Set rule priority)

ルールの適用順序を設定する画面ですが、今回はこのまま「Next」を選択します。

メトリクスの設定(Configure metrics)

cloudwatchのメトリクスを設定する画面ですが、今回はこのまま「Next」を選択します。

確認画面(Review and create web ACL)

内容に問題なければこのまま「Create web ACL」を選択します。

確認

web ACLのoverviewでアクセスが確認できればOKです。
image.png

注意点

設定するルールによっては本来許可したいリクエストをブロックしてしまう可能性があります。
筆者の場合は一度テスト用のロードバランサを作成し、そこにWAFを紐づけた上で動作確認し、その後本番用のロードバランサへの切り替えを行いました。

15
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17