良いWAFとはなんでしょうか?これに答えていきたいと思います。しかし、実際は答えにくい質問です。それはWAFにはっきりとした定義がないためです。仮に答えられたとしても具体的には、WAF技術の理解程度、製品が提供する機能や、ソリューションの目的要件などに応じて答えは異なります(実例:WAFEC)。
この質問に答えるために、プロキシの機能、アプリケーションレベルのファイアウォールの機能や、WAFの機能などを考慮するソリューションのシナリオを区別することが肝要でしょう。しかし、その答えは、普通のWAFフィルタリングをはるかに上回る長い要件リストを含むセキュリティソリューションの個々のプロジェクト要件に依存します。
「プロキシ」とは何ですか?
「プロキシ」という概念は誰かの代わりに何かをするという役割を説明します。つまりITでは、クライアントとサーバというコンポーネントの間の仲介的な役割を持つコンポーネントのことで、プロキシはクライアントとサーバの間に何らかの通信問題を解決するためのコンポーネントです。
しかし、”Http”のレベルでは、通信方法に関して少々違う概念が用いられいます。インバウンドの通信方向をカバーするプロキシは”リバースプロキシ”と表し、アウトバウンドの通信方向をカバーするプロキシは”フォーワードプロキシ”と表します。他のプロトコルではそのような区別はされていないので、普通のプロキシという概念が用いられます。
もう一つのプロキシの大切な区別はその機能によります。プロキシはクライアントとサーバの通信を促すためにあるので、ある程度両者の機能を把握しなければなりません。通信プロトコルの機能を満たすためにこれら全ての通信機能を実装することは不可欠です。もしプロキシが通信以外の機能が必要になった場合、クライアントとサーバのアプリケーションレイヤーの機能をも受け入れて実装する必要があります。
クライアントとサーバの全ての機能をカバーできるプロキシは少ないです。それは両者の各プロトコルの機能を理解しなければいけないだけでなく、更にアプリケーションのロジックまでカバーする必要があるからです。それを”フルプロキシ”という概念で表しています。こういった意味では、Airlock WAFはプレゼンテーションレイヤーまでのフルプロキシですが、ビジネスロジックまではカバーしていません。
「アプリケーションレイヤーファイアウオール」とは何ですか?
アプリケーションレイヤーファイアウォールという中立的な概念はアプリケーションレイヤー上(レイヤー5と6)のフィルタリング機能を提供するものです。それを実現する為にはアプリケーションのセッションレイヤーとコンテンツの特徴をある程度理解する必要があります。
アプリケーションレイヤーファイアウォールはスタンドアローンのコンポーネントとして実装されるか、アプリケーションサーバのプラグインとして実装されるかが考えられます。このような機能はディープ・パケット・インスペクションとして、ネクストジェネレーションファイアウォール(次世代ファイアウォール)でカバーされています。
そこで課題になってくるのは、アプリケーション処理の機能をどこまで把握できるかです。複雑化したウェブアプリケーションの場合では、普通のアプリケーションレイヤーファイアウォールを利用するとプロキシのフィルタリング機能は限界となってしまいます。複雑なウェブアプリケーションをカバーするには多数のプロトコルを実装する必要があり、ウェブアプリケーションの動作と各製品からの影響(例えばブラウザとウェブサーバのバーションの特徴等)も考慮する必要があります。
WAFとは何ですか?
WAF(ウエブアプリケーションファイアウオール)はアプリケーションレイヤーファイアウォールの特別な種類です。しかし、全てのWAF機能を次世代ファイアウォールでカバーすると、そのファイアウオールは非常に複雑な製品になってしまいます。そこで登場するのが専用のWAFです。専用のWAFはファイアウォールより正確にアプリケーションセキュリティのニーズをカバーします。ファイアウォールはインフラストラクチャーの世界に限られています。つまり、ウェブアプリケーションセキュリティを提供するにはアプリケーションレベルの特徴を正確に把握する必要があるということです。
他の非httpプロトコルのプロキシソリューションでもレイヤー5と6のフィルタリング機能を提供している場合、アプリケーションレイヤーファイアウォールとしてみなされます。とはいえ、数多くのプロキシソリューションは通信機能のみを提供しながら、上位レイヤーのためのフィルタリング機能は提供していません。そのため、プロキシソリューションの機能の分析において、フィルタリング機能と通信機能について特に注意する必要がでてきます。
以上の理由で、Airlockのようなネットワーク用のWAFはフィルタリング機能を提供するhttpルーターのようにみなされます。
インバウンドWAFのためのシナリオ
”WAF”という名前は、アプリケーション層のファイアウォールを意味します。そのために、このファイアウォール機能は、主にWebアプリケーションのフィルタリングを意味します。Webアプリケーションはクライアントリクエストの着信を待ちます。そして適切な応答をします。WAFはそのWebアプリケーションへの着信の接続シナリオを保護します。
WAFは、アプリケーションサーバの一部(WAFエージェント)、ネットワークベースのWAF(異なるIPアドレス上のリバースプロキシ)、またはネットワーク的透明性(アプリケーションと同じIPアドレスを持つ)があるWAFのフィルタリングサービを実現します。ネットワークに透明性があるWAFは、ネットワークフットプリントを持たないため展開が非常に簡単です。そして、セキュリティインフラストラクチャとしての柔軟性を制限するプロキシとしては機能しませんが、アプリケーションサーバ上のエージェントと専用のネットワークリバースプロキシと通信する組み合わせが可能です。
AirlockはスタンドアロンのネットワークWAFであり、インバウンドシナリオをカバーする専用のリバースプロキシです。そのため、Airlock WAFをアプリケーションサーバに統合する際、Webアプリケーションサーバ上にインストールの前提条件は必要ありません。ただし、拡張機能を提供するモジュールなどを利用した場合、特定のエージェントをインストールする必要がある場合もあります。
アウトバウンドWAFのためのシナリオ
よく知られているアウトバウンドのシナリオは、インターネットを閲覧しているユーザを保護するものです。このようなソリューションは、悪意のあるコードをダウンロードしないようにするためまたはデータ漏洩を防止するための対策です。これは”フォワードプロキシ”と呼ばれていますが、WAFのシナリオとは関係ありません。
それにもかかわらず、外部のパートナー企業のWebサービスやAPIなどを使用した内部のアプリケーションといったシナリオがよくあります。それらを保護するために特定の”フォワードプロキシ”としてAirlock WAFとSOAP/XML Validatorが使用可能です。そのようなソリューションは、SOAのサービスが予想する既知の処理(ホワイトリスト手法)に基づいてWebサービスをフィルタリングします。ホワイトリストの実装が行われるのは一度きりであり、データのペイロード以外のものは通常通れません。
ディパオロ・ロベルト (Author: Roberto Di Paolo)
2016/02/05、 last update 2018/07/27 ©ACROSEC Inc.