【目次】

  1. 1. はじめに
  2. 2. new AWS WAF と AWS WAF Classic の切り替え方
  3. 3. Web ACL の作成
  4. 4. マネージドルールの追加
  5. 5. マネージドルール内の一部ルールの無効化
  6. 6. おわりに

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 解説
 
 
※以前の回を読んでない方は是非第1回から読んでいただくことをおすすめします。
※今までの AWS WAF は AWS WAF Classic となります。
new AWS WAF が AWS WAF となります。
記事中では新しいものをnew AWS WAF、以前のものをAWS WAF Classicと表記しています。
 

2. new AWS WAF と AWS WAF Classic の切り替え方

new AWS WAF の画面

 
AWS WAF Classic の画面

それぞれ画面に切り替えるリンクがあります。
 

3. Web ACL の作成


左側の Web ACL を選択し、右上のリージョンを選択後に create を押下します。
 

ACL の名前を入力します。自動で「 CloudWatch metric name 」は ACL 名と同様の内容が自動入力され、別名への変更も可能です。
リソースタイプとリージョンを選択したら、次にどのリソース( ALB 等)に適用するか選択する画面がありますが、一旦は空白の状態で進めます。
画面右下の「 NEXT 」を押下します。
※この先の項目で名前の入力が多く出てきます。同じ名前だとわかりづらい状態になることが考えられるので、規則性( ACLなら〜 ACL、ルールなら〜 rule 等)を持たせることをお勧めします。
 

次はルール登録画面になります。「 Add rules 」を押下するとマネージドルールか、独自ルールを選ぶことになります。
画面中央には WCU の使用量がわかる項目があります。ルールを更新すると、動的に変化します。画面下部には Default action を選択する項目があります。
 
※ WCU の計算方法については『第1回 : 【new AWS WAF】変更点まとめ』にて、説明していますので、ご確認下さい。
 
マネージドルールを選択した画面

使用できるマネージドルールの一覧が表示され、 「 AWS managed rule groups 」をクリックすると内容が表示されます。アクションの項目で ACL への適用可否とモードの選択があります。
 
マーケットプレイスで購入可能なマネージドルールの場合はマーケットプレイスへのリンクとなっています。
※画像は CSC のマネージドルールです。
 

試しに AWS のマネージドルールを一つ付けたところ、WCU の値がキャパシティ分増えたことが確認出来ました。
 

この状態で「NEXT」を押下します。
次の画面では、ルール順を変更できます。
 

「NEXT」を押下します。
次の画面では CloudWatch との連携部分の指定でした。メトリクスを変更出来ます。チェックボックスを外せば CloudWatch との連携も外せます。
 

「NEXT」を押下します。
最後は確認画面でした。
 

作成ボタンを押下して、完成しました。

 

4. マネージドルールの追加

 
マネージドルール内で、特定のルールを COUNT にすることが可能です。
ルールが複数あるマネージドルールを選択して確認していきます。

対象の WebACL を選択すると、リクエストやサンプルログを確認する画面が表示されます。
画面上部で切り替えて、対象のリソースやルール、CloudWatch の設定が変更できるようです。今回はルール追加部分を説明します。

ルール編集画面は Web ACL 作成時にルール編集したものと同様でした。「 Add rules 」で加えていきます。
 

マネージドルールが追加されました。

 

5. マネージドルール内の一部ルールの無効化

 
マネージドルール内の特定のルールを COUNT モードに変更できるので、試してみます。対象を選択して編集します。

中のルールをオーバーライドすることができました。
 

対象を複数変更して、JSON 形式で見てみます。
出力は該当のルールを選択し、右上の「 Download web ACL as JSON 」ボタンで行います。

 
 

{
    "Name": "test",
    "Id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "ARN": "arn:aws:wafv2:ap-northeast-1:*************:regional/webacl/test/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "DefaultAction": {
        "Allow": {}
    },
    "Description": "",
    "Rules": [
        {
            "Name": "AWS-AWSManagedRulesAdminProtectionRuleSet",
            "Priority": 0,
            "Statement": {
                "ManagedRuleGroupStatement": {
                    "VendorName": "AWS",
                    "Name": "AWSManagedRulesAdminProtectionRuleSet",
                    "ExcludedRules": [
                        {
                            "Name": "AdminProtection_URIPATH"
                        }
                    ]
                }
            },
            "OverrideAction": {
                "None": {}
            },
            "VisibilityConfig": {
                "SampledRequestsEnabled": true,
                "CloudWatchMetricsEnabled": true,
                "MetricName": "AWS-AWSManagedRulesAdminProtectionRuleSet"
            }
        },
        {
            "Name": "AWS-AWSManagedRulesCommonRuleSet",
            "Priority": 1,
            "Statement": {
                "ManagedRuleGroupStatement": {
                    "VendorName": "AWS",
                    "Name": "AWSManagedRulesCommonRuleSet",
                    "ExcludedRules": [
                        {
                            "Name": "UserAgent_BadBots_HEADER"
                        },
                        {
                            "Name": "SizeRestrictions_URIPATH"
                        },
                        {
                            "Name": "EC2MetaDataSSRF_URIPATH"
                        }
                    ]
                }
            },
            "OverrideAction": {
                "None": {}
            },
            "VisibilityConfig": {
                "SampledRequestsEnabled": true,
                "CloudWatchMetricsEnabled": true,
                "MetricName": "AWS-AWSManagedRulesCommonRuleSet"
            }
        }
    ],
    "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "test"
    },
    "Capacity": 800
}

 
ExcludedRules という項目で、除外されていることが確認できました。
 

6. おわりに

マネージドルールを選択して、アタッチするだけなので、作業は1時間かからずに終わりました。 マネージドルール内の特定のルールを変更する機会は運用を続けていくと発生するかと思います。画面上での ON 、OFF 設定は分かりやすいので緊急時でも対応しやすいです。操作に慣れていない方でも安心して設定・変更出来ます。