waf(Webアプリケーションファイアウォール)

WAF(Webアプリケーションファイアウォール)とは?ロリポップで【WAF】がちゃんと機能しているか確認してみた

webサイトを公開しているサーバーでは、ほとんどが「ファイアウォール」の中で運用されています。

ですが、ここでいう「ファイアーウォール」とは、現在最も普及している ”IP・ポートレベルでのフィルタリング” を行ってくれる「ファイアウォール」になります。

もちろん、この「ファイアーウォール」も必要で、許可していないサービス(例えば「FTP」)に、外部からアクセスがあった場合、遮断してくれるため非常に有用ではありますが、十分ではありません。

なぜなら、Webサイトを公開する場合、「Http」で外部と通信しなければなりません。

ですが、上述している「ファイアウォール」では、「Http」で通信する際の情報(パラメータ等)までフィルタリングを行ってくれません(「HTTP」を許可しない設定はできますが、それではそもそも通信自体ができなくなります)

※「HTTP」についての解説は、こちら→【http(通信プロトコル)とは?httpの仕組みと、通信内容(リクエストヘッダとレスポンスヘッダ)の確認手順まとめ】

そこで、上記の問題を解決してくれるのが、Webサイトの運用に特化したファイアーウォールである「WAF」です。

今回の記事では、この「WAF」の仕組み(様々な機能)についてと、

身近な例として、レンタルサーバーのロリポップで採用されている「WAF」がちゃんと機能しているかを確認してみます。
また、オープンソースの「WAF」サービスである「mod_security」についても、紹介していきます。

※レンタルサーバーの「ロリポップ」については、下記にて詳しく解説しています。
ロリポップ(lolipop)レンタルサーバーを180日使ってみて、利点欠点をまとめてみた

では、以下目次になります。

  • WAF(Web アプリケーション ファイアーウォール)とは
  • ロリポップで【WAF】がちゃんと機能しているか確認してみる
  • 「WAF」をオープンソースで実現する【mod_security】について

WAF(Webアプリケーションファイアーウォール)とは

waf(Webアプリケーションファイアウォール)とは

WAFとは、上述している通り、「Http」で通信する際の情報(パラメータ等)をフィルタリングしてくれる機能が主な役割になります。
なので、外部からのアクセス内容が「WAF」によって不正と判断されたら、そのアクセスを遮断してくれます。

これによって、有名な攻撃手法である「クロスサイトスクリプティング」や「SQLインジェクション」・「HTTPヘッダインジェクション」といった攻撃を防ぐ事が可能になります。

Webサイトの管理者であれば、「IP・ポートレベル」での低レイヤーからの攻撃のほかに、このような「クロスサイトスクリプティング」や「SQLインジェクション」といったアプリケーションレベルでの高レイヤーからの攻撃に対しての対策もしておかなければなりません。

これを満たしてくれるのが「WAF」の役割なのです。

では、具体的にどのようなリクエストやパラメータをフィルタリングしてくれるのか、、、下記にまとめました。

  • 【URL】・・・「あらかじめ定めておいたURL」へのアクセスを遮断することができます
  • 【HTTPヘッダ】・・・HTTPのヘッダ情報によって、フィルタリングすることができます。

    例えば、HTTPヘッダの情報には、アクセス元の「ブラウザ情報やOS情報」だったり、リクエストメソッド(GET・POSTが一般的)の情報が含まれているので、これらの情報でフィルタリングすることができます。

  • 【GET・POSTリクエスト時のパラメータ】・・・GET・POSTリクエスト時のパラメータに、不正な文字列が設定されていた場合は、アクセスを遮断することができます。

    例えば、”<script>” といった文字列が設定されていた場合は、スクリプトを埋め込まれる可能性があるため、不正な文字列と設定し、アクセスを遮断(又はサニタイズする)した方が良いでしょう。

  • 【Cookie情報】・・・Cookie情報によっても、フィルタリングすることができます

以上です。「WAF」では、上記のような項目で、アクセスをフィルタリングすることができます。

また「WAF」には、もう一つの役割として「アクセスログ」を取得することができます。
アクセス時のリクエストデータ(パラメータ)を、ログとして残せるので、不正なリクエストでのアクセスを確認する事ができます。

ロリポップで【WAF】がちゃんと機能しているか確認してみる

ロリポップ WAF機能

ロリポップでは、2012年09月27日より、全プランで「WAF」が標準搭載されています(参考元は→「ロリポップ! 不正アクセスによるサイト改ざんや情報漏洩を防ぐWAF機能を全プランに標準搭載」

そこで、当ブログが「ロリポップ」を採用している事もあるので、ちゃんと「WAF」が機能しているか確認してみます。

今回確認するのは、GETメソッド・POSTメソッドそれぞれで、「クロスサイトスクリプト」に該当するソースを含めたリクエストを送って、ちゃんと遮断されているかを確認してみます。

まずは、GETメソッドから確認してみます。

ロリポップのWAF(Web アプリケーション ファイアウォール)チェック:GETメソッド編

下図のように、スクリプト(javascript)を含めて、リクエスト(アクセス)してみます。

ロリポップ WAF機能 チェック

すると、ちゃんとアクセスが遮断されました(下図)

ロリポップ WAF機能 チェック

次に、スクリプトではないですが、「HTML」を含めて、リクエスト(アクセス)してみます(下図参考)

ロリポップ WAF機能 チェック

すると、下図のようにアクセスできてしまいました。

ロリポップ WAF機能 チェック

どうやら、スクリプトである “<script>” が、URLに含まれていたらアクセスが遮断されるみたいです。

次に、POSTメソッドでチェックしてみます。

ロリポップのWAF(Web アプリケーション ファイアーウォール)チェック:POSTメソッド編

当記事のコメント欄は、POSTメソッドでリクエストを送っているので、下図のようにスクリプトを含めたリクエスト(アクセス)をしてみます。

ロリポップ WAF機能 チェック

コメントの送信ボタンを押して、リクエスト(アクセス)をしてみると、ちゃんとアクセスが遮断されました(下図)

ロリポップ WAF機能 チェック

次に、「HTML」を含めて確認してみます(下図参考)

ロリポップ WAF機能 チェック

すると、正常にリクエスト(アクセス)され、コメント欄に、上図で設定した「HTML」が設定されました(下図)

ロリポップ WAF機能 チェック

POSTメソッドでも、スクリプトである “<script>” が、含まれていたらアクセスが遮断されました。

以上です。これらの結果から、ちゃんと「WAF」は機能していることが分かりました。

でも、「HTML」が普通に通されているのが、一点 気に掛かります。

上図のように、「HTMLのform」が設定できるなら、攻撃者によって「個人情報の入力を促すフォーム」も簡単に設置されてしまいます。

これによって、フォームが設置されたサイトに訪れた訪問者が、間違えて個人情報を入力してしまったら、、、個人情報の流出につながります。

ですが、「HTML」が含まれるリクエストが全て遮断されてしまったら、不都合が生じるサイトもあるでしょう。
ロリポップ側では、これを考慮して、「scriptタグ」以外の「HTML」は遮断しないように設定しているのだと思います。

なので、もし上述している事を不安視するサイトの管理者は、自サイトの方で対策しておきましょう。

また、下記のような記述をよく目にします。

「ロリポップ!でWordPressを導入すると403エラーになるので、その場合はWAFを停止するといいよ」

上記を参考にググッてみたら、いくつか同じように悩んでる方がいるみたいです(下記)

「WordPressをロリポップで使ってて更新ボタンを押すと403エラーが出て困った状況に陥った時はコレかもよ」
「ロリポップ WordPressで403エラーが出るのはWAF設定が原因かも」

ロリポップで「WAF」が標準搭載されたのは、2012年09月27日からで、同年の10~11月頃に上述している症状が多々出ていたみたいです。

ですが、現状では、問題なく使用できています(半年以上ロリポップを利用していますが、上記の症状は出ていません)
なので、おそらくロリポップ側がなにかしらの改善をしたのでしょう。

「WAF」をオープンソースで実現する【mod_security】について

WAFサービス 「mod-security」

当章では、「ロりポップ」のようなレンタルサーバーを利用している方は、あまり関係ない内容ですが、例えば “Webサイトを公開しているサーバーを自ら管理している方” 等を対象とした内容になっています。

「mod_security」とは、オープンソースの「WAF」サービスになります。

オープンソースとは、要は無料で利用できることを指します。

「mod_security」の特徴としては、Webサーバーである「Apache」のモジュールとして動作し、不正なアクセス(スクリプトやSQL文等が含まれているリクエスト)から、Apacheを守ってくれます。

まとめ

今回の記事では、「WAF」の仕組み解説と、レンタルサーバーのロリポップで採用されている「WAF」がちゃんと機能しているかの確認。また、オープンソースの「WAF」サービスである「mod_security」について紹介してきました。

Webサイトを公開している場合は、なるべくなら「WAF」を導入することをオススメいたします。
サーバーをレンタルしている場合は、ちゃんと「WAF」機能が備わっているサーバーを選定し、自社(自分)で、サーバーを管理している場合は、上述している「mod_security」等の「WAF」サービスを入れておきましょう。

また、サイトを運営している場合「HTTPを利用した攻撃」以外にも、様々な驚異から、サイトを守らなければなりません。

そこで、サイト運営者がやっておかなければならない「脅威対策」を、総合的にまとめている記事がありますので、ぜひ確認しておいてください→【ハッキング対策まとめ!自分のサイトを守るための9つの方法】

コメントを残す

メールアドレスが公開されることはありません。