WAF(Webアプリケーションファイアウォール)とは?ロリポップで【WAF】がちゃんと機能しているか確認してみたエンジニアの転職情報サイト現役のjavaエンジニアが運営する転職情報サイトです。更新日:2022-10-16WAF(Webアプリケーションファイアウォール)とは?ロリポップで【WAF】がちゃんと機能しているか確認してみたwebサイトを公開しているサーバーでは、ほとんどが「ファイアウォール」の中で運用されています。行ってくれる「ファイアウォール」になります。この「ファイアーウォール」も必要で、許可していないサービス(例えば「FTP」)に、外部からアクセスがあった場合、遮断してくれるため非常に有用ではありますが、十分ではありません。Webサイトを公開する場合、「Http」で外部と通信しなければなりません。上述している「ファイアウォール」では、「Http」で通信する際の情報(パラメータ等)までフィルタリングを行ってくれません(「HTTP」を許可しない設定はできますが、それではそもそも通信自体ができなくなります)※「HTTP」についての解説は、こちら→【http(通信プロトコル)とは?httpの仕組みと、通信内容(リクエストヘッダとレスポンスヘッダ)の確認手順まとめ】そこで、上記の問題を解決してくれるのが、Webサイトの運用に特化したファイアーウォールである「WAF」です。身近な例として、レンタルサーバーのロリポップで採用されている「WAF」がちゃんと機能しているかを確認してみます。オープンソースの「WAF」サービスである「mod_security」についても、紹介していきます。※レンタルサーバーの「ロリポップ」については、下記にて詳しく解説しています。・ロリポップ(lolipop)レンタルサーバーを180日使ってみて、利点欠点をまとめてみたでは、以下目次になります。ファイアーウォール)とはロリポップで【WAF】がちゃんと機能しているか確認してみる「WAF」をオープンソースで実現する【mod_security】についてスポンサード・リンクWAF(Webアプリケーションファイアーウォール)とはWAFとは、上述している通り、「Http」で通信する際の情報(パラメータ等)をフィルタリングしてくれる機能が主な役割になります。外部からのアクセス内容が「WAF」によって不正と判断されたら、そのアクセスを遮断してくれます。これによって、有名な攻撃手法である「クロスサイトスクリプティング」や「SQLインジェクション」・「HTTPヘッダインジェクション」といった攻撃を防ぐ事が可能になります。Webサイトの管理者であれば、「IP・ポートレベル」での低レイヤーからの攻撃のほかに、このような「クロスサイトスクリプティング」や「SQLインジェクション」といったアプリケーションレベルでの高レイヤーからの攻撃に対しての対策もしておかなければなりません。これを満たしてくれるのが「WAF」の役割なのです。具体的にどのようなリクエストやパラメータをフィルタリングしてくれるのか、、、下記にまとめました。【URL】・・・「あらかじめ定めておいたURL」へのアクセスを遮断することができます【HTTPヘッダ】・・・HTTPのヘッダ情報によって、フィルタリングすることができます。HTTPヘッダの情報には、アクセス元の「ブラウザ情報やOS情報」だったり、リクエストメソッド(GET・POSTが一般的)の情報が含まれているので、これらの情報でフィルタリングすることができます。【GET・POSTリクエスト時のパラメータ】・・・GET・POSTリクエスト時のパラメータに、不正な文字列が設定されていた場合は、アクセスを遮断することができます。いった文字列が設定されていた場合は、スクリプトを埋め込まれる可能性があるため、不正な文字列と設定し、アクセスを遮断(又はサニタイズする)した方が良いでしょう。【Cookie情報】・・・Cookie情報によっても、フィルタリングすることができます以上です。「WAF」では、上記のような項目で、アクセスをフィルタリングすることができます。「WAF」には、もう一つの役割として「アクセスログ」を取得することができます。アクセス時のリクエストデータ(パラメータ)を、ログとして残せるので、不正なリクエストでのアクセスを確認する事ができます。不正アクセスによるサイト改ざんや情報漏洩を防ぐWAF機能を全プランに標準搭載」)そこで、当ブログが「ロリポップ」を採用している事もあるので、ちゃんと「WAF」が機能しているか確認してみます。今回確認するのは、GETメソッド・POSTメソッドそれぞれで、「クロスサイトスクリプト」に該当するソースを含めたリクエストを送って、ちゃんと遮断されているかを確認してみます。GETメソッドから確認してみます。下図のように、スクリプト(javascript)を含めて、リクエスト(アクセス)してみます。すると、ちゃんとアクセスが遮断されました(下図)次に、スクリプトではないですが、「HTML」を含めて、リクエスト(アクセス)してみます(下図参考)すると、下図のようにアクセスできてしまいました。URLに含まれていたらアクセスが遮断されるみたいです。次に、POSTメソッドでチェックしてみます。当記事のコメント欄は、POSTメソッドでリクエストを送っているので、下図のようにスクリプトを含めたリクエスト(アクセス)をしてみます。含まれていたらアクセスが遮断されました。これらの結果から、ちゃんと「WAF」は機能していることが分かりました。上図のように、「HTMLのform」が設定できるなら、攻撃者によって「個人情報の入力を促すフォーム」も簡単に設置されてしまいます。これによって、フォームが設置されたサイトに訪れた訪問者が、間違えて個人情報を入力してしまったら、、、個人情報の流出につながります。「HTML」が含まれるリクエストが全て遮断されてしまったら、不都合が生じるサイトもあるでしょう。ロリポップ側では、これを考慮して、「scriptタグ」以外の「HTML」は遮断しないように設定しているのだと思います。上述している事を不安視するサイトの管理者は、自サイトの方で対策しておきましょう。下記のような記述をよく目にします。WordPressで403エラーが出るのはWAF設定が原因かも」ロリポップで「WAF」が標準搭載されたのは、2012年09月27日からで、同年の10~11月頃に上述している症状が多々出ていたみたいです。現状では、問題なく使用できています(半年以上ロリポップを利用していますが、上記の症状は出ていません)なので、おそらくロリポップ側がなにかしらの改善をしたのでしょう。等を対象とした内容になっています。「mod_security」とは、オープンソースの「WAF」サービスになります。オープンソースとは、要は無料で利用できることを指します。「mod_security」の特徴としては、Webサーバーである「Apache」のモジュールとして動作し、不正なアクセス(スクリプトやSQL文等が含まれているリクエスト)から、Apacheを守ってくれます。まとめ今回の記事では、「WAF」の仕組み解説と、レンタルサーバーのロリポップで採用されている「WAF」がちゃんと機能しているかの確認。オープンソースの「WAF」サービスである「mod_security」について紹介してきました。Webサイトを公開している場合は、なるべくなら「WAF」を導入することをオススメいたします。サーバーをレンタルしている場合は、ちゃんと「WAF」機能が備わっているサーバーを選定し、自社(自分)で、サーバーを管理している場合は、上述している「mod_security」等の「WAF」サービスを入れておきましょう。サイトを運営している場合「HTTPを利用した攻撃」以外にも、様々な驚異から、サイトを守らなければなりません。コメントをキャンセルメールアドレスが公開されることはありません。~未経験者へのおすすめも。~未経験者についても。~求人情報の見方や注意点も。