「ファイアウオール」という言葉を,専門誌に限らず一般向けの雑誌や新聞でも見かけるようになってから久しい。しかし,いまだに「ファイアウオールさえ導入していれば安全」といった誤解があるようだ。そこで今回のコラムでは,ファイアウオールの基本的な役割や機能,ファイアウオールでできることとできないことなどを改めてまとめてみた。「何をいまさら」と思う読者も多いだろうが,おさらいとして目を通していただきたい。

ファイアウオールだけでは防げない

 そもそもファイアウオール(Firewall)とは,建築の分野の概念であり,区画から別の区画へ延焼を防止する“防火壁”を指す。例えばガソリン・スタンドの周囲には,比較的厚いコンクリートの壁が設置されている。あれもファイアウオールの一種で,消防法や危険物取り扱い法に従って設置されている。ビルなどの建築物については,建築基準法において,ファイアウオール(防火壁)の設置が一般的に義務付けられている。

 コンピュータ・セキュリティ分野でのファイアウオールも同様である。あるネットワークで発生したセキュリティ・インシデントの影響が,他のネットワークに伝播するのを防止するシステムといえる。

 ただし,建築分野のファイアウオールと異なり,コンピュータ・セキュリティ分野のファイアウオールの役割はこれだけにとどまらない。単にすべてを食い止めるだけではなく,管理対象範囲に出入りするトラフィックに対してアクセス制御を施すのである。これは,江戸時代の“関所”の概念に近い。さらには,外部からファイアウオールの内部を隠ぺいする機能も備えてなければならない。

 まとめると,コンピュータ・セキュリティにおけるファイアウオールは,「ネットワークを流れるトラフィックを一点に収束させ,セキュリティ・ポリシー(ルール)を適用する仕組み(システム)」と定義できるだろう。

 なお,セキュリティ・ポリシーの適用方法としては,「原則としてトラフィックの通過を禁止するが,ルールに定められているものについては許可する」方法と,「原則としてトラフィックの通過を許可するが,ルールに定められているものについては禁止する」方法が考えられる。セキュリティでは,何か問題(例外)が発生した場合でも安全側に“倒れる”ようにしておくことが重要である。そのため,前者の方法が推奨される。

 各ホスト(マシン)を守るためには,ホストそれぞれにセキュリティ・ポリシーを適用しなければならないことは言うまでもない。具体的には,パスワードなどによるホストへのアクセス制御や,ホスト上で稼働する不要な機能の停止などが挙げられる。ファイアウオールは,各ホストをもう一段上のレイヤーで保護する。つまりファイアウオールは,多数のホストで構成されたネットワーク全体に対して,セキュリティ・ポリシーを適用するシステムなのである。

 以上のように,ファイアウオールは特定の製品を指す用語ではない。また,セキュリティ対策の“総称”でもない。セキュリティ対策はあくまでも何層かのレイヤー構造によって成り立つ“複合体”であり,ファイアウオールはそのレイヤーの一つを担うシステムを指す。「ファイアウオールさえ導入していれば安全」というのは,誤った認識なのだ。

ファイアウオールの実現方法

 次に,ファイアウオールの実現方法について考えてみよう。まず,コンピュータ・システムである以上,1台以上のコンピュータと,そこへ導入されたソフトウエアから構成される。

 さらに,ファイアウオールでは,ある一方から入力されたデータを,他方から出力するかどうかを,あらかじめ定義されたルール(セキュリティ・ポリシー)に従って判断する。そのため,入出力のために2つ以上のネットワーク・インタフェースを備えていなければならない。なお,TCP/IPのどのレイヤーで判断を行うかは,ファイアウオール機能の実装によって異なる。

 現在出回っているルーターやOSは,機能差や向き不向きはあるものの,ファイアウオールとして利用可能な機能を備えている。また,専用OSあるいは汎用OSと組み合わせてファイアウオールを実現できる,商用あるいはフリーの専用ソフトウエアが多数出回っている。以下にファイアウオールの例を示す。

  • ルーターのアクセス制御機能を利用したファイアウオール
  • 汎用OSを搭載したコンピュータに備わっている機能を利用するファイアウオール
  • 汎用OSを搭載したコンピュータに,ファイアウオールとして動作させるためのソフトウエアを導入したファイアウオール
  • 専用OSを搭載したコンピュータに,ファイアウオールとして動作させるためのソフトウエアを予め導入したファイアウオール(アプライアンス製品)
  • ルーターのアクセス制御機能と,特定の機能を提供するコンピュータを組み合わせたファイアウオール

 これら以外にも,ファイアウオールとして利用することを直接意図してはいないものの,結果としてファイアウオールの構成要素として利用可能なソフトウエアも存在する。典型的な例としては,アプリケーション層でのフィルタリングが可能なソフトウエアが挙げられるだろう。具体的には,アンチウイルス・ソフトやHTTPプロキシ,メール・サーバー(MTA)などが該当する。

ファイアウオールができることとできないこと

 ファイアウオールで実現できるのは,トラフィックへのセキュリティ・ポリシー適用である。具体的には,アクセス制御,トラフィックの送信元や送信先の妥当性の確認(認証),加えてトラフィックの記録である。

 一方,ファイアウオールで実現できないのは,通過を許可したトラフィックに含まれる脅威の抑制である。例えば,HTTPを許可しているファイアウオールでは,HTTPを“隠れみの”にした,悪意があるアクセスを許してしまう可能性がある(関連記事)。ファイアウオールで保護されたネットワーク内で発生する脅威についても抑制できない。つまり,“内部犯罪”は防げない。さらに,大量の帯域消費を伴う攻撃――いわゆる,DoS攻撃――を防ぐこともできない。

 また,ファイアウオールを迂回したトラフィックへアクセス制御を施すことも当然できない。いくら強固なファイアウオールを構築しても,管理がずさんなRASなどが存在する場合には何にもならないということだ。

 トラフィックの内容が暗号化されている場合にも,ファイアウオールは役に立たない。内容が分からないために,通過させてよいかどうかを判断できない。

“できること”でも要確認

 このコラムでも何度か述べているように,セキュリティ製品のほとんどは,その運用が重要である。ファイアウオールも例外ではない。上記のようにファイアウオールでは実現できないことが存在し,万全ではない。しかし,仕様として実現できることでも,実際に機能しているかどうかは別である。そのため運用の際には,きちんと機能しているかどうかを確認することが重要となる。

 具体的には,通過を許可したトラフィック以外は,きちんと禁止されていることを確認する。ファイアウオールが記録するログを調べれば確認できる。もし許可していないトラフィックが通過しているようなら,ただちに運用を中止し,設定などを再確認しなければならない。

◇     ◇     ◇     ◇     ◇     ◇

 以上のように,ファイアウオールは単なる“防火壁”ではないものの,防げない攻撃が多数存在する。防げる攻撃についても,きちんと防げているかどうかを確認する必要がある。また,ファイアウオールは特定の製品を指すのではなく,システムを指す用語なので,その実現方法は複数存在する――。以上駆け足になってしまったが,本稿でファイアウオールへの理解を深めてもらえれば幸いである。


坂井順行(SAKAI Yoriyuki)
株式会社ラック システムインテグレーション事業本部
sakai@lac.co.jp


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。