Firewall を理解する上で最重要といってもいい機能。
通信の“状態(State)”を監視して判断する Firewall の仕組み
つまり FW が コネクション情報を学習し、戻り通信を自動で許可する仕組み。
行きと帰りのパケットが同じ経路を通ることを前提に通信を管理しており、
「行き」のパケットが正しく処理されないと、「帰り」のパケットが来ても、
その通信が何に対応するものか判断できず、ブロックする場合があります。
Contents
1. 具体的に何をしているのか?(一番重要)
FireWall は 「接続テーブル」 を持っています。
例えば内部 → 外部へ TCP/80 にアクセスすると:
【内部 → 外部】
TCP SYN → 許可
この瞬間に FW は以下を記録(学習)します:
| 項目 | 例 |
|---|---|
| 送信元IP | 192.168.1.10 |
| 送信元ポート | 49152(ランダム) |
| 宛先IP | 142.250.196.14(Google) |
| 宛先ポート | 80 |
| 状態 | SYN sent |
これを 接続テーブルに保存。
【外部 → 内部】戻りのパケット
戻りは SYN/ACK(外→内)ですが、ACL になくても:
✔ FW が「これはさっきの通信の戻りだ」と判断して通信を許可!
2. ステートフルが無い場合どうなるか?
ルーターの ACL だけの世界 だと、
- OUT の通信許可
- その戻り(IN)も別途許可を書かなければ通らない
つまり ACL が 2倍必要。
permit tcp 192.168.1.10 any → any eq 80(外に出る)
permit tcp any eq 80 → 192.168.1.10 any(戻り)
3. ASA のステートフル実際のテーブル
TCP outside 203.0.113.1:443 inside 192.168.1.10:49152, idle 0:00:10, bytes 1523, flags UIO
FW は以下を覚えている:
- inside→outside のセッション
- 使用ポート
- idle 時間
- 通過バイト数
- 状態(flags)
これにより、戻りは ACL がなくても通る。
4. ステートフルが実現する強力なメリット
(1) ACL がシンプルで済む
LAN → WAN の戻りを ACL に書かなくてよい。
→ 運用が楽でミスも減る。
(2) 不正な戻り通信を自動で拒否
外部からの攻撃(SYN/ACK, ACK だけなど)を拒否できる。
例:
SYN を送っていないのに、外部から ACK が来たら?
→ その通信は State Table に存在しない
→ 即ドロップ
これが FW の本当の強さ。
(3) ポートスキャンに強い(TCP flags を見る)
SYN なしの ACK, FIN などの不正スキャンを拒否する。
ルーター ACL にはできない防御。
(4) DoS の軽減
大量の異常接続は State Table に入れないため守れる。
7. ASA / Firepower のステートフル特有の動き
ASA は 宛先に送信した戻りのパケットを自動許可が基本方針
ACL に書かれていなくても通る。
NAT との連動
ASA の状態管理は NAT テーブルとも一体化している。
8. ステートフルを一言で言うと?
Firewall は接続を学習して、
“関連する戻り通信だけ” を自動で許可する。
それ以外の戻り通信は全部拒否する。
これが ステートフルインスペクション。
ステートフルが無いと?
ルーターACLだけだと、往復通信を全部書かないと動かない。
不正な通信も判断できない。
セキュリティが弱い。
だからステートフルは必須。