【目次】

  1. 1. はじめに
  2. 2. ご利用アカウントの種類を判別する方法
  3. 3. AWS WAF Classicご利用時の注意点について
  4. 4. AWS WAF Classicでの設定方法
  5. 5. CSC Managed Rulesとの併用

1. はじめに

2023年6月1日にWafCharmはアップデートを実施し、AWS WAF Classicについては新規アカウントでのお申し込みを停止いたしました。
それに伴い、ブログ記事についても原則新規仕様に基づいて更新が行われております。

しかしながら、2023年5月31日以前にWafCharmアカウントを作成され、ご利用を継続されているお客様におかれましては、引き続きAWS WAF Classicでのご利用が可能です。

そのため、本記事ではAWS WAF Classicをご利用の方向けに設定方法や仕様等についてまとめています。

2. ご利用アカウントの種類を判別する方法

WafCharmアカウントの作成時期に関わらず、WafCharm管理画面の見た目については原則同じとなります。
もし、ご自身がログインされているアカウントの種類がわからない場合には、以下のいずれかの方法で確認可能です。

1. WafCharm管理画面上部の「AWS」メニューを開いて、Web Monitoring Configが存在するか確認する

Web Monitoring Configは、2023年6月1日より新規アカウントにてご利用のすべてのお客様に提供を開始した「Web改ざん検知機能」を利用するための設定画面です。
2023年5月31日以前にアカウントを作成された場合、この画面は存在しません。

2. Web ACL Configの新規追加画面を開き、Web ACL Versionの選択肢を確認する

上記の通り、2023年6月1日以降に作成されたアカウントではAWS WAF Classicのお申し込みを停止しております。
そのため、Web ACL Version以下に「AWS WAF Classic」の選択肢がある場合は2023年5月31日以前のアカウント、選択肢がない場合は2023年6月1日以降のアカウントとなります。

3. AWS WAF Classicご利用時の注意点について

AWS WAF Classicでは、1 Web ACLに対して適用できるルール数が10個と決まっていますので、WafCharmもその制限の中でルールの適用を行います。

また、AWS WAF Classicをご利用の場合に、弊社で承れるカスタマイズは以下の通りです。
※カスタマイズはビジネスプラン以上で無償での対応となります。エントリープランでご契約の場合、別途お見積もりが必要となります。

  • 意図してない遮断(誤検知)を回避するためのカスタマイズ
  • 追加ルール作成のカスタマイズ
    例:
    ミドルウェアの脆弱性に対応するルールの作成 (※基本的に脆弱性の見つかっていない新しいバージョンのご利用を推奨します)
    その他ご希望のカスタマイズ

適用できるルール数や登録できる正規表現の数などは、AWS WAF Classicの仕様により制限がございます。
カスタマイズを実施する際は、状況によってルール数などの調整が必要になる場合もありますのであらかじめご了承ください。

WafCharmではカスタマイズ対応できないルールは以下の通りです。

  • レートベースのカスタマイズルール
  • 国別制限のカスタマイズルール

これらについては、お客様自身で作成いただく必要があります。
その場合、ルール名に「wafcharm-」、「wc-」で始まる名前は使用しないでください。WafCharm のルールと誤認して誤作動する可能性があります。

以下にレートベースルールの作成方法を記載しますので、ご参考ください。

作業の流れは以下の通りです。

  1. 国別制限 condition の作成
  2. パス指定 condition の作成
  3. ルールの作成

・国別制限 condition の作成
国別制限 condition は日本にマッチするように作成して「does not」を利用して日本以外とします。「Geo match」を選択して以下のように設定します。

・パス指定 condition の作成
今回は「/login で始まる」とします。「String and regex matching」を選択して以下のように設定します。

・ルールの作成
「Rules」を選択してレートベースルールを作成します。

conditionを追加して条件を絞ります。「does not」を使う時は以下のように選択します。

最終的に以下のような形となりました。

検知した場合はどのIPアドレスかを確認することも可能です。

4. AWS WAF Classicでの設定方法

AWS WAF ClassicでWafCharmを利用する場合は、大まかに以下の内容を実施する必要があります。

  1. 必要に応じて、”AWSWAFFullAccess” と “AmazonS3ReadOnlyAccess” が付与されたIAMユーザーあるいはIAMロールを用意する
    ※IAMユーザーあるいはIAMロールは既存のものを流用しても問題ありません。
  2. Web ACL Configを登録する
  3. Web Site Configを登録する(ALB、CloudFrontでの利用の場合)

Web ACL Config, Web Site Configでの具体的な設定項目は以下の通りです。


Web ACL Configの設定項目

①Web ACL Config Name Web ACL Config Nameを入力します。
AWS コンソール上で登録している Web ACL の名前と必ずしも同一にする必要はありません。
②Web ACL ID AWSマネジメントコンソール > WAF & Shield > Go to AWS WAF > Web ACLsを選択します。

下記画像の赤枠で囲まれているIDが「Web ACL ID」となります。

③Web ACL Version AWS WAF Classicを選択します。Web ACL Config 作成後に編集することはできません。
④Choose AWS Service Type Web ACLをアタッチしている対象のリソースをプルダウンから選択します。
※ ALB, CloudFront, API Gateway以外には対応していません。
⑤Choose your AWS Region Web ACL及び、リソースを作成しているリージョンを選択します。
⑥Credential Store Addボタンから認証情報を登録します。

AssumeRoleを使用する場合
IAMのポリシー “AWSWAFFullAccess” を付与していたロールのARNを登録します。
参考:
AssumeRoleでの設定とIAMポリシーについて

Access Key/Secret Keyを使用する場合(非推奨)
IAMのポリシー “AWSWAFFullAccess” を付与している対象ユーザーのキーの値を登録します。
参考:
アクセスキー/シークレットキーの準備編
WafCharmご利用の際に必要となるIAMポリシー

⑦Default WAF Action WafCharmが対象Web ACLにルールを適用する際のアクションを設定できます。
※既に適用されているルールのアクションはこの設定では変更できません。
⑧Whitelist 初期設定の段階でホワイトリストを設ける場合に入力します。後から追加設定することも可能です。
⑨Blacklist 初期設定の段階でブラックリストを設ける場合に入力します。後から追加設定することも可能です。
⑩Rule limit WafCharmが対象Web ACLに適用できるルールの上限を設定します。
例)
・Rule limit:10 → WafCharmは対象Web ACLに最大10個のルールを適用することができます。
・Rule limit:5 → WafCharmは対象Web ACLに最大5個のルールを適用することができ、残りの5ルールはお客様作成ルールを適用することができます。
⑪Used Managed Rule マネージドルールを使用・不使用の選択が出来ます。


Web Site Configの設定項目

Web Site Config は WafCharm による解析に使用するアクセスログの出力先を登録する設定になります。(WAF の保護対象を登録する設定ではございません。)
※ API Gateway でのご利用の場合、Web Site Config の設定は不要になります。

①Web ACL Config 対象のWeb ACL Configを選択します。
※初めてWeb ACL Configを作成された方は既に選択されています。
②FQDN 対象WebアプリケーションのFQDNを入力します。
※次の手順(③S3 Path)の入力内容が同一の場合、複数の FQDN が存在するとしても代表で一つの FQDN をWeb Site Conifg に登録してください。
(WAF は リソース(ALB/CloudFront etc.)単位で稼働するため、登録する FQDN の違いによる WAF への影響はありません。)
③S3 Path お使いのリソースのアクセスログの出力先のパスを設定します。
CloudFrontのログ出力先確認
AWSマネジメントコンソール > CloudFront > 対象CloudFrontにチェックを入れDistribution Settingをクリック > Editをクリック > 下記赤枠で囲まれた箇所を確認します。下記赤枠の場合だと、WafCharmに登録するS3 Pathは
「s3://Wafcharm.s3.amazonaws.com/cloudfrontlogs/」
となります。

CloudFrontのログ出力先確認画面
※ 該当の S3 Path には複数の CloudFront Distribution のアクセスログは出力しない様お願いいたします。
※ CloudFront のリアルタイムログ機能には対応しておりません。
ALBのログ出力先確認
AWSマネジメントコンソール > EC2 > サイドバーのロードバランサーをクリック > 対象のALBをチェック > ロードバランサー情報にて説明のタブ(デフォルト)下部を確認 > 属性の確認下記赤枠の場合だと、
・アクセスログ:S3 の場所 WafCharm/alblogs
になります。そのため、WafCharmに登録するS3 Pathは
「s3://WafCharm/alblogs/AWSLogs/<AWSアカウントID>/elasticloadbalancing/ap-northeast-1/」
となります。
※今回はリージョンが、ap-northeast-1としています。

ALBのログ出力先確認画面
※ API Gatewayのアクセスログには対応しておりません。
④Credential Store

IAMのポリシー “AmazonS3ReadOnlyAccess” を付与しているロールあるいはユーザーのクレデンシャル情報が必要です。
Web ACL Configと同じものを使用する場合には「Reuse Web ACL Credential Store」のチェックを選択したまま保存します。

Marketplace 版を利用する場合は IAMのポリシー “CloudWatchReadOnlyAccess” も付与してください。

※Access key / Secret keyの利用は非推奨です。
参考URL:
AssumeRoleでの設定とIAMポリシーについて

Access key/Secret keyを使用する場合:
アクセスキー/シークレットキーの準備編
WafCharmご利用の際に必要となるIAMポリシー

Web ACL Configと異なる認証情報を使用する場合、「Reuse Web ACL Credential Store」のチェックを外すと、プルダウンから選択あるいはAddボタンから新規追加が可能です。

注意
S3バケットを特定のリージョン(※)にしている場合、Credential Storeのバリデーションがエラーとなる場合があります。その場合は、対象のリージョン名を添えてWafCharmサポートまでご連絡ください。
※特定のリージョンは、AWSコンソール上でデフォルトでは無効になっているオプトインリージョンです。詳細はデフォルトで無効になっているリージョンの一覧をご確認ください。

5. CSC Managed Rulesとの併用

上記の通り、AWS WAF Classicではルール数が10個という制限がありますが、弊社が提供する別製品となるマネージドルールと併用することでより防御を強めることが可能です。

しかしながら、AWS WAF Classicでのマネージドルールのルールアクション変更方法はかなり複雑です。

そのため、WafCharmではCSCが提供するマネージドルールと併用されている場合に、ルールアクションの変更が容易に行える機能をご用意しております。
※ビジネスプラン以上のご契約でご利用可能です。

本機能の詳細については、以下のマニュアルをご参考ください。
AWS WAF Managed Rules ルールグループの例外機能マニュアル