ファイアウォール
Firewall
概要(サマリー)
ファイアウォール(Firewall / 防火壁)とは、インターネットなどの外部ネットワークと、社内や家庭内のネットワークの「境界」に設置され、不審な通信(ハッカーによる不正アクセスなど)をシャットアウトするセキュリティシステムである。
建物の「防火扉」やマンションの「受付(門番)」にたとえられる。建物内で火災(サイバー攻撃)が発生したときに被害の拡大(侵入)を防ぐ防火壁としての役割を持ち、通信データに付いている宛先や送信元の情報をチェックして、「許可された身内の通信」だけを通し、「怪しい外部の通信」を遮断する。
詳細解説
ファイアウォールとは何か
ファイアウォールは、ネットワーク上を行き交うデータ(パケット)を監視する門番である。
セキュリティルール(ポリシー)に従って、流れるデータを通すか(許可 / Allow)、捨てるか(拒否 / Deny)を瞬時に判断している。
通信を判断する仕組み:パケットフィルタリング
最も基本的なファイアウォールは、データの「手紙の封筒(ヘッダー)」に書かれた情報だけを見て判断するパケットフィルタリングという仕組みを使っている。
具体的には、以下の3つの情報に基づいて判断する。
1. 送信元・送信先のIPアドレス: どこから来て、どこへ行くデータか(例:「この怪しいIPアドレスからの通信はすべて拒否する」)。
2. ポート番号: どの窓口を使おうとしているか(例:「Web表示用の80番ポートは開けるが、管理用の22番ポートは閉じる」)。
3. 通信の方向: 外から内へのアクセスか、内から外へのアクセスか。
種類と役割の違い:WAF(Web Application Firewall)との比較
インターネットを守るセキュリティの「壁」には、守る場所によって以下のような違いがある。
- ファイアウォール(ネットワーク層の防御):
手紙の「封筒に書かれた差出人住所(IP)や窓口(ポート)」だけを見て、不審な手紙を捨てる。手紙の中身(HTMLの中身やプログラムデータ)までは読まない。 - WAF(Web Application Firewall / アプリケーション層の防御):
手紙の「中身(文章の内容)」まで丁寧に開封して読み込み、「サニタイズ(無害化)されていない悪意ある命令文(SQLインジェクションなど)」が書かれていないかをチェックする。
ファイアウォールが「敷地の入り口で怪しい人を弾くセキュリティゲート」なら、WAFは「建物の中で危険な持ち物を持っていないかチェックする金属探知機」である。両方を組み合わせて防御する(多層防御)のが基本である。
ホスト型ファイアウォールとネットワーク型ファイアウォール
ファイアウォールは、設置される場所によって2種類に分類できる。
-
ネットワーク型ファイアウォール:
社内ネットワーク全体の「出入口」に設置し、外部との通信をまとめてフィルタリングする。ルーターや専用のセキュリティ機器として設置されることが多い。会社のオフィス全体を守る城壁の役割を果たす。 -
ホスト型ファイアウォール(パーソナルファイアウォール):
個々のパソコンやサーバーにインストールされ、そのマシン単体への通信を監視・制御する。WindowsやmacOSに標準搭載されているファイアウォール機能がこれにあたる。城壁の中の各家に設置された個別の施錠に相当する。
両者を組み合わせる「多層防御」が、現代のセキュリティの基本的な考え方である。
AIコーディングとの関係
自分でVPSやクラウドサーバー(AWSなど)を借りてWebシステムを構築・公開する際、サーバー自体に備わっているファイアウォールを設定して、必要な窓口だけを開けるセキュリティ設定が必要になる。
AIコーディングを利用することで、この複雑なファイアウォール設定コマンドのたたき台を作れる。ただし、実際のサーバー環境、接続元IP、既存のSSH接続状況によって安全な手順は変わるため、適用前の確認が不可欠である。
- 設定コマンドの自動生成指示:
AIに対して、「Ubuntuのサーバーで、Web公開用の80番(HTTP)と443番(HTTPS)ポートだけを外部に公開し、SSH(22番)ポートは特定のIPアドレス(203.0.113.50)からのみ許可するUFW(簡易ファイアウォール管理ツール)の設定コマンドを書いて」と指示する。
これにより、設定ミスによる「自分すらサーバーにログインできなくなるエラー(締め出し)」のリスクを減らせる。ただし、SSHの許可設定を変えるときは、既存の接続を切らずに別の端末からログイン確認をしてから反映するのが安全である。
Linux (UFW) でのファイアウォール設定手順の例(AI生成):
# UFWのデフォルト設定を「すべての受信を拒否、すべての送信を許可」にする
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Web表示用のポート(80, 443)のアクセスを誰からでも許可
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# SSH用の22番ポートは、特定の安全なIPからのみ接続を許可する
sudo ufw allow from 203.0.113.50 to any port 22 proto tcp
# 設定を有効化する
sudo ufw enable
よくある勘違い
ファイアウォールを入れておけばコンピュータウイルスは防げる?
それだけでは防ぎきれない。
ファイアウォールは、外部から「直接サーバー内にハッキングで侵入してくる通信」を塞ぐことはできる。しかし、ユーザー自身が「怪しいメールの添付ファイルを開いてウイルスを実行した」場合や、「安全なサイトのフリをしたWebページからウイルスをダウンロードした」場合は、それらのダウンロードは「許可された通信(内側から外へ行って持ち帰ったもの)」としてファイアウォールをすり抜けてしまう。ウイルスの侵入を防ぐには、ウイルス対策(アンチウイルス)ソフトやユーザーのセキュリティ意識が別途必要である。
ファイアウォールは高価な専用機器を買わないと導入できない?
一般のPCには標準搭載されている。
WindowsやmacOSには「パーソナルファイアウォール」というソフトウェア版のファイアウォールが最初から標準で組み込まれており、自動的に有効になっている。特別な機器がなくても、個人のパソコン単体で最低限の侵入防御は常に行われている。
VPN(仮想プライベートネットワーク)とファイアウォールは同じもの?
全く別の技術である。
VPNは「通信内容を暗号化したトンネルを作り、離れた場所から社内ネットワークに安全に接続する技術」であり、主にリモートワーク時に使われる。一方、ファイアウォールは「不審な通信を入口で弾き、守りたいネットワークへの侵入を防ぐ防御壁」である。VPNは「安全な秘密のルートを作るもの」であり、ファイアウォールは「その入口に立って怪しい通信を弾く門番」である。用途と役割が根本的に異なる。
まとめ
- ファイアウォールは、外部ネットワークとの境界で不正アクセスを遮断するマンションの門番のようなシステム。
- 送信元IPアドレスやポート番号をチェックして、通信の許可・拒否を判断する。
- ネットワーク経路を守るファイアウォールに対し、アプリケーション(プログラムの中身)を守るのがWAFである。
- インフラ構築時は、不要なポートを閉じ、必要なポートだけを開ける「必要最小限の許可」を意識してファイアウォールを設定する。
情報ソース
より詳しくAIに聞いてみよう
- Linuxサーバーで古くから使われているファイアウォール機能「iptables(アイピーテーブルズ)」と、モダンな「nftables」や簡易設定ツール「UFW」の違いを教えてください。
- AWS(Amazon Web Services)における「セキュリティグループ」と「ネットワークACL(NACL)」のファイアウォールとしての役割と違いを解説してください。
- 通信状態を記録して、送信したリクエストの「戻り通信」だけを自動で通す「ステートフルパケットインスペクション(SPI)」というファイアウォールの仕組みを教えてください。
- 社内ネットワークから外部への不正なアクセス(内部のマルウェアが外部の攻撃指令サーバーと通信する挙動)を検知・遮断する「アウトバウンド・フィルタリング( egress フィルタリング)」の重要性について教えてください。
- ファイアウォールの設定ミスにより、開発環境や社内システムから外部のAPI(Slack通知など)への接続がブロックされてしまった場合の原因特定手順について教えてください。