ファイアウォール・IDS・IPS・WAFの違い:調べる範囲・止めるか知らせるか・守る対象を比較

どれもネットワークを通る攻撃を防ぐ仕組みですが、調べる範囲と、見つけたときの動きが違います。ファイアウォールは、IPアドレスやポート番号などの規則で、許可した通信だけを通します。IDS(侵入検知システム)は通信の中身まで調べて攻撃らしいものを見つけ、管理者に知らせますが、通信は止めません。IPS(侵入防止システム)は通信の経路の上に置かれ、見つけた攻撃をその場で遮断します。WAF(Webアプリケーションファイアウォール)は、HTTPのリクエストの中身を調べて、SQLインジェクションのようなWebアプリケーションへの攻撃を防ぎます。1つで全部を守れるものはなく、組み合わせて使います。

項目ファイアウォールIDSIPSWAF
主に調べるもの送信元と宛先のIPアドレス、ポート番号、通信の状態(ネットワーク層・トランスポート層)。アプリケーションを見分ける製品もあるパケットの見出しから中身まで(ネットワーク層からアプリケーション層)IDSと同じく、パケットの見出しから中身までHTTP・HTTPSのリクエストと応答の中身(アプリケーション層)
通信の経路への置き方経路の上(インライン)多くは経路の外。スイッチのミラーポートなどから通信の写しを受け取る経路の上(インライン)経路の上。Webサーバの手前に、リバースプロキシやクラウドのサービスとして置く
見つけたときの動き規則で許可していない通信を遮断する警告を出して記録する。通信そのものは止めないその通信を遮断したり、接続を切ったりする攻撃と判定したリクエストを遮断する。検知して記録するだけのモードもある
判定の方法許可・拒否の規則(アドレス、ポート、通信の状態)既知の攻撃のパターン(シグネチャ)との照合と、平常時の通信からの外れを見る異常検知(アノマリ検知)IDSと同じく、シグネチャと異常検知SQLインジェクションやクロスサイトスクリプティングなどの攻撃のパターンの規則と、許可する入力を定めた規則
主に守るものネットワークの出入口。許可していない通信を内側に入れないネットワークやサーバの監視。攻撃や侵入の兆しに気づくネットワーク上のサーバや端末を、既知の攻撃から守るWebアプリケーション。アプリケーションの脆弱性を突く攻撃を防ぐ
誤検知の影響規則の誤りで、正規の通信が止まる誤検知が多いと警告が埋もれ、運用者の負担になる。業務の通信は止まらない誤検知がそのまま正規の通信の遮断になるので、慎重な調整が必要記号を含む文章などの正規の入力を攻撃と判定すると、利用者の操作が失敗する
置く場所の例社内のネットワークとインターネットの境界、ネットワークの区画の間、各サーバや端末の上監視したいネットワークの区間(ネットワーク型)や、サーバの上(ホスト型)インターネットとの境界の、ファイアウォールの内側など公開するWebサーバの手前
限界許可したポートを通る攻撃(Webアプリケーションの脆弱性を突くものなど)は防げない。通信を暗号化する機能はない検知するだけで止められない。TLSで暗号化された通信は、復号できる位置に置かない限り中身を調べられないシグネチャにない未知の攻撃は、異常検知に頼るので見逃しやすい。暗号化された中身は見えない。処理能力が通信のボトルネックになりうるWeb以外の通信は守らない。アプリケーションの脆弱性そのものを直すわけではない

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

ファイアウォール
どのネットワークでも、最初に置く基本の対策です。必要な通信だけを許可し、それ以外を遮断します。
IDS
通信を止める危険を避けながら、攻撃や侵入の兆しに気づきたいとき。調査のための記録を残すのにも使います。
IPS
既知の攻撃を、人の判断を待たずに自動で止めたいとき。誤検知で業務の通信を止めないよう、まず検知だけのモードで調整してから遮断を有効にするのが一般的です。
WAF
Webアプリケーションを公開するとき。脆弱性の修正が間に合わないあいだの応急の対策にもなりますが、アプリケーション側の修正の代わりにはなりません。

よくある質問

IDSとIPSの一番の違いは何ですか?

見つけた攻撃を止めるかどうかです。IDSは多くの場合、通信の写しを受け取って調べ、警告を出すだけで、通信には手を出しません。IPSは通信の経路の上に置かれ、攻撃と判定した通信をその場で遮断します。そのため、IPSでは誤検知が正規の通信の遮断につながり、障害時に通信全体が止まらないような配慮も必要です。1台の製品で、両方のモードを切り替えられるものも多くあります。

ファイアウォールがあれば、WAFは要りませんか?

役割が違うので、Webアプリケーションを公開するなら両方を使う意味があります。ファイアウォールは、Webサーバの443番ポートへの通信を許可すると、その中身が正規のリクエストか攻撃かは区別しません。WAFはHTTPのリクエストの中身を調べ、SQLインジェクションやクロスサイトスクリプティングなどの攻撃のパターンを見つけて遮断します。

IDSやIPSは、暗号化された通信の中身を調べられますか?

そのままでは調べられません。TLSで暗号化された通信の中身を調べるには、TLSを終端する装置(リバースプロキシやWAFなど)の後ろに置くか、装置がいったん復号して調べる必要があります。復号しない場合は、通信の宛先や量、時間的なパターンなどから異常を見つけることになります。

次世代ファイアウォール(NGFW)とは何ですか?

従来のアドレスとポートの規則に加えて、通信の中身からアプリケーションを見分ける機能や、IPSの機能などを1台にまとめたファイアウォールの呼び名です。製品によって含まれる機能は違うので、どの層を調べ、何を止められるのかを確かめて使います。

理解度チェック

ファイアウォール(パケットフィルタリング型)の基本的な働きとして正しいものはどれか。

  1. A通信の内容を暗号化して、途中の経路での盗聴を防ぐ
  2. B送信元や宛先のIPアドレス、ポート番号などをもとにした規則に従って、許可した通信だけを通し、それ以外を遮断する
  3. C届いたパケットを複数のサーバに振り分けて、処理の負荷を分散する
答えと解説を見る

正解:B. 送信元や宛先のIPアドレス、ポート番号などをもとにした規則に従って、許可した通信だけを通し、それ以外を遮断する

ファイアウォールは、社内のネットワークとインターネットの境界などに置き、あらかじめ決めた規則で通信を許可または拒否します。例えば「外部からは公開Webサーバの443番ポートへの通信だけを許可し、それ以外の外部からの接続は拒否する」のように設定します。現在の多くのファイアウォールは、通信の状態を記録するステートフルインスペクションを行い、内側から始めた通信の戻りのパケットを自動的に通します。暗号化はしないので、通信を守るにはTLSやVPNと組み合わせます。また、許可したポートを通る攻撃(Webアプリケーションの脆弱性を突くものなど)は防げないため、WAFなど別の対策も使います。

ログインの画面で、パスワードの欄に ' OR '1'='1 のような文字列を入力されると、パスワードを知らなくてもログインできてしまうWebアプリケーションがある。この攻撃の名前はどれか。

  1. ASQLインジェクション
  2. Bクロスサイトスクリプティング
  3. Cディレクトリトラバーサル
答えと解説を見る

正解:A. SQLインジェクション

SQLインジェクションは、Webアプリケーションが、利用者の入力をそのまま文字列としてつなげてデータベースへの命令(SQL文)を組み立てていることを悪用する攻撃です。例えば「パスワードが '入力値' と等しい」という条件を作るところに ' OR '1'='1 が入ると、引用符で文字列が閉じられ、「または '1' と '1' が等しい」という常に成り立つ条件が付け加わってしまいます。その結果、パスワードを知らなくても条件が成り立ち、ログインできてしまいます。同じ方法で、データの盗み出しや書き換え、削除が行われるおそれもあります。根本的な対策は、入力を命令の一部として解釈させない仕組み(プレースホルダを使うプリペアドステートメント)を使うことです。

掲示板のWebアプリケーションで、利用者が投稿した文章の中のスクリプトが、ほかの閲覧者のブラウザで実行されてしまう脆弱性があった。この脆弱性の名前と、根本的な対策の組み合わせとして正しいものはどれか。

  1. ASQLインジェクション。データベースへの接続に使うパスワードを長くする
  2. Bクロスサイトスクリプティング(XSS)。投稿された文章をHTMLとして出力するときに、< や > などの特別な意味をもつ文字をエスケープする
  3. Cクロスサイトスクリプティング(XSS)。サーバとブラウザの間の通信をHTTPSで暗号化する
答えと解説を見る

正解:B. クロスサイトスクリプティング(XSS)。投稿された文章をHTMLとして出力するときに、< や > などの特別な意味をもつ文字をエスケープする

クロスサイトスクリプティング(XSS)は、Webアプリケーションが、利用者の入力をそのままHTMLの中に出力するために、入力に含まれたスクリプトがページの一部として閲覧者のブラウザで実行されてしまう脆弱性です。スクリプトは、そのサイトのページとして動くので、閲覧者のセッションの情報(Cookie)を盗んだり、偽の入力欄を表示したりするおそれがあります。根本的な対策は、出力する場所に応じて、< や > や & や引用符のような特別な意味をもつ文字をエスケープ(例えば < を &lt; に変換)して、ただの文字として表示させることです。補助的な対策として、CookieにHttpOnly属性を付けてスクリプトから読めないようにしたり、コンテンツセキュリティポリシーで実行できるスクリプトを制限したりします。HTTPSは通信路を守るもので、正規のページに埋め込まれたスクリプトの実行は防げません。

  1. ゼロデイ攻撃の説明として正しいものはどれか。
  2. DDoS攻撃の説明として正しいものはどれか。
  3. リバースプロキシの説明として、正しいものはどれか。

情報セキュリティの基礎の練習問題へ

関連する用語の解説

ポート番号
TCPやUDPで、端末の中のどのアプリケーション宛ての通信かを区別する0〜65535の番号。HTTPの80、HTTPSの443、DNSの53など、0〜1023はウェルノウンポートと呼ばれる。
OSI参照モデル
通信の機能を、物理層・データリンク層・ネットワーク層・トランスポート層・セッション層・プレゼンテーション層・アプリケーション層の7つの層に分けて整理したモデル。各層の役割を分けて考えるための共通の言葉として使われる。
SQLインジェクション
Webアプリケーションが利用者の入力をそのままつなげてSQL文を組み立てていることを悪用し、入力によって命令の意味を変えて、データベースを不正に操作する攻撃。プレースホルダを使うプリペアドステートメントが根本的な対策。
クロスサイトスクリプティング(XSS)
Webアプリケーションが利用者の入力をそのままHTMLに出力するために、入力に含まれたスクリプトが閲覧者のブラウザでそのサイトのページとして実行されてしまう脆弱性。出力のときに特別な意味をもつ文字をエスケープすることが根本的な対策。
リバースプロキシ
Webサーバの手前に置かれ、利用者からのリクエストをサーバの代わりに受けて、後ろにある1台または複数のサーバへ中継するサーバ。HTTPSの暗号の処理をまとめて行う(TLSの終端)、よく使われる応答を保存して返す、複数のサーバに負荷を分ける、後ろのサーバの構成を隠す、といった役割を受け持つ。利用者の側に置かれ、利用者の代わりに外部のサイトへ接続するフォワードプロキシとは、置かれる場所と守る対象が違う。
TLS
Transport Layer Securityの略。通信の暗号化、改ざんの検出、証明書によるサーバの認証を行うプロトコル。HTTPSはHTTPをTLSで保護したもの。
ゼロデイ攻撃
ソフトウェアの脆弱性が見つかってから、修正のプログラム(パッチ)が提供されるまでの間に、その脆弱性を悪用して行われる攻撃。パッチで防げないため、多層の対策で被害を抑える。

関連する比較