【目次】

  1. 1. はじめに
  2. 2. 変更点
  3. 3. 気になる疑問
  4. 4. おわりに

1. はじめに

2019/11/25 AWS から new AWS WAF がリリースされました。今回は何が変わったかを解説します。
 
第1回 : 【new AWS WAF】変更点まとめ (本記事)
第2回 : 【new AWS WAF】AWS マネジメントコンソール操作(マネージドルール編)
第3回 : 【new AWS WAF】AWS マネジメントコンソール操作(オリジナルルール編)
第4回 : 【new AWS WAF】AWS マネジメントコンソール操作(パターンセット・ルールグループ編)
第5回 : 【new AWS WAF】JSON 解説
 

2. 変更点

変更点は以下の通りです。
 
・ ネーミングが変わります
・ WAF Capacity Unit (WCU) の導入
・ マネジメントコンソールの変更
・ ルールが一部変更
・ ドキュメント形式でのルールの管理が可能
・ AWS Managed Rules (AMR) のリリース
・ マネージドルールのレベルコントロールを公式でサポート
 
 

ネーミングが変わります
 
今までの AWS WAF は AWS WAF Classic となります。
new AWS WAF が AWS WAF となります。
 
WAF Capacity Unit (WCU)の導入
 
ルールに対して処理コストがかかるイメージに変更されました。今までは10個のルール、5個の正規表現のパターンセットという形で数の制限でしたが、WCU になるとそれぞれの処理要素に対して処理コストを計上、適用する処理要素の数で計算し、その合計が Capacity を超えない範囲でルールを登録することになります。1 Web ACL あたり 1500 WCU が使用できます。AWSのサポートに制限緩和申請をすることで、制限値をあげることも可能です。
 
留意事項:
・ WCU となっても正規表現の数には、制限(10個)があります。
また、パターンセット内に記載できる正規表現の数も10個までの制限が存在します。
・ IP 制限について
パターンセットの形式になり、一つのパターンセット内で 10,000 IP 記載できます。
・ 文字列マッチ条件について
文字列マッチ条件で「〜で始まる」「含む」を指定していましたが、WCU の処理コストがそれぞれ異なるので、注意が必要です。
※文字列の変換処理でも処理コストが計上されるため、注意してください。
 
公式情報
https://docs.aws.amazon.com/waf/latest/developerguide/limits.html
 
 
制限事項

リソース デフォルトの制限
リージョンごとのWeb ACL 100
リージョンごとのルールグループ 100
Web ACL ごとの Web ACL キャパシティユニット(WCU) 1,500
ルールグループごとの WCU 1,500
リージョンごとの IP セット 100
リージョンごとの正規表現セット 10
正規表現セットごとの一意の正規表現パターン 10
Web ACL ごとのレートベースのルール 10
Web ACL ごとの1秒あたりのリクエスト(Application Load Balancerにのみ適用) 100,000

 
WCU の計算例
SQL インジェクションの条件を URL, cookie header,  body の3箇所で検知しようとした場合
 
・ 3(検知箇所)  × 20(SQL インジェクションのWCU ) = 60 WCU
 
・ マネージドルールは1000 WCU
 
両方使用した場合に合計で1060 WCU になります。この WCU 内で必要な設定を行うことになります。
 
ルール条件

一致ステートメント WCU
国別一致 1
IP セット一致 1
正規表現パターンセット パターンセットごとに25
サイズ制約 1
SQLi 攻撃 20
ストリングマッチ 一致のタイプに依存
XSS 攻撃 40

 

論理的条件

論理ステートメント WCU
AND ロジック 紐づいたルールに基づく
NOT ロジック 紐づいたルールに基づく
OR ロジック 紐づいたルールに基づく

 
 
特殊な条件

ステートメント WCU
レートベース 紐づいた絞り込み条件に基づく
マネージドルールグループ ルールグループによって定義されます。
ルールグループ ルールグループを作成するときにこれを定義します。

 
 
WEB コンソールの変更
マネージドルールが重視され、マネージドルールを選びやすいコンソールになっています。ルールグループの機能が AWS Firewall Manager から AWS WAF 側へ移動しました。
コンソールの操作については次のブログで解説していきます。
 
 
ルール設定方法が一部変更になりました
・以前のcondition部分での OR 条件が可能になりました。
例えば、国の制限で作成していたルールに該当の国以外でブラックリスト IP をプラスするようなことが可能です。
・複数のデコード処理が可能になりました。
URL デコードした後に小文字に統一するといったことが可能です。
・CIDR での表現に制限がなくなりました。

今までは以下の内容でした。
IPv4 アドレス範囲: /8、および /16 から /32 までの範囲をサポートしています。
IPv6 アドレス範囲: /24、/32、/48、/56、/64、および /128 をサポートしています。
・FieldToMatch フィールドで使用されていた項目の変更
URI は UriPath に変わりました。

 

ドキュメント形式でのルールの管理が可能
様々な API を駆使してルールの更新が行われていましたが、JSON 形式での管理でWeb ACL の更新の API を実施するだけで反映が可能です。
JSON ファイルで管理すれば以前の状態に戻すことがすぐに可能です。
IP Set と Regex Set については別ファイルで管理して ARN で呼び出す形となります。

AWS Managed Rules (AMR) のリリース
AWS から公式のマネージドルールがリリースされました。
また、マネージドルールを複数使用することも可能になりました。
複数使用に合わせて、「 OWASP Top 10 」対応のルールや「 IP reputation list 」がリリースされました。さらに、「 WordPress 」や「 PHP 」等の限定したルールも複数リリースしています。
 

マネージドルールのレベルコントロールが公式でサポート
WafCharm では、WafCharmの管理画面でAWS WAF Classicのマネージドルールに内包されているルールの BLOCK / COUNT の変更機能を提供しています。new AWS WAF では、マネージドルール内の個別ルールの変更が AWS マネジメントコンソールから可能になり、誤検知した際は、個別ルールの COUNT への変更が容易に可能となりました。
 
 

3. 気になる疑問

・旧AWS WAFはどうなるの?
AWS WAF Classic としてサービスは継続されます。引き続き WafCharm もご利用いただけます。
 
・AWS WAF Classic から new AWS WAF へ移行するにはどうするの?
以下の公式情報を参考に new AWS WAF へ設定を行ってください。
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-migrating-from-classic.html
 

4. おわりに

AWS WAF のとても大きな変更がありました。自身でルールを書く仕組みは、比較的容易ではありますが、 WCU での制限もあり、適切なルールを作成・選択することは、引き続き難しい状況かと思います。その部分を解消するためにマネージドルールを使いましょうというメッセージに見えるので、今まで使用していなかった方はマネージドルールの検討をこの機会にしてみてはいかがでしょうか。