最終更新:

【仕組み解説】ファイアウォールはどうやって不正アクセスを防いでいるのか — 通信フィルタリングの仕組みを図解


ファイアウォール:ルールで判断 ルール例 443:許可 23:拒否 TCP 443 公開Webへ Web サーバー TCP 23 ここで止める 許可された通信でも 内容の安全性が保証されるわけではない
公開Webサーバーへの通信ルールの一例です。送信元・宛先・プロトコル・ポートなどを照合し、ステートフル検査では接続状態も確認します。
ひよこ ひよこ
家のルーターやPCにあるファイアウォールって、何を通すかどうやって決めるの?
ペンギン先生 ペンギン先生
ネットワークや端末の通信を、設定したルールに従って許可・拒否する仕組みだよ。必要な通信を明示して、それ以外を拒否するのが基本なんだ。関所に例えられるけれど、外部との境目だけでなく内部ネットワークの区切りや端末にも置けるんだ。
ひよこ ひよこ
何を見て通すか決めるの?
ペンギン先生 ペンギン先生
基本的なパケットフィルタリングでは、送信元・宛先IPアドレス、プロトコル、ポート番号などを確認するよ。公開WebサーバーへのTCP 80・443を許可し、23を拒否するのはルールの例。80なら安全、23なら攻撃と判定できるわけではないんだ。
ひよこ ひよこ
ステートフルってどういう意味?
ペンギン先生 ペンギン先生
接続の状態を記録して、返答が許可済みの接続に対応するかなどを確認することだよ。状態と合わないパケットは拒否できる。でも外から始まる接続も、公開サーバー向けのルールで許可できる。内側から始まった通信も安全とは限らないんだ。
ひよこ ひよこ
通信の中身までは見ないの?
ペンギン先生 ペンギン先生
アプリケーション層を解析する機能や、通信を中継して検査するプロキシ型もあるよ。ただし検査内容は製品と設定による。暗号化された通信の中身を読むには、適切な場所でのTLS終端など、中身を検査できる構成が必要なんだ。
ひよこ ひよこ
WAFとは違うの?
ペンギン先生 ペンギン先生
WAFはHTTPのやり取りを対象に、SQLインジェクションやクロスサイトスクリプティングなどを検知・制限するための仕組みだよ。プロキシとして動くものもあるけれど、実装形態はそれだけではない。普通のポート番号の制限だけでは、Webアプリ固有の攻撃までは判断できないんだ。
ひよこ ひよこ
家庭のルーターにもあるの?
ペンギン先生 ペンギン先生
ファイアウォール機能を持つルーターもあるし、端末側で通信を制限する機能もあるよ。NATはアドレスを変換する別の仕組み。変換表にない着信が届かない場合があっても、NATがあれば安全と考えず、IPv6も含めた通信の許可設定を確認しよう。
ひよこ ひよこ
ペンギン先生 ペンギン先生
ゼロトラストは、ネットワークの場所だけで相手を信用せず、アクセスする主体や端末などを評価する考え方だよ。ファイアウォールを置き換える単体製品ではなく、アクセス制御や端末対策と組み合わせて設計するんだ。
ひよこ ひよこ
これだけで全部防げるわけではないんだね。
ペンギン先生 ペンギン先生
そうだよ。許可した接続でも攻撃が含まれることがある。ファイアウォールのルールに加えて、認証、アプリの修正、端末対策、ログの監視などを組み合わせることが大切だね。

通信の「宛先」と「ルール」を分けて読む

公開するWebサーバーを一つ用意した、と考えてみましょう。図では、そのサーバーへのTCP 443を許可し、TCP 23を拒否するルールを例にしています。443なら内容まで安全という判定ではなく、その宛先への接続を受け付ける、という判断です。

最初は設定を変える前に、ルールの説明を次の順で読むと理解しやすくなります。

  1. 誰から、どの端末・サーバーへの通信か。
  2. どのプロトコルとポートを使うのか。
  3. 新しく始まる接続なのか、許可済み接続への返答なのか。
  4. そのルールで許可・拒否した結果が、ログにどう記録されるか。

接続できないときも、ファイアウォールを丸ごと無効にする前に、必要な通信と拒否ログを照合しましょう。ポートの意味はポート番号、Webの内容を検査する違いはWAFで確認できます。

参考資料