導入
ファイアウォール(firewall=防火壁)は、サーバーに出入りする通信をチェックし、「通す」「落とす」を判断する関所です。第6章で学んだ「IP+ポート+プロトコル」を条件に、危険な・不要な通信をブロックします。まず考え方を図で押さえてから、次のレッスンで実際のコマンドを触ります。
説明
サーバーには、第6章で見たように複数のポート(窓口)が開いています。もし全部を無防備に世界へ晒すと、攻撃者に狙われ放題です。そこで関所を置き、**「入ってくる通信を1つずつ検問する」**のがファイアウォールです。
flowchart LR
NET(("インターネット<br/>(世界中から)")) --> FW{"ファイアウォール<br/>(関所)"}
FW -->|"22/SSH: 通す(ACCEPT)"| S1["SSH"]
FW -->|"80/HTTP: 通す(ACCEPT)"| S2["Webサーバー"]
FW -->|"23/telnet: 落とす(DROP)"| X1["✕ 遮断"]
FW -->|"3306/DB: 落とす(DROP)"| X2["✕ 遮断"]
判断のキーワードは2つです。
- ACCEPT(通す) … その通信を受け入れる。
- DROP(落とす) … その通信を黙って捨てる(相手には無反応に見える)。
ファイアウォールの設計には、正反対の2つの発想があります。
flowchart TD
A["ホワイトリスト方式(推奨)<br/>既定は『全部落とす』<br/>必要なものだけ明示的に通す"] --> A2["安全。閉じ忘れが起きにくい"]
B["ブラックリスト方式<br/>既定は『全部通す』<br/>危険なものだけ落とす"] --> B2["穴が残りやすい"]
現代のサーバーでは、**「既定は閉じておき、必要な窓口(SSHの22・Webの80/443など)だけを開ける」**ホワイトリスト方式が基本です。開けるのを忘れても「つながらない」で済みますが、閉じ忘れると「侵入される」——だから安全側(閉じる側)に倒すのです。
Linux でこの関所を実現するコマンドが、歴史ある iptables と、その後継 nftables(nft) です(第6章の netstat→ss と同じ世代交代の関係)。どちらも設定を変えるにはシステムを触るので、管理者権限(sudo/su)が必要です。
実際のクラウドでは、サーバー自身のファイアウォールに加えて、クラウド側の「セキュリティグループ」など複数の関所が重なっていることも多いです。考え方は同じ——「通す条件を最小限に絞る」。この章で関所の基本が読めるようになれば、それらも理解できます。
この章のまとめ
- ファイアウォールは通信を検問する関所。条件は「IP+ポート+プロトコル」
- 判断は ACCEPT(通す) か DROP(落とす)
- 基本はホワイトリスト方式(既定は閉じ、必要な窓口だけ開ける)
- Linux では
iptablesと後継のnft。操作には管理者権限が必要