ファイアウォール(英: Firewall)は、コンピュータネットワークにおいて、ネットワークの結節、コンピュータセキュリティの保護、その他の目的のため、通過させてはいけない通信を阻止するシステムを指す。

## 概要

ファイアウォールは、外部からの攻撃に対する防御だけではなく、内側から外部への望まない通信を制御することも出来る。ネットワークの利便性を損ねる場合もあるが、標的型攻撃などにより、内部にトロイの木馬が入り込んでしまっている場合などに、その活動を妨げる効果が期待できる。

ルーターを初めとしたアプライアンス商品にファイアウォールの機能を持つものもある。近年ではネットワークの終端にあたる個々のコンピュータでも自分自身の防御のために、外部と接続するネットワークプロトコルスタック中に、望まない通信を防ぐ(たとえばTCPの接続要求など)フィルタなどを持っているものも多く、それらを指して言うこともある(たとえばWindowsには「Windows ファイアウォール」、macOSには「アプリケーションファイアウォール」がある)。

名称の元となった英語の「Firewall」は防火壁のことであり、通過させてはいけない通信を火に例えている。ファイアウォールを境界として3種類のゾーンを作成する。パケットの通過、拒否を決定するルールは、異なるゾーンへと向かうパケットを対象として作成することになる。

- 内部(Inside)ゾーン:外部から守るべきネットワーク。基本的に信頼できるものとして扱う。
- 外部(Outside)ゾーン:攻撃元となる可能性のあるネットワーク。基本的に信頼出来ないものとして扱う。
- DMZ(DeMilitarized Zone:非武装ゾーン):内部と外部の中間に置かれるゾーン。基本的に外部からアクセスできるのはこのゾーンのみとなる。

以下では、OSI参照モデルに従ったレイヤによって分類しつつ説明する。

## パケットフィルタ型

OSI参照モデルにおけるネットワーク層(レイヤ3)やトランスポート層(レイヤ4)に相当するIPからTCP、UDP層の条件(ポリシー)で、通信の許可/不許可を判断するもの。狭義でのファイアウォールとは、このタイプのものを指す。このタイプはさらに、スタティックなものとダイナミックなものとに分類できる。

基本的にはレイヤ3で通信制御を判断するが、フィルタの種類によってはレイヤ4のヘッダも参照する。すなわち、TCP/UDPのセッション単位で管理する訳ではない。ただし、ステートフルパケットインスペクション型ではTCP/UDPセッションの一部も記憶して判断動作する。

## サーキットレベルゲートウェイ型

レイヤ3・IPパケットではなく、TCP/IPなどのレイヤ4・トランスポート層のレベルで通信を代替し、制御する。内部のネットワークから外部のネットワークへ接続する場合は、サーキットレベルゲートウェイに対してTCPのコネクションを張ったり、UDPのデータグラムを投げることになる。サーキットレベルゲートウェイは、自らに向けられていたIPアドレスとポート番号を本来のものへと振り替え、自らが外部と通信した結果を返すという動作をする。代表的なソフトウェア実装としてはSOCKSがある。また、ハードウェア実装としてレイヤ4スイッチにもこの機能を持たせる事ができる。

サーキットレベルゲートウェイは、あらかじめ多数のポートを開けたりNATを用意しなくても、プライベートIPアドレスしか持たない内部のネットワークからでも、外部のネットワークへ接続できるという点がメリットである。

## アプリケーションゲートウェイ型

パケットではなく、レイヤ7のHTTP や FTP といった、アプリケーションプロトコルのレベルで外部との通信を代替し、制御するもの。一般的にはプロキシサーバと呼ばれている。アプリケーションゲートウェイ型ファイアウォールの内部のネットワークでは、アプリケーションはアプリケーションゲートウェイ(プロキシサーバ)と通信を行うだけであり、外部との通信はすべてプロキシサーバが仲介する。アプリケーションプロキシが用意されていないサービスについては、サーキットプロキシで対応する事が可能である。

このため、アプリケーションゲートウェイで許されているプロトコルでトンネリングを行うソフトウェア、例えばSoftEtherやhttptunnelといった、運用方法によってはセキュリティホールになりうる実装の利用を、かえって促進してしまうという事例も近年目立っている。強すぎるセキュリティポリシーが迂回路を招いてしまっているとも言える。

プロキシは単に中継するだけの物が多いが、レイヤ7ファイアウォールはアプリケーションの通信の中身も検査する事ができる(例:アクセスURLチェック、ウイルスチェック、情報漏洩検出)。そのため、検査の仕方によってはレイヤ7ファイアウォールは相当な負荷が掛かり、ファイアウォールの処理上も、通信上もボトルネックとなることもある。また、未成年に好ましくないコンテンツのみを、末端のユーザにはプロキシサーバの存在を意識させない状態で、自動的にフィルタリングしてしまうといった実装も可能である。

なお、アプリケーションの通信の中身も検査するため、電気通信事業者が自らが仲介する通信の内容に立ち入ってはならない(通信の秘密)と言う原理原則に反する検閲だと批判する向きもある。通信事業に携わる技術者や学者の間ではこういった種類のファイアウォールを設置するという発想を強く批判する向きもある。

なお実際に、ISPのぷららがファイル共有ソフトウェアWinnyの通信を全て遮断する事を計画・発表し、それに対して通信の秘密を侵害する可能性があるとして総務省から行政指導を受け、Winny遮断は同ISPユーザの利用者の選択に任せるとした事例もあった。

## 具体的な実装例

上述のパケットフィルタリング型や、サーキットレベルゲートウェイ型ではそれぞれ、レイヤ3スイッチやレイヤ4スイッチ等のハードウェア機器の一部機能として組み込まれている事も多い。この場合、ある程度簡易な条件でしかパケット検査をできないため、簡易ファイアウォール、広義のファイアウォールと呼ぶこともある。レイヤー7ファイアウォール(L7FW)は通信の内容まで検査するため、L7FWが本来の(狭義の)ファイアウォールであるとすることもある。

ソフトウェアによる実装としては、UNIXでは伝統的にipfwが使われてきた。カーネルレベルで動作するため、オーバーヘッドが小さく高速に動作する。macOSでもipfwが実装されている。Linuxカーネルには iptables、ipchains、nftables等が実装されている。

WindowsではZoneAlarm、ノートン インターネットセキュリティ、ウイルスバスター、NetOp Desktop Firewall等のフリーウェアないし商用アプリケーションが普及しているが、これらはファイアウォールというよりは、IDSに近い動作をしている。しかし、一般的にファイアウォールという語が防護のイメージを喚起しやすいためか、用語は混乱して使われている。一般的には、パーソナルファイアウォールと呼ばれる。

また、Windows XPでは、OSの機能として簡易的なファイアウォールが標準で搭載されている(Windows XP SP2ではユーザーが初期設定を行わずに利用できるように改良された)。純粋にスタティックなパケットフィルタ型ファイアウォールの実装としては、NEGiESなどがある。

## 主なファイアウォール製品

### ソフトウェア型

- Check Point VPN-1、FireWall-1
- Clavister
- Firestarter
- ipfw
- iptables
- Microsoft Internet Security and Acceleration Server
- nftables
- NPF
- PF
- Symantec Client Security

### ハードウェア型

- Cisco PIX and Cisco ASA
- Clavister
- D-Link
- FortiGate by Fortinet
- IPCOM EX Series by Fujitsu
- Juniper NetScreen
- Nortel Stand-alone and Switched Firewall
- SonicWALL
- Symantec Gateway Security
- VSR - バリオセキュア
- WatchGuard Firebox
- ステルスワン Fシリーズ

### その他フリーウェアなど

- Devil-Linux (GPL)
- pfSense (BSD-style license) (m0n0wall fork)