この記事では、AWS WAFの自動運用ツール「WafCharm」についてご紹介します。
AWS WAF の運用については、下記の記事でも紹介しておりますので参考にしてください。
WafCharmとは?
概要
WafCharm とは、株式会社サイバーセキュリティクラウド(以下、CSC社)が提供している、AWS WAFの運用支援サービスです。WafCharmを利用すると、ビッグデータ・機械学習を用いてWAFルールを運用し、マネージドルールの運用を自動で最適化することができます。
WafCharmでは、基本的にAWS WAFを経由したALBやCloudFrontのアクセスログを対象に、最新のセキュリティ情報を用いた機械学習による分析が行われます。分析された結果から適切にAWS WAFルールの自動更新を行い、自動更新で対応できない場合は、CSC社様のサポートにより手動でルールが作成される場合もあります。
WafCharmではAWS WAFの運用に必要な機能が、一通り提供されています。そのため、マネージドルールの運用で課題だった「ルールのチューニングが出来ないため、適切なルールを選択できない」「意図しない通信のブロックが発生する」という点は、WafCharmで解決することが可能です。
WafCharmの主な機能は下記の通りです。
機能 | 意味 |
---|---|
レポート |
ログの分析結果をグラフで提供すること。
|
攻撃通知 |
攻撃をうけた際に通知をする機能のこと。
Attacks as follows were detected. |
サポート |
意図しない通信のブロックが発生した場合や、特殊なルールのカスタマイズは、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)
- (2)
IAMユーザー詳細の設定を行います。
ユーザー名は任意の名前を入力してください。AWSアクセスの種類を選択 では、作成したIAMユーザーのAWSアクセス方法を設定できます。今回はアクセスキーからアクセスしたいため、アクセスの種類より「プログラムによるアクセス」を選択してください。選択後「次のステップ:アクセス権限」をクリックしてください。
- (3)
作成したIAMユーザーのアクセス許可設定を行います。
ご自身の目的にあったアクセス許可の設定を行って下さい。今回は、アクセス許可の設定より「既存のポリシーを直接アタッチ」を選択します。
選択後、既存のポリシーを直接アタッチできます。アタッチしたいポリシーを検索し、アタッチしてください。
今回は「AWSWAFFullAccess AmazonS3ReadOnlyAccess」を検索欄に入力し、アタッチします。
ポリシー名に「AmazonS3ReadOnlyAccess」「AWSWAFFullAccess」が表示されますので、これらを選択し、「次のステップ:タグ」をクリックしてください。 - (4)
タグの追加を行います。
追加したいタグがあれば、このタイミングで設定が可能です。今回はタグを追加しないので「次のステップ:確認を選択」をクリックしてください。
- (5)
今まで設定してきた内容を確認し「ユーザーの作成」をクリックしてください。
- (6)
これでアクセスキーを使用するIAMユーザーが作成できました。
シークレットアクセスキーの「表示」をクリックし、シークレットアクセスキーを表示させてください。
アクセスキーIDと表示されたシークレットアクセスキーをメモしてください。シークレットアクセスキーの再発行は不可能なので、必ずメモをして保管しておきましょう。
②機械学習を行うためのアクセスログを出力する。
ALBのログを出力し、属性の編集を行います。
- (1)
ログを出力したいALBにチェックを選択します。
AWS マネジメントコンソール よりAmazon EC2を開きます。
左ペインより「ロードバランサー」を選択し、ログを出力したいALBにチェックを入れてください。
その後、アクションタブより「属性の編集」を選択してください。 - (2)
ロードバランサー属性の編集をおこないます。
パラメータ項目(アクセスログ)を入力して、保存を選択してください。
- ※ パラメータ項目(削除保護、アイドルタイムアウト、WAFのフェイルオープン、TLS version and cipher headers、クライアントポートの保持)は、ログ出力とは無関係な項目のため入力・設定は不要です。
パラメータ項目 入力事項 HTTP/2 デフォルト設定のままにしておく。 Desync緩和モード デフォルト設定のままにしておく。 アクセスログ 有効化にチェックを入れる。 - ※ チェックを入れることでアクセスログを有効にできます。
S3の場所を入力する。 - ※ S3://日付+名前+albなど任意の名前を設定してください。
③WafCharmからAWS WAFのルールを編集したい、対象のWeb ACL IDを確認する。
対象のWeb ACL IDを確認していきます。
- (1)
AWS WAF を開き、左ペインより「Web ACLs」を選択してください。
タブよりルールを編集したい「Web ACLのリージョン(今回はAsia Pacific)」を選んでください。リージョン選択後、対象のWeb ACL IDを確認し、メモをとっておいてください。
WafCharmを構築する
WafCharmのアカウントを作成する
個人で検証のためにアカウントを作成したい方は、WafCharmの申込みページ よりアカウント登録、プラン契約のお申込みの手順を参照してください。
WafCharmのアカウントは、当社でも作成が可能です。企業で利用されたい方は、是非当社までご相談ください。
WafCharmにWebACL Configを登録する
- (1)
WafCharmログインページ からWafCharmアカウントにログインを行います。
- (2)
ログイン後、サイト上部のタブより「AWS」を選択し、更に「Web ACL Config」を選択してください。
- (3)
「Add」をクリックしてください。
- (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)
各パラメータ項目を入力し「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)
AWS WAF を開き、左ペインより「Web ACLs」を選択してください。
タブより「Web ACLのリージョン(今回はAsia Pacific)」を選んでください。選択後「Web ACL名(今回はTOKAI-WEBACL)」をクリックします。
- (2)
「Rules」のタブを選択し、「WafCharm_○○○」から始まるルールが追加されているかを確認してください。WafCharm_○○○で始まるルールが表示されていれば、問題なく追加されています。
まとめ
今回は、WafCharmの構築を手順交えてご紹介しました。
WafCharm追加後は、アクセスログを基に機械学習によりルールの更新が行われます。しかしこれだけでは、WAF ルールの運用の機能が有効になっただけです。レポート、攻撃通知の機能を有効にする、実際に攻撃を受けた場合の対応など...。実際に運用をするには、攻撃を受けた際の対応を幾つも検討し実施していく必要があります。
弊社では、お客様の環境に合わせたAWS WAFの運用対応も行っております。構築や運用にお悩みの方、当記事を読んでAWS WAFに興味がある方など、是非当社までお問い合わせ ください。
関連サービス
おすすめ記事
-
2020.06.23
Amazon Connectで在宅勤務でも対応できる問合せ窓口を立ち上げてみた
-
2020.08.17
Datadogで実現するモニタリングとオペレーションのオートメーション化
-
2020.04.27
Amazon FSx for Windows ファイルサーバーへの移行と活用方法
-
2020.06.11
Amazon WorkSpacesとは?その特長をまとめてみた
-
2020.06.23
AWSのDevOpsサービスと当社マネージドサービスを活用したDevOpsの実装①~概念編~