UFWでファイアウォールを設定する
Linuxサーバーの基本防御
UFW(Uncomplicated Firewall)は、Ubuntuに標準搭載されているファイアウォール管理ツールです。
iptablesを直接操作するよりも遥かに簡単にポートの開放・遮断を設定できます。
こんな人向けの記事です
- VPSやLinuxサーバーのセキュリティを強化したい
- ファイアウォールの基本設定を知りたい
- iptablesは難しいので簡単なツールを使いたい
環境
| 項目 | 詳細 |
|---|---|
| OS | Ubuntu 20.04 / 22.04 |
| ツール | UFW(デフォルトでインストール済み) |
Step 1UFWの状態を確認する
サーバー
sudo ufw status
Status: inactive
初期状態では無効(inactive)になっています。
サーバー
# 番号付きでルール一覧を表示
sudo ufw status numbered
Step 2UFWを有効化する
SSH接続中は先にSSHを許可してから有効化する
UFWを有効化するとデフォルトで全ての受信を拒否します。SSHを許可する前に有効化すると、サーバーから締め出されます。
サーバー
# 1. まずSSHを許可
sudo ufw allow ssh
# 2. UFWを有効化
sudo ufw enable
# 3. 確認
sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Step 3ポートを開放する
サーバー
# ポート番号で指定
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
# サービス名で指定
sudo ufw allow http
sudo ufw allow https
# TCPのみ許可
sudo ufw allow 8080/tcp
# ポート範囲
sudo ufw allow 3000:3100/tcp
サーバー
# 特定のポートを拒否
sudo ufw deny 3306 # MySQL外部アクセスを拒否
Step 4IPアドレスで制限する
サーバー
# 特定のIPからの全アクセスを許可
sudo ufw allow from 203.0.113.10
# 特定のIPからの特定ポートへのアクセスを許可
sudo ufw allow from 203.0.113.10 to any port 22
# サブネット単位で許可
sudo ufw allow from 192.168.1.0/24
# 特定のIPからのアクセスを拒否
sudo ufw deny from 10.0.0.5
Step 5ルールの削除
サーバー
# 番号付き一覧を表示
sudo ufw status numbered
# 番号を指定して削除
sudo ufw delete 2
# ルールを直接指定して削除
sudo ufw delete allow 80
Step 6よく使うUFW設定パターン
Webサーバー(nginx / Apache)
サーバー
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
デフォルトポリシーの設定
サーバー
# 受信は全て拒否(許可したものだけ通す)
sudo ufw default deny incoming
# 送信は全て許可
sudo ufw default allow outgoing
コマンド早見表
| コマンド | 動作 |
|---|---|
sudo ufw status | 状態とルール一覧を表示 |
sudo ufw enable | UFWを有効化 |
sudo ufw disable | UFWを無効化 |
sudo ufw allow ポート | ポートを開放 |
sudo ufw deny ポート | ポートを拒否 |
sudo ufw delete ルール | ルールを削除 |
sudo ufw reset | 全ルールをリセット |
sudo ufw reload | ルールを再読み込み |
まとめ
- SSHを許可してからUFWを有効化(締め出し防止)
- デフォルトは受信拒否・送信許可が推奨
- 必要なポートだけ
allowで開放 - IPアドレスでアクセス制限も可能
ufw status numberedでルールの確認・削除