2021.11.08 AWS WAFの運用はこれで自動化!WafCharmとは?

この記事では、AWS WAFの自動運用ツール「WafCharm」についてご紹介します。
AWS WAF マネージドルールの作成と運用については、下記の記事で紹介していますのでこちらも参考にしてください。

参考記事
AWS WAFの運用方法~マネージドルールの落とし穴とは?~ 新規ウィンドウで開く

WafCharmとは?

概要

WafCharm 新規ウィンドウで開くとは、株式会社サイバーセキュリティクラウド(以下、CSC社)が提供している、AWS WAFの運用支援サービスです。WafCharmを利用すると、ビッグデータ・機械学習を用いてWAFルールを運用し、マネージドルールの運用を自動で最適化することができます。

WafCharmでは、基本的にAWS WAFを経由したALBやCloudFrontのアクセスログを対象に、最新のセキュリティ情報を用いた機械学習による分析が行われます。分析された結果から適切にAWS WAFルールの自動更新を行い、自動更新で対応できない場合は、CSC社様のサポートにより手動でルールが作成される場合もあります。

アクセス→AWS WAF、WafCharm(サポート、リサーチ、AI、ビッグデータ)→シグネチャ→AWS WAF、WAF→正常な通信→ログ→WafCharm
WafCharmの概要図

WafCharmではAWS WAFの運用に必要な機能が、一通り提供されています。そのため、マネージドルールの運用で課題だった「ルールのチューニングが出来ないため、適切なルールを選択できない」「意図しない通信のブロックが発生する」という点は、WafCharmで解決することが可能です。

WafCharmの主な機能は下記の通りです。

機能 意味
レポート

ログの分析結果をグラフで提供すること。

  • 下記の図のようなレポートが提供されます。
攻撃通知

攻撃をうけた際に通知をする機能のこと。

  • 下記の図のような通知が届きます。

Attacks as follows were detected.
This report includes up to 10 attacks detected in every buffer interval.
If you need to check more information and attacks, visit your AWS console.
WebACL Name(WebACL ID): <Web ACL Name> (<Web ACL ID>)
Matches Rule: wafcharm-blacklist-010090004-07 (<Rule ID>)
Time(UTC): Thu, 01 Aug 2019 09:21:03 GMT
Source IP: 192.0.2.0
Source Country: JP
URI: /

サポート

意図しない通信のブロックが発生した場合や、特殊なルールのカスタマイズは、WafCharmサポート窓口で対応してもらえる。

  • 契約しているプランごとに、受付時間や問い合わせ手段が異なります。

利用料金

WafCharmの利用料金は、プランごとに料金が変わります。ご自身の目的に合わせて、料金とプランを確認したのち契約をしてください。

プラン料金(※1) WafCharmで出来ること
WAFルール運用のサポート(※2) ルールのカスタマイズ 従量課金単価が安くなる(※3)
トライアル
(登録から30日間)
無料
エントリー ¥5,000~/月 別途追加費用
ビジネス ¥50,000~/月
エンタープライズ ¥95,000~/月
  • ※1 WafCharmの利用には、別途AWS WAFの利用料金がかかります。AWS WAFの料金はAWS公式サイト 新規ウィンドウで開くを確認ください。また明記している料金は、WAF設定ユニット料金+プラン料金(ウェブリクエスト数)を合算したものです。
  • ※2 WAFルール運用のサポート内容は、契約しているプランによって異なります。
  • ※3 WafCharmはウェブリクエスト数による従量課金です。プランごとに無料枠があります。無料枠を超すと超過分の課金が発生し、トライアル・エントリー・ビジネスの超過分課金額は500円/100万件、エンタープライズの超過分課金額は250円/100万件です。

※1~3について詳しく知りたい方は、WafCharmサイト 新規ウィンドウで開くを確認してください。

WafCharm構築前の事前準備をする

WafCharmを構築する前に、「会社の顔「Webサイト」を守れ!AWS WAFとは?~構築・運用編~」記事の「1. WebACLを作成する 新規ウィンドウで開く」「2. Web ACLとAWSリソースを紐づける 新規ウィンドウで開く」を実施してください。

①WafCharmからAWS WAFのルール編集・機械学習を行うためのIAMユーザーを作成する。

アクセスキーからAmazon S3・AWS WAFにアタッチできるIAMユーザーを作成していきます。

  1. (1)

    IAMユーザーの作成を行います。

    IAM 新規ウィンドウで開くを開きます。左ペインより「ユーザー」を選択し、「ユーザーを追加」をクリックしてください。

  2. (2)

    IAMユーザー詳細の設定を行います。

    ユーザー名は任意の名前を入力してください。AWSアクセスの種類を選択 では、作成したIAMユーザーのAWSアクセス方法を設定できます。今回はアクセスキーからアクセスしたいため、アクセスの種類より「プログラムによるアクセス」を選択してください。選択後「次のステップ:アクセス権限」をクリックしてください。

  3. (3)

    作成したIAMユーザーのアクセス許可設定を行います。

    ご自身の目的にあったアクセス許可の設定を行って下さい。今回は、アクセス許可の設定より「既存のポリシーを直接アタッチ」を選択します。

    選択後、既存のポリシーを直接アタッチできます。アタッチしたいポリシーを検索し、アタッチしてください。
    今回は「AWSWAFFullAccess AmazonS3ReadOnlyAccess」を検索欄に入力し、アタッチします。
    ポリシー名に「AmazonS3ReadOnlyAccess」「AWSWAFFullAccess」が表示されますので、これらを選択し、「次のステップ:タグ」をクリックしてください。

  4. (4)

    タグの追加を行います。

    追加したいタグがあれば、このタイミングで設定が可能です。今回はタグを追加しないので「次のステップ:確認を選択」をクリックしてください。

  5. (5)

    今まで設定してきた内容を確認し「ユーザーの作成」をクリックしてください。

  6. (6)

    これでアクセスキーを使用するIAMユーザーが作成できました。

    シークレットアクセスキーの「表示」をクリックし、シークレットアクセスキーを表示させてください。
    アクセスキーIDと表示されたシークレットアクセスキーをメモしてください。シークレットアクセスキーの再発行は不可能なので、必ずメモをして保管しておきましょう。

②機械学習を行うためのアクセスログを出力する。

ALBのログを出力し、属性の編集を行います。

  1. (1)

    ログを出力したいALBにチェックを選択します。

    AWS マネジメントコンソール 新規ウィンドウで開くよりAmazon EC2を開きます。
    左ペインより「ロードバランサー」を選択し、ログを出力したいALBにチェックを入れてください。
    その後、アクションタブより「属性の編集」を選択してください。

  2. (2)

    ロードバランサー属性の編集をおこないます。

    パラメータ項目(アクセスログ)を入力して、保存を選択してください。

    • パラメータ項目(削除保護、アイドルタイムアウト、WAFのフェイルオープン、TLS version and cipher headers、クライアントポートの保持)は、ログ出力とは無関係な項目のため入力・設定は不要です。
    パラメータ項目 入力事項
    HTTP/2 デフォルト設定のままにしておく。
    Desync緩和モード デフォルト設定のままにしておく。
    アクセスログ 有効化にチェックを入れる。
    • チェックを入れることでアクセスログを有効にできます。
    S3の場所を入力する。
    • S3://日付+名前+albなど任意の名前を設定してください。

③WafCharmからAWS WAFのルールを編集したい、対象のWeb ACL IDを確認する。

対象のWeb ACL IDを確認していきます。

  1. (1)

    AWS WAF 新規ウィンドウで開くを開き、左ペインより「Web ACLs」を選択してください。

    タブよりルールを編集したい「Web ACLのリージョン(今回はAsia Pacific)」を選んでください。リージョン選択後、対象のWeb ACL IDを確認し、メモをとっておいてください。

WafCharmを構築する

WafCharmのアカウントを作成する

個人で検証のためにアカウントを作成したい方は、WafCharmの申込みページ 新規ウィンドウで開くよりアカウント登録、プラン契約のお申込みの手順を参照してください。
WafCharmのアカウントは、当社でも作成が可能です。企業で利用されたい方は、是非当社までご相談ください。

WafCharmにWebACL Configを登録する

  1. (1)

    WafCharmログインページ 新規ウィンドウで開くからWafCharmアカウントにログインを行います。

  2. (2)

    ログイン後、サイト上部のタブより「AWS」を選択し、更に「Web ACL Config」を選択してください。

  3. (3)

    「Add」をクリックしてください。

  4. (4)

    各パラメータ項目を入力し「Save」をクリックしてください。

    パラメータ項目 入力事項
    Web ACL Config Name 表示したい任意のWeb ACL Config名を入力する。
    Web ACL ID 先ほど確認したWeb ACL IDを入力する。
    Web ACL Version AWS WAFのバージョンを選択する。
    今回は、AWS WAF(v2)を選択する。
    Choose AWS service Type

    AWS WAFにおいて、Web ACLをアタッチしている対象のリソースを選択する。今回の場合は、ALBのためデフォルト設定「ALB or API Gateway」を選択する。

    • WafCharmでは、AWS AppSync には対応していません。
    Choose your AWS Region 先ほど確認した Web ACLのAWSリージョンを選択する。
    Web ACL Access Key 先ほど確認したアクセスキーIDを入力する。
    Web ACL Secret Key 先ほど確認したシークレットアクセスキーを入力する。
    Default WAF Action

    WafCharm作るルールの適応するアクションを設定する。
    BLOCK:ルールに適応する通信を遮断すること。
    COUNT:ルールに適応する通信の検知すること。

    • この項目は設定変更を行うことが可能ですが、設定前に WafCharmで作成されたルールのアクションは変更されないためご注意ください。
    Blacklist 任意でIPアドレスのブラックリストを設定する。
    初期設定後、追加設定することも可能。
    Whitelist 任意でIPアドレスのホワイトリストを設定する。
    初期設定後、追加設定することも可能。
    Originating address

    調査するIPアドレスを選択する。

    • 今回は「Source IP address(アクセス元IPアドレス)」を選択します。
    • CDN等を使用している場合、Source IP address では、CDNのIPアドレスとなり適しません。その場合、IP address in header:X-Forwarded-ForなどのリクエストヘッダーのIPアドレスを選択してください。
  5. (5)

    各パラメータ項目を入力し「Save」をクリックしてください。

    パラメータ項目 入力事項
    Web ACL Config 先ほど作成したWeb ACL Config名を選択する。
    FQDN

    対象WebアプリケーションのFQDNを入力する。

    • 今回はALBのDNS名でアクセスするのでALBのDNS名を入力します。
    S3 Path

    先ほど入力したS3のpathを入力する。
    pathは以下のようになる。
    s3://<バケット名>/AWSLogs/<AWSアカウントID>/elasticloadbalancing/<リージョン名>/

    • バケット名: S3のバケット名
    • AWSアカウントID:AWSアカウントID
    • リージョン名:リージョン名
    • 東京リージョンの場合はap-northeast-1
    Access Key Option 「Reuse Web ACL Access Key」にチェックをいれる。

AWS WAFにWafCharmが追加されているかを確認する

設定したWeb ACLにWaf Charmが追加されているかを確認します。

  1. (1)

    AWS WAF 新規ウィンドウで開くを開き、左ペインより「Web ACLs」を選択してください。

    タブより「Web ACLのリージョン(今回はAsia Pacific)」を選んでください。選択後「Web ACL名(今回はTOKAI-WEBACL)」をクリックします。

  2. (2)

    「Rules」のタブを選択し、「WafCharm_○○○」から始まるルールが追加されているかを確認してください。WafCharm_○○○で始まるルールが表示されていれば、問題なく追加されています。

まとめ

今回は、WafCharmの構築を手順交えてご紹介しました。
WafCharm追加後は、アクセスログを基に機械学習によりルールの更新が行われます。しかしこれだけでは、WAF ルールの運用の機能が有効になっただけです。レポート、攻撃通知の機能を有効にする、実際に攻撃を受けた場合の対応など...。実際に運用をするには、攻撃を受けた際の対応を幾つも検討し実施していく必要があります。
弊社では、お客様の環境に合わせたAWS WAFの運用対応も行っております。構築や運用にお悩みの方、当記事を読んでAWS WAFに興味がある方など、是非当社までお問い合わせ 新規ウィンドウで開くください。

関連サービス

おすすめ記事

導入のお問い合わせはこちら

AWSやAmazon WorkSpacesの導入から接続回線、運用・保守まで何でもお任せください。

お問い合わせ・資料請求