ファイアウォール
ファイアウォールとは
ファイアウォールは、ネットワークを出入りする通信をあらかじめ決めたルールに基づいて許可・拒否する仕組みです。「必要な通信だけを通し、それ以外はすべて遮断する」というのが基本の考え方です。
ルール例:
- 443番ポート(HTTPS)は許可
- 22番ポート(SSH)は特定IPからのみ許可
- それ以外はすべて拒否
初学者向けポイント
- ルールは基本的に IPアドレス・ポート番号・プロトコルの組み合わせで書く。[[TCP/IP]] の知識がそのまま前提になる
- 原則は「ホワイトリスト方式」(許可するものだけを列挙し、それ以外は拒否)。「危険なものだけ拒否する」ブラックリスト方式は漏れが出やすく非推奨
- クラウド環境では物理的な機器ではなく、[[VPCとクラウドネットワーク]] に付ける仮想的なファイアウォール設定(セキュリティグループなど)として提供されることがほとんど
ステートレスとステートフル
ここまでの説明どおりなら、ブラウザでWebサイトを見るには「443番ポートへの外向きの通信を許可する」だけでは足りないはずです。応答はWebサーバー側からこちらへ返ってくるからです。戻り用のポートを開けた覚えが無いのに、なぜブラウザは応答を受け取れるのでしょうか。
答えは、現在のファイアウォールの多くが通信の状態を追跡しているからです。これをステートフルインスペクションと呼びます。
| ステートレス | ステートフル | |
|---|---|---|
| 判定の単位 | パケット1つずつを独立に見る | 接続の一連の流れとして見る |
| 戻りの通信 | 明示的な許可ルールが必要 | 内側から始めた通信の応答は自動で通る |
| 外から突然届いた通信 | ルール次第 | 記録に無いので捨てられる |
ステートフルなファイアウォールは、内側から出ていった通信を接続表に記録し、その応答として辻褄が合うパケットだけを通します。「内から外は許可、外から内は拒否」というよくある設定は、正確には「内から始めた通信の戻りは通す」という意味なのです。
この「表は内側から通信を始めたときにだけ作られる」という性質は、[[NATとポートフォワーディング]] の変換表とまったく同じ土台の話です。[[FTP]] のアクティブモードが失敗しがちなのも同じ理由で、データ接続をサーバー側から張りにくるため、接続表にも変換表にも記録が無く「外から突然届いた通信」として捨てられてしまいます。静的なIP・ポートのルールだけを眺めていても、これらの現象は説明が付きません。
種類
| 種類 | 対象 | 例 |
|---|---|---|
| ネットワークファイアウォール | IP・ポート単位の通信 | クラウドのセキュリティグループ |
| WAF(Web Application Firewall) | HTTPリクエストの中身 | SQLインジェクションらしきパターンを検知・遮断 |
| ホストファイアウォール | 個々のサーバー単位の設定 | iptables、ufw |
WAFと他のセキュリティ対策との違い
ファイアウォールが「通信そのもの」を制御するのに対し、WAFは[[Webセキュリティ]]で扱う攻撃パターン(XSSやSQLインジェクションの兆候など)を検知して遮断します。両者は防御レイヤーが異なるため、片方だけで安心せず組み合わせて使うのが基本です。
開発者が気をつけること
- 開発時に「動かないから全部許可」にして、そのまま本番に持ち込むのは典型的な事故の元。必要最小限のポートだけを開ける
- [[クラウドコンピューティング]] のセキュリティグループはデフォルトで厳しめに設定されていることが多い。仕組みを理解せず緩めると意図せず外部公開してしまう
- [[ロードバランサ]] の手前に配置し、正規の入口以外からのアクセスを遮断する構成が一般的
関連技術とのつながり
- [[TCP/IP]] — ファイアウォールのルールが前提とするIP・ポートの知識
- [[クラウドコンピューティング]] — セキュリティグループとして機能が提供される
- [[Webセキュリティ]] — WAFが防御する攻撃パターンの知識と直結
- [[ロードバランサ]] — 通信経路上でファイアウォールと組み合わせて配置される
- [[ゼロトラスト]] — 境界で守る考え方の限界(内部に入られると横移動を許しやすい)を出発点にした設計思想
Q: 戻り用のポートを開けていないのに、ブラウザがWebサーバーからの応答を受け取れるのはなぜ?
- [ ] 443番ポートの通信だけは例外としてルールが適用されないから
- [x] ファイアウォールが通信の状態を追跡し、内側から始めた通信の応答を通しているから
- [ ] 応答パケットは暗号化されており検査の対象外だから
解説: ステートフルインスペクションでは内側から出ていった通信を接続表に記録し、その応答として辻褄が合うパケットだけを通します。
Q: 「表は内側から通信を始めたときにだけ作られる」という点で、ステートフルなファイアウォールの接続表と同じ土台にあるものはどれ?
- [x] NAT(NAPT)の変換表
- [ ] DNSのゾーンファイル
- [ ] ルーティングテーブル
解説: NAT の変換表も内側から通信を始めたときに作られるため、外から突然届いたパケットは配り先が分からず捨てられます。FTP のアクティブモードが失敗しがちな理由も同じです。
Q: ネットワークファイアウォールとWAFの違いとして正しいのはどれ?
- [ ] WAF は通信を暗号化し、ネットワークファイアウォールは復号する
- [ ] どちらも同じ仕組みで、呼び名が違うだけ
- [x] ネットワークファイアウォールはIP・ポート単位で通信を制御し、WAF は HTTP リクエストの中身を検査する
解説: 防御するレイヤーが異なるため、片方だけで安心せず組み合わせて使うのが基本です。