年末年始にかけて、AWS関連の最新情報を整理していたところ、AWS WAFがかなり使いやすいレベルにアップデートされていました。 セキュリティ関連のサービスは、日頃はそれほど最新の情報を追えていないので、これを機会に簡単にまとめたいと思います。
AWS WAFとは
AWS WAF は、CloudFrontまたは、ALBへのHTTP/HTTPSリクエストをモニタリングできるWeb Application Firewallです。 詳細については、各所で記事がありますので割愛しますが、「従量課金で低コスト」「専用のインスタンス不要」「マネージドルール」という点が、他のWAF製品との違いになると思います。
概念
まず、AWS WAFの概念について整理します。基本的には、一般的なACLの考え方と同じです。
Condition
Conditionは、AWS WAFがモニタリングするリクエストの条件を定義します。
例として以下のような条件を定義できます。
- IPアドレス
- リクエスト元の地域
- User-Agent等のHTTP Header
- URI
Conditionでは、あくまでもモニタリングする条件のみを定義し、この条件に対する振る舞いは定義しません。
Rule
Ruleは、Conditionを組み合わせて、アクションを発動するための条件を定義します。(アクションについては、後述します)
例えば、下記を一つのRuleとして定義し、このRuleに対しての振る舞いを設定できます。
- リクエスト元のIPアドレスが 192.xx.xx.xxでない
- リクエスト元の User-Agent ヘッダーに XxxBot が含まれる
- 特定の地域からのリクエストである
また、レートベースのRuleも定義可能です。レートベースのRuleでは通常のRuleに加え、リクエスト数がレートリミット(最小値2,000 / 5分)を超えた場合にアクションを発動します。
Web ACL
Web ACLは、各Ruleのアクションとデフォルトアクションを定義します。
アクションの種類
アクションには、3種類あります。
- Allow
- 条件に一致するリクエストを許可します。
- Block
- 条件に一致するリクエストを拒否します。( ステータスコード403を返します)
- Count
- 条件に一致するリクエストをカウントします。主にACLのテストに利用するようです。
各Ruleのアクション
各Ruleに対してアクションを定義します。Ruleに定義したすべての条件に一致した場合の振る舞いを定義します。
デフォルトアクション
デフォルトアクションは、Web ACLのすべてのRuleの条件に一致しないリクエストの振る舞いを定義します。
例えば、「特定のIPアドレスのリクエストのみ許可」という場合には、
- 特定のIPアドレスのRuleを定義し、アクションはAllow
- デフォルトアクションはBlock
という定義をします。
以上で、AWS WAFの基本的な概念について説明しました。
マネージドルール
マネージドルールは、AWS re:Invent 2017 で発表された新機能です。
AWS WAFではルールを柔軟に定義できるものの、適切なルールをメンテナンスし続けるには運用負荷が高いことがネックでした。
マネージドルールでは、セキュリティベンダーが事前設定済みのルールを利用することができます。 さらに、ルールはセキュリティベンダーによって自動的に更新されるため、ルールの運用から開放されます。
マネージドルールの料金は、利用するルール毎に異なりますが、現在見る限りでは、月額 数ドルから数十ドルと比較的低コストで導入できます。
ALBへ設定例
AWS ConsoleからALBに対しての設定も紹介します。例として、「特定のIPからのリクエストは拒否する」というルールを定義します。
Web ACLの基本情報を入力
ACLの名前と、対象とするALBを設定します。対象とするALBは、ACL作成後も変更できます。
Conditionの作成
拒否対象のIPアドレスを定義します。
Ruleの作成
作成したConditionを元に、Ruleを定義します。ここでは、「IPアドレスが一致」を条件としています。
ACLにRuleを追加
ACLにRuleを追加します。上記で作成したRuleに対しては、ActionをBlockと設定します。その他、デフォルトのActionはAllowを設定します。
以上で完了です。このように簡単な条件なら、すぐに設定できます。
Sampled requestsの確認
設定がうまくいっているかどうかは、Web ACLの画面の「Sampled requests」から確認ができます。
Block条件に該当するリクエストが発生していた場合は、リクエストの情報・該当するRuleが表示されます。
まとめ
AWS WAFの最初のリリース時は、ALBには対応しておらずCloud Frontのみの利用可能でした。その後、ALB対応・レートベースのRule・マネージドルールなど、ユーザが本当に必要な機能を着実に追加しているのは、さすがAWSです。
特に、マネージドルールの登場で、セキュリティ専任者が不在のチームにもAWS WAFの導入の敷居が大幅に下がったと思います。今後もマネージドルールの拡充などが予定されているので、アップデート情報は随時追っていきたいと思います。