ネットワーク●●○○○

ファイアウォール

Firewallふぁいあうぉーる

通信をルールに基づき許可・遮断する防壁。ネットワーク境界防御の基本装置。

概要

ファイアウォールは、ネットワークの出入り口に立って通信を検査し、あらかじめ定めたルールに基づいて「通す・遮断する」を判断する仕組みです。名前の由来は建物の延焼を防ぐ「防火壁」で、信頼できる内側のネットワークと、何が来るか分からない外側のインターネットの間に置かれる関所にあたります。専用のハードウェア製品もあれば、OS に組み込まれたソフトウェア(Linux の iptables/nftables、Windows Defender ファイアウォール)、クラウドのセキュリティグループのような仮想的なものもあります。

判断の材料になるのは、主にIPアドレスポート番号です。「社外から社内サーバのポート22への接続は拒否」「Webサーバのポート443宛てだけ許可」のように、送信元・宛先・ポート・プロトコルの組み合わせでルールを書きます。クラウドでインスタンスを立てたとき最初に設定するセキュリティグループも、本質はこのルール集です。

「サーバは動いているのに外から接続できない」というトラブルの原因の定番がファイアウォールです。開発者にとっては攻撃を防ぐ壁であると同時に、自分の通信も遮る壁になりうるため、その判断の仕組みを知っておくことはデバッグ力に直結します。

なぜ生まれたか

インターネットの原型である ARPANET は、互いに信頼できる研究機関同士のネットワークとして設計されており、「悪意のある通信を弾く」という発想がそもそもありませんでした。しかし1988年の Morris ワームが数千台のマシンを麻痺させ、ネットワークにつながること自体がリスクだと世界が気づきます。かといって回線を切るわけにはいかない — 「つながったまま、危ない通信だけを選別したい」という要求が生まれました。

そこで1980年代末から90年代にかけて、ルータでパケットを選別するパケットフィルタリングが考案され、DEC や Check Point などが商用ファイアウォール製品として発展させました。「ネットワークの境界に検問所を1つ置けば、内側の無数のマシンを個別に守らなくてよい」という境界防御の考え方は、管理コストの面で圧倒的に合理的で、以後30年にわたり企業ネットワークセキュリティの土台となりました。

詳細

パケットフィルタリング — ルールを上から順に照合する

最も基本的な動作はパケットフィルタリングです。届いたパケットのヘッダ(送信元IP・宛先IP・送信元ポート・宛先ポート・プロトコル)をルール一覧と上から順に照合し、最初に一致したルールのアクション(許可/拒否)を適用します。どのルールにも一致しなかった場合の既定動作は「すべて拒否」にするのが原則です。必要なものだけを明示的に許可するこの方針は、セキュリティ設計の基本である最小権限の原則のネットワーク版といえます。

外部からの通信HTTPS 443宛てSSH 22宛てDB 5432宛てファイアウォールルールを上から順に照合1. 443宛てを許可2. 社内IPからの22宛てを許可3. それ以外はすべて拒否最初に一致したルールで判定既定は拒否が原則内部ネットワーク許可のみ通過拒否は破棄
ファイアウォールの判定 — ルールに上から照合し、最後は既定で拒否する

ステートフルインスペクション — 「行き」を覚えて「帰り」を通す

単純なパケットフィルタには弱点があります。内側から外の Web サイトを見に行くとき、応答パケットが外から内へ入ってくる必要がありますが、その送信元ポートは毎回変わるため、静的なルールでは「戻りの通信」を安全に許可できません。応答用にポートを広く開ければ、攻撃者が応答を装って侵入する余地が生まれます。

これを解決したのがステートフルインスペクション(ステートフルファイアウォール)です。TCP の接続確立などを監視して「いま内側から始まった通信」を接続テーブルに記録し、そのセッションに属する戻りパケットだけを動的に許可します。行きの通信を覚えておいて帰りを通す、という点で NAT の変換テーブルとよく似た構造で、実際に多くの機器では両者が一体で実装されています。現在「ファイアウォール」と呼ばれるものの大半はこのステートフル型です。

境界防御のアーキテクチャと DMZ

ファイアウォールを使った典型的な構成が、ネットワークを「外部」「DMZ」「内部」の3層に分ける設計です。DMZ(非武装地帯)は外部に公開するサーバ(Web サーバやリバースプロキシなど)を置く中間区画で、外部からは DMZ までしか到達できず、DMZ から内部へも必要最小限の通信しか許可しません。万一公開サーバが乗っ取られても、被害が内部まで一気に及ばないよう段階的な防壁を築くわけです。

ただし境界防御には構造的な限界もあります。パケットフィルタが見るのはヘッダまでで、ポート443を通る「正しい形式の HTTPS リクエスト」に載った SQLインジェクションXSS のような攻撃は素通りします。アプリケーション層の内容まで検査するのは WAF の役割で、ファイアウォールと WAF は守る層が異なる補完関係にあります。また、通信量で押し潰す DDoS 攻撃に対しては、ファイアウォール自身が飽和して防ぎきれないこともあります。

「境界の内側は安全」という前提の崩壊

クラウドとリモートワークの普及により、「壁の内側は信頼できる」という境界防御の大前提が揺らぎました。社内ネットワークに侵入した攻撃者が内部で自由に横移動する被害や、VPN 装置の脆弱性を突かれて境界ごと突破される事故が相次いだためです。そこで「ネットワークの場所を信頼の根拠にせず、すべてのアクセスを毎回検証する」というゼロトラストの考え方が台頭しました。

とはいえゼロトラストはファイアウォールを不要にするものではありません。実際の現場では、境界のファイアウォールで大まかな防壁を築きつつ、クラウドのセキュリティグループでサーバ単位・コンテナ単位の細かい通信制御(マイクロセグメンテーション)を重ねる多層防御が標準です。「既定拒否・必要最小限の許可・層を重ねる」というファイアウォールが確立した原則そのものは、形を変えて今も生き続けています。