LoginSignup
28
24

More than 5 years have passed since last update.

【AWS】WAFを使ってIP制限を実施する

Posted at

最近AWSをWAFと戦い続けているのでWAFについて少し書きたいと思います。

WAFについて

Amazonが提供するマネージドWAFです。
CloudFrontと一緒に使うため、WAFを使用する際はまず、CloudFrontの構築をする必要があります。

WAFの用語

WAFには3つの用語が存在します

  • condition:条件指定(このIPアドレスからの接続」, 「User-Agentに○○が含まれている」など)
  • rule:複数のconditionをまとめたもの
  • ACL:ruleに[Allow], [Block]. [Count]を指定してルールに基づいた制限をかける

condition

conditionに設定できるのは以下のとおりです。

  • IP match conditions
  • String match conditions
  • Size constraint conditions
  • Cross-site scripting match conditions
  • SQL injection match conditions

IP match conditions

IPアドレスのホワイトリスト/ブラックリストを作成し、そのリストにもとづいてアクセスの拒否/許可を設定します。

String match conditions

リクエスト中に特定の文字列が存在するかどうか、ホワイトリスト/ブラックリストを作成し、そのリストにもとづいてアクセスの拒否/許可を設定します。

Size constraint conditions

リクエストサイズについて、指定した値より大きいサイズのリクエストかどうか評価します

Cross-site scripting match conditions

AWSが内部で作成している評価ルールにもとづいて、リクエストがXSSの疑いがあるかどうか評価します

SQL injection match conditions

AWSが内部で作成している評価ルールにもとづいて、リクエストがSQL
インジェクションの疑いがあるかどうか評価します

注意事項

実際に使用する際には以下のことに注意してください

  • ログを見るのが恐ろしく面倒 WAFのコンソールからログを見ることができがすが、1.5時間ほどしか残りません 詳細なログに関しては、CloudFrontログを確認することになります
  • XSS/SQLインジェクションのルールを設定している場合何がダメだったかログに出ない XSS/SQLインジェクションのルールについては、AWSが独自に実装しているルールに基づいて評価されますが、これは外部に仕様が公開されていません。 また、ログ上にも何がダメでアクセスが弾かれたか残らないため、擬陽性のアクセスが来た際など特定するのが非常に大変です
  • 設定できる項目の上限 WAFはconditionsはルールに設定できる項目の上限数があります。 この上限数は現状(2016/05現在)緩和することが出来ません。 限られた範囲内で頭を使いましょう

以上、が試した中で感じた点です。
実際に使用する場合、IP制限等を噛ませる/文字列マッチングで特定のアクセスを弾くと言った使い方が良いのではないでしょうか。
SQLインジェクションの評価を入れたらブログ投稿時 styleタブ が評価されてエラーになるが、原因がわからなくて大変でした。

設定(ACLの作成)

では、実際にIPアクセス制限をかけていきます。

AWS_WAF_01.jpg

AWS_WAF_02.jpg

全部スルーして右下の次へ

AWS_WAF_03.jpg

ACL名を入力して次へ

AWS_WAF_04.jpg

AWS_WAF_05.jpg

AWS_WAF_06.jpg

最後にサマリが出てくるので確定してACLを作成します。

設定(IP match conditionsの作成)

次に、IPの制限ルールを作っていきます。

AWS_WAF_07.jpg

IPアドレスの欄を選択し、Create Condition を選択します

conditionsの評価の注意

conditionsに指定した項目はOR評価されます。
従って、ここに設定した値のうち、1つでも合致すれば真と評価されることになります。

設定(ルールの作成)

ACLに紐付けるためルールを作成します

AWS_WAF_09.jpg

AWS_WAF_10.jpg

ルールの評価の注意

conditionがOR評価されたのに対し、ルールは指定した項目をAND評価します
即ち、指定した全ての項目が満たされた時のみ真と評価されるため注意が必要です

ルールをACLに紐付ける

AWS_WAF_11.jpg

AWS_WAF_12.jpg

ルールのEdit web ACL を押下します

AWS_WAF_13.jpg

設定例

自分のIPだけ許可するといった場合は、IPを書いたルールが真の時”Allow”
デフォルト(ルールに当てはまらなかった時)は"Block"とします

作成したACLをCloudFrontに適応することでWAFは機能するようになります

おしまい

28
24
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
28
24