AWSでWAFを設定してみよう!

プログラミング
インターネットの普及に伴い、オンラインサービスへのサイバー攻撃の被害が深刻になっています。各サービスへのサイバー攻撃を未然に防ぐ対策として、WAF(ウェブアプリケーションファイアウォール)を設定することができます。AWS(アマゾンウェブサービス)が提供するWAFの特徴・料金・設定手順を解説します。
AWSでWAFを設定してみよう!

世界規模の通販サイトAmazonは商品の通販以外のサービスも提供しています。
新しくサーバーを導入する際、AWSを候補の一つに選ぶ企業・個人が増えてきています。サーバー構築にあたりセキュリティ対策は気になるところです。この記事では、Amazonが提供するWAFを解説します。

AWSでも用いられるWAFとは

WAFの正式名称は、Web Application Firewallです。
名前の通り、WebサーバーやWebサイトを保護するファイアウォールです。ユーザーとWebサーバー間の通信を監視し、シグネチャ(不正な値・通信パターンを定義するルール)に一致した通信を攻撃と判断しブロックすることができます。

WAFはなぜ必要?

WAFが必要とされる主な理由は、Webアプリケーションに脆弱性が存在する点があげられます。
WEBアプリケーションの開発時にすべてのセキュリティ要件を考慮し脆弱性への対策を実現できれば、脆弱性を悪用したサイバー攻撃への対策ができます。しかしWEBアプリケーションのリリースのスピードが求められる中、限られたマンパワー、リソースで、すべてのセキュリティ対策を実現するのは困難です。
そのため、このWAFが必要となるのです。

アプライアンス型WAFとクラウド型WAF

代表的なWAFには、「アプライアンス型」と「クラウド型」があります。
アプライアンス型は、エンドユーザーとWebサーバー間のネットワーク上に機器を設置するタイプのWAFです。
一方、クラウド型は、インターネット経由でサービスとして導入するタイプのWAFです。

アプライアンス型WAFは、ハードウェアの購入やシステムの構築が必要となってくるため、初期導入費用が高額になります。また、ネットワークの設定作業、シグネチャの編集作業等、専門的な設定を行うため、高度な専門知識をもった技術者による運用が必要になります。
保護するサーバー台数や、ウェブアプリケーションが多い場合は費用面でのメリットが出てくるでしょう。

クラウド型WAFは、アプライアンス型WAFと比べて低価格、かつ簡単に導入できます。
機器の購入は必要ありません。また、運用作業、ネットワークの設定作業やシステム変更等はベンダーが行います。さらに、インターネット経由でのサービスのため、どこでも運用が可能です。

クラウド型WAFの料金は、保護するサイト数・トラフィック数によります。そのため、多数のサイトに導入する、もしくはトラフィックの多いサイトに導入する場合、月々の料金がどれほどになるか、事前に調査する必要があります。

WAFサービスの比較

Googleで、「クラウド型WAF」と検索すると、多くの検索結果が出てきます。その中から、幾つかのWAFサービスをピックアップします。

(1) アプライアンス型WAF

(2) クラウド型WAF

アプライアンス型WAFはコスト面で高額になります。一方、クラウド型WAFは比較的安価で導入できることがわかります。導入前によく調査し、会社に最も適したWAFを選択しましょう。

AWS WAFの設定

AWSのWAFは、クラウド型WAFです。
低コストで、比較的シンプルなポリシーの設定で導入が可能です。条件に基づきウェブリクエストを許可、ブロック、または監視ができます。

設定できる条件には、IPアドレス、HTTPヘッダー、HTTP本文、URI文字列、SQLインジェクション、およびクロスサイトスクリプトが含まれます。AWS WAFは初期費用は発生しませんが作成するウェブアクセスコントロールリスト (ウェブACL)の数、ウェブACLごとに追加するルールの数、および受信するウェブリクエストの数に基づいて課金されます。

では、AWS WAFの開始方法と設定手順を見ていきましょう。

AWS WAFの使用開始方法

AWS WAFの使用開始にあたってまず、AWSアカウントを設定しログインします。
次に、ウェブアクセスコントロールリスト(ウェブACL)を作成します。条件が付与されたルールを作成し、このウェブACLに設定します。

設定手順は、次の見出しで詳しく説明します。

AWS WAFの設定手順 - 10ステップ

では、AWS WAFを使用するための設定手順を10ステップにわけて解説します。

ステップ1:AWS WAFを設定する
AWSアカウントにサインアップし、セットアップを実行します。

ステップ2:ウェブACLを作成する
AWS WAFコンソールより、ウェブACLを作成します。

ステップ3:IP一致条件を作成する
IP一致条件を作成します。リクエストの発生元のIPアドレスまたはIPアドレス範囲を指定します。指定したIPアドレスからのリクエストを許可するかブロックするかは、後のステップで指定します。

ステップ4:Geo一致条件を作成する
Geo一致条件を作成します。リクエスト送信元の1つ以上の国を指定します。指定した国から送信されたリクエストを許可するかブロックするかは、後のステップで指定します。

ステップ5:文字列一致条件を作成する
文字列一致条件を作成します。リクエストでAWS WAFによって検索される文字列(ヘッダーまたはクエリ文字列で指定した値など)を識別します。また、文字列一致条件を作成するにあたり、正規表現条件を作成することもできます。指定した文字列を含むリクエストを許可するかブロックするかは、後のステップで指定します。

ステップ6:SQLインジェクション一致条件を作成する
SQLインジェクション一致条件を作成します。悪意のあるSQLコードの有無が検査されるウェブリクエストの部分(ヘッダーやクエリ文字列など)を識別します。悪意のある可能性があるSQLコードを含むリクエストを許可するかブロックするかは、後のステップで指定します。

ステップ7:(オプション)追加の条件を作成する
追加の条件がある場合は作成します。作成は任意ですので、追加条件がない場合は次のステップに進みます。追加の条件には、「サイズ制約条件」、「クロスサイトスクリプティング一致条件」等があります。

ステップ8:ルールを作成して条件を追加する
まず、ルールを作成します。その後、ウェブリクエストで検索される条件を指定します。同じルールに複数の条件を追加した場合、すべての条件に一致した場合にのみ、リクエストが許可または拒否されます。

ステップ9:ルールをウェブACLに追加する
前のステップで作成したルールをウェブACLに追加する場合、次の設定を指定します。 ・ルールのすべての条件に一致するウェブリクエストへのアクション(リクエストの許可、ブロック、カウント) ・ウェブACLのデフォルトアクション。(リクエストの許可または拒否)

ステップ10:リソースをクリーンアップする
AWS WAFにおいて、不要な追加料金が発生しないように作成したAWS WAFオブジェクトをクリーンアップします。

詳しくは、各ステップの詳細が説明されている下記ページを参照してください。

https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/waf-chapter.html

まとめ

日々新たなWebアプリケーションの脆弱性を悪用したサイバー攻撃が生まれています。Webサービスを提供する企業にとってWAFは必須のセキュリティ対策の一つと言えるでしょう。
AWS WAFを活用し、セキュリティ対策を実践しましょう!


この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム