
ファイアウォールとは?攻撃を防ぐ仕組みを初心者向けに解説
ファイアウォールは「外部の攻撃を防ぐ壁」と説明されますが、実際には何をしているのでしょうか。この記事では、通信を許可・拒否する仕組みを、ポート番号などの前提知識から整理します。
ファイアウォールとは
ファイアウォールは、建物の入口にいる警備員に似ています。訪れた人を無条件に通さず、「誰が、どこへ入ろうとしているか」を確認し、決められたルールに従って通すか止めるかを判断します。
ネットワークで確認するのは人ではなく通信です。つまり、ネットワークを流れる通信の情報を調べ、設定されたルールと比較して、許可または拒否する仕組みがファイアウォールです。
なぜファイアウォールを設置すると安全になるのか
インターネット上のサーバでは、Webサーバのほか、データベースや管理用サービスが動くことがあります。SSHは管理用サービスの一つで、管理者が離れた場所からサーバへ接続し、設定や操作を行うために使います。
制限がなければ、公開する必要がないサービスにも攻撃者から接続を試されます。ファイアウォールを使えば、Webサイトに必要な通信は通し、管理用の通信は決められた接続元だけに限定できます。攻撃に使われる入口を減らし、攻撃を受ける機会を減らすのです。

ファイアウォールは何を見ているのか
通信では、宛先を示すIPアドレスに加え、サービスを区別するポート番号が使われます。IPアドレスが建物の住所なら、ポート番号は目的の窓口を示す番号です。
代表例は、HTTPSがTCP 443、HTTPがTCP 80、SSHがTCP 22です。TCPは、相手と接続してデータを届ける通信方式の一つです。Webサーバなら、例えば次のルールを設定できます。
インターネットからTCP 443への通信は許可
TCP 22は社内ネットワークや管理用IPアドレスからだけ許可
その他は拒否
ほかにも、送信元・宛先のIPアドレス、TCPやUDPなどのプロトコル、通信の方向を判断材料にします。製品や方式によっては、通信状態やさらに詳しい情報も確認します。通信の情報と設定済みのルールを照合している、と捉えることが大切です。

ファイアウォールが通信を防ぐ流れ
攻撃者がインターネットからSSHのTCP 22へ接続する場合を考えます。
攻撃者がTCP 22へ接続を試す
↓
ファイアウォールがルールを確認する
↓
送信元が許可された管理用ネットワークではない
↓
通信を拒否する
↓
SSHサービスまで通信を到達させない
ファイアウォールは攻撃者を消すものではなく、SSHの脆弱性もなくしません。それでも不要な通信をSSHへ届かせなければ、その入口から攻撃を試される機会を減らせます。

ステートフルファイアウォールとは
通信は「パケット」という小さな単位に分けて送られます。単純なパケットフィルタリングでは、パケットごとに主にIPアドレスやポート番号などを確認します。
一方、現在一般的なステートフルファイアウォールは、通信の状態も追跡します。PCがWebサーバへHTTPS通信を始めると、その外向き通信を記録します。Webサーバからの返信は「内部から始めた通信への応答」と判断して通します。外部から勝手に始められた通信と、正しい応答を区別できるのです。(▶HTTPSとは何か?はこちらを参照)

必要な通信だけを許可する
すべて拒否すればWebサイトも利用できません。そこで、必要な通信だけを許可し、それ以外を拒否します。
この方針が「デフォルト拒否(Default Deny)」です。「まず全部通し、危険なものだけを止める」のではなく、「基本は拒否し、必要な通信だけを許可する」と考えます。不要なサービスの公開を減らしやすくなります。
ファイアウォールがあっても防げない攻撃がある
Webサイトの公開には、通常TCP 443を許可します。そのため、許可されたHTTPS通信の中で、Webアプリケーションの脆弱性を狙う攻撃が送られることがあります。SQLインジェクション、XSS、ログイン画面への不正アクセスなどです。
ファイアウォールは主にネットワーク通信の入口を制御します。一方、WAFはHTTP/HTTPS通信の内容を確認し、Webアプリケーションへの攻撃を検知・遮断する仕組みです。ただし、製品ごとに確認できる情報や機能は異なります。
安全性を高めるには、WAF、OSやソフトウェアの更新、認証・認可、アプリケーション側の対策なども組み合わせる必要があります。

まとめ
ファイアウォールとは、ネットワークの入口で通信を確認し、必要な通信だけを通すことで攻撃できる入口を減らす仕組みです。IPアドレスやポート番号などを基に不要な通信を拒否します。
ただし、許可した通信に含まれる攻撃まですべて防げるわけではありません。役割と限界を理解し、複数の対策を組み合わせることが重要です。