WAFとFWの違いとは?

 WAF。人によっては聞き慣れない単語かもしれません。インフラ系の方やWeb系で仕事をされている方にとっては、比較的馴染みがあろうかと思います。Web Application Firewallの略ですね。読んで字のごとく、「Webアプリケーションに対するファイアウォール」を意味します。

 では、世間一般で言われているファイアウォールとはどう違うのでしょうか?次世代ファイアウォールとして、UTMの存在もありますが、これに関しては後日取り上げることにします。
 ファイアウォール、略してFW。日本語訳では「防火壁」という意味になります。「インターネット上の攻撃から内部ネットワークを守るための機器」という表現も出来ます。ただ、プライベートネットワーク同士でも使用することがありますので、汎用的表現としてはアリですが、正確に表現しているわけではないことになります。
 ここでは、「複数のネットワーク間において、適切なアクセス制御を行うための機器」としておきます。

 さて、両者の違いですが、WAFはOSI参照モデル(こちらに関しても後日記事を書きます)で言うところの第7層(L7:アプリケーション層)での検知を行います。FWは第3層(L3:ネットワーク層)や第4層(L4:トランスポート層)での検知を行います。両者は見ている階層が全く違います。

 WAFはインターネット越しにあるクライアント(PCやスマホ・タブレット等)とWebサーバの間に設置して、SQLインジェクションやクロスサイトスクリプティング等、Webアプリケーションの脆弱性を突く攻撃から守る役目を果たします。WAFでWebサーバ向けの通信を一旦受けて、不正な通信をフィルタリングし、正常な通信のみをWebサーバに渡します。いわゆるリバースプロキシの役割も果たします。(リバースプロキシについては、改めて記事にします)

 実は、リバースプロキシ機能がポイントなのです。通信http(80/tcp)の場合は問題ないのですが、https(443/tcp)の場合が曲者です。httpsですと、クライアントとWebサーバの間の通信経路が暗号化されます。途中経路での通信の覗き見(悪く言えば盗聴ですね)が出来ません。一見セキュリティ面的には良さそうに見えますが、暗号化された通信経路の中を流れる通信が不正アクセスや攻撃だった場合はお手上げです。
 直接クライアントとWebサーバがhttpsで通信されては、WAFはどうしょうもありません。クライアントとWAFの間でhttps通信を行い、WAFとWebサーバの間はhttpで通信します。(ただし、この場合はWAFとWebサーバの間は信頼出来るネットワークで接続されていることが前提となります。)これにより、httpsであっても、Webサーバへの不正アクセスを未然に防ぐことが可能になります。

 対して、FWはIPアドレスやポート番号で判断します。特定の送信元IPアドレスからの通信を拒否したり、特定の番号への通信を拒否します。そのため、リストに載っていないIPアドレスからのWebサーバに向けた443/tcp通信は正常なものと判断します。FWではL4までしか見ないため、通信内容まで検査することが出来ません。通信内容が不正アクセスや攻撃だった場合でも通してしまいます。

 WAFとFWは相互補完的役割を果たします。どちらかだけあれば大丈夫ということではなく、両方用いることでWebサーバを安全に運用することが出来ます。他にIPS/IDSがありますが、こちらに関しては後日取り上げます。
WAFとFWの違いとは?

  • このエントリーをはてなブックマークに追加

コメントをどうぞ