ITの教科書検索
入門読了 約10分

WAFとは ― ファイアウォールとの違いと守れる攻撃

WAFは、ファイアウォールが通してしまうWebアプリへの攻撃を、通信の中身を読んで止める仕組みです。IPSとの違い、防げる攻撃と防げない攻撃、置き場所の種類を整理しました。

目次
  1. WAFとは:Webアプリへの通信の中身を検査する仕組み
  2. ファイアウォール・IPSとの違い
  3. 動かして確かめる:通信はどこで止まるか
  4. WAFで防げる攻撃と検査の方式
  5. WAFの限界:誤検知・見逃し・防げない攻撃
  6. WAFの置き場所と種類
  7. HTTPSの通信は復号してから検査する
  8. 練習問題

WAFとは:Webアプリへの通信の中身を検査する仕組み

WAFは、ファイアウォールが通してしまうWebアプリへの攻撃を、通信の中身を検査して止める仕組みです。ログイン画面にSQLインジェクションの文字列を送る要求も、宛先は許可したHTTPSのポートです。そのため、ファイアウォールは通します。

WAFは要求の中身まで読み、攻撃のパターンを見つけると遮断します。WAFはWeb Application Firewallの略です。

IPAの資料「WAF読本」によると、WAFは攻撃による影響を減らす対策です。脆弱性を直す根本的な対策には入りません。同じ資料は、複数のWebアプリへの攻撃をまとめて防げることを、WAFの効果に挙げています。

ファイアウォール・IPSとの違い

ファイアウォールは、送信元と宛先のIPアドレスやポート番号で通信を選びます。Webサイトを公開するには、443番などのポートを開けておく必要があります。そのポートを通ってくる攻撃は、ファイアウォールでは止められません。

WAFは、ファイアウォールを通ってきたHTTPの要求の中身を調べます。見るのは、URLとその後ろに付いた入力値、ヘッダや送信されたフォームの値などです。WAF読本は、Webサーバが返す応答の中身も検査の対象に挙げています。

利用者ファイアウォールWAFWebサーバ要求を送る許可したポートだけ攻撃以外IPヘッダ送信元・宛先IP送信元・宛先IPTCPヘッダ宛先ポート番号宛先ポート番号HTTPの中身見ないURL・入力値利用者要求を送るファイアウォールIPヘッダ:送信元・宛先IPTCPヘッダ:宛先ポート番号HTTPの中身:見ない許可したポートだけWAFIPヘッダ:送信元・宛先IPTCPヘッダ:宛先ポート番号HTTPの中身:URL・入力値攻撃以外Webサーバ
色の付いた部分が、それぞれの判断に使う情報です。ファイアウォールはIPアドレスとポート番号で通信を選び、HTTPの中身は見ません。WAFは、許可したポートを通ってきた要求の中身を調べます。

IPSも、通信の中身を検出パターンと照らし合わせます。違うのは、守る相手の広さです。IPSは、OSの脆弱性を突く攻撃やファイル共有への攻撃など、さまざまな機器への攻撃を対象にします。

WAFは、守る相手をWebアプリに絞っています。その代わり、Webアプリに合わせた細かい検査ができます。IPSの置き場所や検知の方式は、IDSとIPSの記事で説明しています。

仕組み主に見るもの止める相手止められないもの
ファイアウォールIPアドレスとポート番号許可していない宛先への通信許可したポートを通る攻撃
IPS通信の中の攻撃のパターンさまざまな機器への攻撃暗号化されたままの通信の中の攻撃
WAFHTTPの要求と応答の中身Webアプリへの攻撃HTTPとHTTPS以外の通信

動かして確かめる:通信はどこで止まるか

同じWebサイトに、5種類の通信が来たとします。ファイアウォールは、インターネットから443番ポートへの接続だけを許可します。その後ろにWAFを置いた構成です。次の図で、通信の例を選べます。

通信の例
商品のページを開く要求です。宛先は443番ポートで、入力値は商品番号の12です。
ファイアウォール
通す
443番ポートはWebサイトの公開のために許可しているので、通します。
WAF
通す
中身に攻撃のパターンが無いので、通します。
Webサーバ
届く
要求が届き、商品のページを返します。

SQL文を含む入力は、ファイアウォールを通り、WAFで止まります。一方で、他人の注文番号を指定した要求は、どちらも通ってしまいます。

WAFで防げる攻撃と検査の方式

WAFが得意とするのは、要求の中身に特徴が表れる攻撃です。代表的なものは、SQLインジェクションとクロスサイトスクリプティングです。WAF読本は、CSRFを防ぐ機能を持つ製品もあるとしています。

攻撃のパターンと照らし合わせる方式

1つ目は、攻撃の特徴を並べた一覧と照らし合わせる方式です。一覧に一致した要求を、不正な通信とみなします。WAF読本はこの一覧をブラックリストと呼び、製品の提供元が用意したものを使えるとしています。

この方式は、どのWebアプリにも同じ一覧を使えます。その代わり、特徴が分かっている攻撃しか見つけられません。新しい攻撃の手口が分かるたびに、一覧を更新する必要があります。

IPAの補足資料は、2017年に公表されたApache Struts 2の脆弱性の例を挙げています。公表の翌日には、複数のWAFの提供元が、攻撃を遮断する検出パターンを公開しました。WAFの製品では、この検出パターンをシグネチャと呼びます。

ソフトウェアの修正版を当てる前でも、WAFで攻撃を止められる場合があります。補足資料は、適切に運用していれば被害を水際で食い止められる可能性があるとしています。

正しい値と照らし合わせる方式

2つ目は、正しい値の決まりと照らし合わせる方式です。たとえば、商品番号の欄には数字だけが入ると決めておきます。決まりに合わない要求を、不正な通信とみなします。

WAF読本は、この決まりの一覧をホワイトリストと呼んでいます。正しい値以外をすべて止めるので、まだ知られていない攻撃にも対応できます。ただし、Webアプリごとに一覧を作り、アプリの仕様を変えるたびに直す必要があります。

正しい値を決められるのは、WAFが守る相手を特定のWebアプリに絞っているからです。2つの方式の違いを表にまとめます。

方式比べる相手良い点手間
攻撃のパターンと照らす攻撃の特徴の一覧どのWebアプリにも同じ一覧を使える新しい手口が分かるたびに一覧を更新する
正しい値と照らすWebアプリごとの正しい値まだ知られていない攻撃にも対応できるアプリごとに作り、仕様の変更に合わせて直す

WAFの限界:誤検知・見逃し・防げない攻撃

WAFを入れても、すべての攻撃を防げるわけではありません。WAFは要求を機械的に検査するので、判定を誤ることがあります。正常な要求を攻撃と判定する誤りをフォールスポジティブと呼び、誤検知とも言います。

攻撃を正常と判定する誤りはフォールスネガティブで、見逃しとも言います。WAF読本は、2つを偽陽性と偽陰性と書いています。IDSとIPSの記事で説明した2つの誤りと、同じ考え方です。

誤検知は正しい利用者を止める

WAFは判定した要求を止めるので、誤検知が起きると正しい利用者がサービスを使えなくなります。WAF読本は、提供元の一覧の検出パターンを全部有効にすると、誤検知が起きることがあるとしています。そのときは、原因になった検出パターンを無効にします。

WAFには、不正と判定した要求を止めずに通し、記録だけを残す設定もあります。WAF読本は、この設定を導入のときの検証に使うとしています。

正しい値を決められない欄

正しい値と照らし合わせる方式でも、見逃しは起きます。問い合わせ欄のように自由に書ける欄では、正常な値を決められません。その欄には決まりを作れず、攻撃を見逃すことがあります。

WAFでは防げない攻撃

要求の形が正常と変わらない攻撃は、WAFでは止められません。WAF読本は、利用者ごとの権限の確かめ方に不備がある場合を例に挙げています。一部の利用者だけに許した機能を別の利用者が使う要求も、WAFからは正常な通信に見えます。

また、WAFが見るのは、一般的にHTTPとHTTPSの通信だけです。IPAの補足資料は、SSHを使った不正アクセスやFTPを使った不正なアップロードは検知できないとしています。こうした通信の入口は、ファイアウォールで絞ります。

このため、WAFは脆弱性の修正の代わりにはなりません。IPAは、ソフトウェアの修正などの根本的な解決と、WAFのような保険的な対策の両方を検討するよう勧めています。

WAFの置き場所と種類

WAFは、どこで要求を検査するかによって3つの型に分かれます。IPAの補足資料は、アプライアンス型・ソフトウェア型・クラウドサービス型に分けています。ここでは、3つ目をクラウド型と書きます。

アプライアンス型は、専用の機器をWebサーバの手前のネットワークに置く形です。Webサーバへの通信が、必ずこの機器を通るように構成を変えます。社内LANと分けたDMZにWebサーバを置くなら、その手前が置き場所になります。OWASPは、WAFをリバースプロキシの一種とみなせるとしています。

ソフトウェア型は、Webサーバの中にソフトウェアとして入れる形です。WAF読本は、この形がホスト型と呼ばれることもあると書いています。ネットワークの構成を変えずに入れられますが、Webサーバ1台ずつに入れる必要があります。

クラウド型は、組織の外にある事業者のサーバを経由させる形です。事業者のサーバが要求を検査し、問題のない要求を組織のWebサーバへ中継します。自社で機器を買わずに使え、検出パターンの更新も事業者が行います。

型置く場所良い点注意点
アプライアンス型Webサーバの手前のネットワークWebサーバに負担をかけない機器が高価で、ネットワークの構成の変更が要る
ソフトウェア型Webサーバの中ネットワークの構成を変えずに入れられるWebサーバの処理性能に影響することがある
クラウド型組織の外の事業者のサーバ導入までの期間が短い設定できる項目は事業者のサービスで決まる

ネットワークに置くWAFは、通信の経路の途中に入ります。WAF読本は、WAFを入れるとWebサイトの可用性が下がるおそれがあるとしています。クラウドのサービスとして使うWAFには、たとえばAWS WAFがあります。

HTTPSの通信は復号してから検査する

HTTPSの通信は、中身がTLSで暗号化されています。暗号化されたままでは、WAFはURLや入力値を読めません。WAFで要求を検査するには、どこかで復号した後の中身を見る必要があります。

ネットワークに置くWAFがHTTPSに対応していれば、WAF自身が復号して検査できます。このとき、WAFはWebサーバの代わりに利用者からのTLSの接続を受けます。TLSでは、サーバが証明書に対応する秘密鍵で署名して本物であることを示します。

このため、WAFにもWebサイトの証明書と秘密鍵を置きます。プロキシの記事で説明したTLS終端と、同じ形です。

ソフトウェア型のWAFは、Webサーバが復号した後の要求を検査します。WAF読本は、このためWAFがHTTPSに対応していなくても検査できるとしています。

WAFに復号の機能が無い場合は、ほかの機器が復号した後の区間に置きます。SSLアクセラレータは、暗号化と復号を専門に引き受ける機器です。その後ろで、HTTPのままWebサーバへ送る区間にWAFを置けば、中身を検査できます。

練習問題(全6問)

Q1WAFの説明として正しいものは?
Q2443番ポートだけを許可したファイアウォールの後ろにWAFを置いた。443番ポートあてにSQLインジェクションの要求が来たとき、正しいものは?
Q3正しい値を決めて照らし合わせる方式の特徴として、正しいものは?
Q4WAFで防ぎにくいものはどれ?
Q5復号の機能が無いWAFを、HTTPSで公開しているWebサイトに置く。どこに置けば中身を検査できる?
Q6WAFでフォールスポジティブが起きると、何が起きる?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

目的別の本の選び方を見る

セキュリティの記事を続けて読む

セキュリティ 全37本中26本目