UFW は Uncomplicated Firewall の略で、Ubuntu 系で標準的に使われるファイアウォール設定ツールです。
Linux 本体のパケットフィルタを、覚えやすいコマンドで扱えるようにした薄い層だと考えると分かりやすいです。
考え方は「原則すべて閉じる」
公開サーバーの守りは、必要なものだけ開けるのが基本です。UFW ではまず外からの通信をすべて拒否し、そのうえで必要なポートを個別に許可します。
ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow 80,443/tcp
ufw enable
順番を間違えると自分が締め出される
これが最も多い事故です。 SSH を許可する前に ufw enable を実行すると、その瞬間に自分の接続が切れ、二度と入れなくなります。クラウドならコンソールから復旧できますが、物理サーバーや制限のある環境では詰みます。
必ず 「SSH を許可 → 有効化」 の順で実行してください。作業前に別のターミナルで接続を1つ開いたままにしておくと、万一のときに戻せます。
Fail2ban との違い
同じ「守り」でも役割が違います。
| UFW | Fail2ban | |
|---|---|---|
| 判断の材料 | ポートと送信元 | ログの中身(認証失敗の回数) |
| 効くタイミング | 接続の入口 | 接続できた後の振る舞い |
| 位置づけ | 土台 | 補助 |
UFW が先、Fail2ban が後です。ポートを開けっぱなしにしたまま Fail2ban を入れても、守りの順序が逆になります。
押さえておきたい注意点
Docker はホストのパケットフィルタを直接操作するため、UFW で閉じたつもりのポートがコンテナ公開によって開いていることがあります。Docker を使うサーバーでは、UFW の表示だけを信じず、実際に外からポートスキャンして確認してください。
実務で見るポイント
ufw status numberedで現在のルールを番号付きで確認できる- クラウドではセキュリティグループとの二重管理になる。どちらで制御するか決めておく
- 設定後は必ず外部から到達確認する。「設定した」と「効いている」は別