WafCharmの初期設定の流れを紹介します。WafCharmの初期設定には、AWSマネジメントコンソールにてAWS WAF / IAMポリシー / CloudFront(またはALB)のログ設定の確認が必要です。
※ WafCharm は AWS AppSync には対応しておりません。

  1. プラン契約の申し込みまで進むと、以下のページに案内されますので、Web ACL Configの設定から始めましょう。

  2. Add Web ACL をクリックします。

  3. 必要な情報(①〜⑫)を入力し、Saveをクリックします。

    ①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 ご利用の Web ACL のバージョンを選択します。Web ACL Config 作成後に編集することはできません。
    ④Choose AWS Service Type Web ACLをアタッチしている対象のリソースをプルダウンから選択します。
    ※ AWS AppSync には対応しておりません。
    ⑤Choose your AWS Region Web ACL及び、リソースを作成しているリージョンを選択します。
    ⑥Access key / Secret key IAMのポリシー “AWSWAFFullAccess” を付与している対象ユーザーのキーの値を入力します。
    カスタムポリシーにて設定頂く際は以下のページをご参照ください。
    参考URL:https://www.wafcharm.com/blog/aws-iam-setting-for-wafcharm-jp/
    ⑦Default WAF Action WafCharmが対象Web ACLにルールを適用する際のアクションを設定できます。
    ※既に適用されているルールのアクションはこの設定では変更できません。
    ⑧Whitelist 初期設定の段階でホワイトリストを設ける場合に入力します。後から追加設定することも可能です。
    ⑨Blacklist 初期設定の段階でブラックリストを設ける場合に入力します。後から追加設定することも可能です。
    ⑩Rule limit (AWS WAF Classic)
    WafCharmが対象Web ACLに適用できるルールの上限を設定します。
    例)
    ・Rule limit:10 → WafCharmは対象Web ACLに最大10個のルールを適用することができます。・Rule limit:5 → WafCharmは対象Web ACLに最大5個のルールを適用することができ、残りの5ルールはお客様作成ルールを適用することができます。
    ⑪Used Managed Rule (AWS WAF Classic)
    マネージドルールを使用・不使用の選択が出来ます。
    ⑫Originating address (AWS WAF)
    XFF ヘッダーオプションの設定ができます。WafCharm を適用する ALB の前段に CloudFront が配置されているような場合にはご利用を検討してください。詳細はダッシュボード内のヘルプをご確認ください。

    ※ new AWS WAF にて既に独自のルールを適用している Web ACL の場合、WafCharm ルールの適用に必要となるため、WCU に空きを 1100 程度設けてください。

    1. 3の手順実施後、S3周りの設定をするページに遷移するのでこちらも必要な情報を入力し、Saveをクリックします。
      WafCharm「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のアクセスログには対応しておりません。
    ④Access Key Option IAMのポリシー “AmazonS3ReadOnlyAccess” を付与している対象ユーザーのキーの値を入力します。
    AWS WAFとS3でAccess key / Secret keyが同じ場合には、チェックを付けてください。AWS WAFとS3でAccess key / Secret keyが異なる場合にReuse Web ACL Access Keyのチェックを外して、S3のRead権限を付与したAccess key / Secret keyを設定します。参考URL:https://www.wafcharm.com/blog/aws-iam-setting-for-wafcharm-jp/

    以上の設定を正しく登録することで、WafCharmがご利用頂けます。
    AWSマネジメントコンソール上にて確認が必要な情報がいくつかございます。ご注意ください。