概要

はじめに

  • 今回は、AWS WAF + WafCharm をトライアルで導入する方法を手順にまとめました。なお、WafCharm の契約プランには、30日間まで無償で試せる”トライアル”、有償の”エントリー”、”ビジネス”、”エンタープライズ” の4種類があります。次に担当する案件の事前学習のため、WafCharm をトライアルで導入してみます!

AWS WAF とは

  • WAF(Web Application Firewall)は、脆弱性を悪用した攻撃などからウェブアプリケーションを保護することが目的です。WAFは通信内容を検査し、不正なアクセスを遮断するルールセットを持ちます。
  • AWS WAF は、AWSが提供するWAFのクラウドサービスです。SQLインジェクションやクロスサイトスクリプティングなど悪意のあるリクエストのブロックや、Rate-based rulesやIP & Geo-IP filtersなどカスタムルールに基づいたWebトラフィックのフィルタが可能です。
  • AWS WAF は、CloudFront, ALB あるいはAPI Gateway に Web ACL を関連付けして利用します。
  • AWS WAF の詳細は、AWSのBlackbelt 、WafCharmが発行するこちらのブログをご覧ください。

WafCharm とは

  • WafCharm は、サイバーセキュリティクラウドが提供しているAWS WAFの運用支援サービスです。WafCharmはWAFではなく、AWS環境でAWS WAF を利用している場合に組み合わせて利用するサービスとなります。
  • 本来、AWS WAFの運用はセルフサービスであり、ユーザ側での運用が必要です。しかし、WAFの防御ルール作成には専門家の知識が必要であり、かつWebアプリケーションの脆弱性などに追従したチューニングも不可欠です。AWS WAFにWafCharm を導入することによって、防御ルールのチューニングが自動化されるため、運用が楽になります。

AWS WAF + WafCharmトライアルの導入方法

前提条件

  • CloudFront で提供するWebサービスに、AWS WAF、WafCharmを導入する手順を記載します。CloudFront には、事前にアクセスログ取得の設定を行います。未設定の場合は、下記記事を参考にしてください。
  • AWS WAF は、CloudFront以外にALB あるいはAPI Gatewayでも使用可能です。構成に合わせて、選択してください。
CloudFrontのディストリビューションにアクセスログを設定する概要CloudFrontにアクセスログを設定する方法を紹介します。CloudFrontにアクセスログを設定することで、ユーザーリクエストをログに記録することができます。CloudFrontのアクセスログは、S3の指定バケ...

AWS WAF 構築

Web ACLの作成

  • AWS WAFのコンソールを開きます。

  • [Creare web ACL]を選択します。

  • Web ACL detailsにおいて、Web ACLのNameを入力し、Resource typeにCloudFront distributionsを選択します。(ALB, API Gatewayの場合はRegional resourcesを選択します)
  • 次に、Associated AWS resourcesにおいて、[Add AWS resources]を押します。

  • Add AWS resourcesにおいて、対象のCloudFront のリソースを追加します。
  • [Next]を押して、進みます。

  • Add rules and rule groups は特に追加せず、[Next]を押します。「Default web ACL action for requests that don’t match any rules」は、”Allow” とします。

  • Set rule priorityは特に追加せず、[Next]を押します。

  • Configure metricsは特に追加せず、[Next]を押します。

  • Review and create web ACLにおいて、設定に問題がなければ、[Create web ACL]を押します。

  • 下記画面の通り、Web ACLが作成できました。WafCharmの設定に使用するため、Web ACL ID を控えておきます。

  • CloudFront のディストリビューション設定から、Web ACL と関連付けが完了したことが確認できます。なお、CloudFront側はディストリビューションのStateが一時的にIn Progress となりますので、僅かな遅延などあるかもしれません。ご注意ください。

  • 念のため、Web ACL作成後、ブラウザやcurlなどを使用してWebサービスにアクセスができること(ブロックされていないこと)を確認します。

WafCharm 構築

WafCharm用のIAM作成

  • WafCharm がWeb ACLを更新するためのIAM を作成します。なお、このIAM は、CloudFront のアクセスログが格納されたS3 バケットをread するための役割も兼ねます。(Web ACLと、S3 バケットへのアクセス権限を分けて、IAMを作成することも可能です)
  • アクセスの種類は、「プログラムによるアクセス」のみチェックし、「AWS マネジメントコンソールへのアクセス」は不要です。今回必要なポリシーは、「AWSWAFFullAccess」と「AmazonS3ReadOnlyAccess」の2つとなります。WafCharmの設定に使用するため、作成したIAMのアクセスキーとシークレットアクセスキーを控えます。

WafCharmアカウントの作成

  • 下記ウェブより、WadCharmアカウントを作成します。アイレットなどWafCharm の代理店に依頼する場合は、WadCharmアカウントの手順は不必要です。
  • 上記アカウント登録フォームにアクセスします。下記画面が表示されるため、メールアドレスとパスワードでアカウント登録を実施します。

  • メールアドレス確認のメールから、”確認する”のリンクをクリックします。

  • アカウント情報として、「名前」、「会社名」、「住所」、「電話番号」の入力が必要です。[アカウントを登録してすすむ]を押します。

  • 契約プランに、”トライアルプラン”を選択します。

  • “トライアルプラン”の場合もクレジットカードの入力が必須です。なお、トライアル目的で使用する場合は、WafCharmの利用期間(30日間)に注意してください。
  • ビジネスプランとエンタープライズプランの場合は、請求書払いが選択可能になります。

  • 契約内容を確認して、[プラン契約に申込む]を押します。
  • 下記の画面が表示され、アカウント作成とプラン契約の申し込みが完了しました。

Web ACL & Web Site の登録

  • 次に、Web ACL を登録します。[Web ACL Config]を選択し、[Add] を押します。

  • 先にAWSコンソール側で設定した内容を元に、必須の項目を入力します。(次に詳細を説明します)

  • Web ACL ID、Web ACL Name、IAMのアクセスキー、シークレットアクセスキー(“AWSWAFFullAccess” の権限が付与されていること)を入力します。
  • Rule limitは、デフォルト値で構いません。(AWS WAF Classicの場合に使用する設定)
  • Web ACLをアタッチしているリソースを選択します。今回は、CloudFront を選択します。AWS regionは、ALB or API Gatewayのリソース使用時のみ選択可です。
  • 必要に応じて、Blacklist、Whitelistを設定します。後からでも設定可です。
  • WafCharmが対象Web ACLにルールを適用する際のデフォルトアクションを設定できます。今回は、最初に様子見のため、”COUNT” とします。

  • 続いて、Web Site を登録します。対象のWeb ACL を選択、対象のWebアプリケーションのFQDN を入力します。
  • CloudFront アクセスログの出力先のパスを設定します。ALB の場合は、ALB アクセスログのパスを設定します。(CloudFrontの例:s3://bucket-name.s3.amazonaws.com/cf-logs/)
  • S3 バケットをread するためのIAMのアクセスキー、シークレットアクセスキーを設定します。今回はAWS WAF と同じIAM を使用しますので、チェックを付けます。(“AmazonS3ReadOnlyAccess” が付与されていること)
  • CloudFront, ALB のどちらを使用するかで、アクセスログのパス指定が異なります。ご注意ください。API Gatewayの場合は、WafCharmの最新情報を確認ください。

CloudFrontの場合
S3://bucket-name.s3.amazonaws.com/optional-prefix/
ALBの場合
S3://bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/

  • Web ACLとWeb Site の登録が完了しました。

Web ACLのルール更新を確認する

  • WafCharmの設定後、AWS WAF のコンソールを確認しますが、Web ACLのルールは未だ更新されていません。
    ※なお、CloudFront のリソースに関連付けたWeb ACLを確認する際、Regionに”US East (N. Virginia)”ではなく、”Global (CloudFront)” を選択し直します。

  • WafCharm管理画面より「Account」をクリックし、ログ集計の“今月”の数値がカウントアップされたことを確認します。

  • 翌日、AWS WAF のコンソールにおいてリクエストが検出されており、ルールが更新されていることが確認できました。なお、ルールの更新は1日に1度になります。

  • ”wafcharm-“から始まるルール名のルールが存在しています。これで、WafCharmによる運用が開始されました。

WafCharmレポート機能/通知機能について

  • 今回ご紹介した構築に続き、下記記事でご紹介する追加構築を行うことで、WafCharm のレポート機能/通知機能が利用可能です。ただし、KinesisおよびLambda を利用するため、追加で料金が発生します。ご承知おきください。
概要 前回は、AWS WAF + WafCharm をトライアルで導入する方法を手順にまとめました。今回はWafCharm のレポート機能を追加構築して、月次レポートを閲覧できるようにしたいと思います。 AWS WAF + WafCharmの構築については、下記記事を参照ください。AWS WAF + Waf...
概要 前回までは、AWS WAF + WafCharm をトライアルで導入する方法と、WafCharm レポート機能の構築方法を手順にまとめました。今回はWafCharm の通知機能を追加設定して、テスト用に投げたリクエストがブロックされること、正しくメール通知がされることまでを確認...

参考資料

AWS WAFドキュメント

AWS WAFの制限

AWS WAF には、次のクォータが適用されます (以前は制限と呼ばれていました)。これらのクォータは、AWS WAF が利用可能なすべてのリージョンで同じです。各リージョンでは、これらのクォータが個別に適用されます。クォータは、リージョンにまたがって累積されません。

WafCharmドキュメント

WafCharm代理店

クロスサイトスクリプティングやSQLインジェクションなどのインシデントを未然に防ぎ、Webサイトの安定運用を実現するAWS WAFを活用したネットワーク型のWAF運用サービスです。豊富な導入実績をもつcloudpackなら、クラウドで運用負荷を減らし本来取り組むべきお客様...

元記事はこちら

AWS WAF + WafCharmトライアルの導入方法