この記事のポイント
- Ubuntu 24.04 の UFW は
ufw 0.36.2-6で、インストール直後は/etc/ufw/ufw.confがENABLED=no(無効)です - SSH を許可してから
ufw enableする順番を守らないと、VPS に SSH で接続できなくなります - ポート開放は
ufw allow 80/tcp、削除はufw delete allow 80/tcpで行います(実測で確認) ufw show addedで追加済みルール一覧をいつでも確認できます(実測: ubuntu:24.04)- 「22.04 は iptables-legacy、24.04 は nftables」とよく言われますが、実測すると両方とも既に
iptables-nft(nftablesバックエンド)でした
UbuntuでVPSを公開するとき、最初にやるべきセキュリティ設定がファイアウォール(UFW)です。結論から言うと、ufw allow ssh → ufw enable の順番さえ守れば、数コマンドで安全な状態を作れます。この記事では、Ubuntu 24.04 LTS の公式 Docker イメージで実際に UFW コマンドを動かした実出力を載せています。架空の結果ではなく、本物のコマンド実行結果です(2026-06-15 実測)。

目次
- UFWとは何か
- UFWのインストールと初期確認
- 基本設定:デフォルトポリシーと SSH 許可
- ポート開放(allow)とブロック(deny)
- ルールの削除
- /etc/ufw/ の構成
- Ubuntu 22.04 vs 24.04 バージョン比較
- よくあるエラーと対処法
- まとめ
UFWとは何か
UFW(Uncomplicated Firewall)は、Linux カーネルの netfilter(パケットフィルタリング機構)を、シンプルなコマンドで操作するためのフロントエンドツールです。Ubuntuに標準で含まれており、追加料金なしで使えます。
VPS でサーバーを公開する際、「外から来る通信のうち、必要なポートだけ通す」という設定を数コマンドで実現できます。正直、iptables を直接書くのは初学者には難しいのですが、UFW なら ufw allow 80/tcp の一行で HTTP を開放できます。
| ツール | 難易度 | 用途 | Ubuntu での状態 |
|---|---|---|---|
| UFW | ★☆☆(簡単) | 個人VPS・サーバー入門 | 標準で導入可・デフォルト無効 |
| iptables | ★★★(高度) | 本番環境・細かな制御 | UFW の内部で動く |
| nftables | ★★★(高度) | 新世代のパケットフィルタ | iptables-nft 経由のバックエンド |
UFWのインストールと初期確認
手順1:パッケージを更新してインストールする
Ubuntu 24.04 LTS には UFW が含まれていますが、ここでは最小構成のイメージから一度 apt install して挙動を確認しました。実際にコンテナで動かすと、UFW は iptables と nftables も同時にインストールします。
The following NEW packages will be installed:
iptables nftables ufw
Setting up nftables (1.0.9-1ubuntu0.1) …
Setting up iptables (1.8.10-3ubuntu2) …
Setting up ufw (0.36.2-6) …

インストール後、バージョンを確認します。Ubuntu 24.04 LTS では ufw 0.36.2(パッケージ 0.36.2-6)が入りました(2026-06-15 実測)。
ufw 0.36.2
Copyright 2008-2023 Canonical Ltd.
$ cat /etc/ufw/ufw.conf
ENABLED=no
LOGLEVEL=low
注意
インストール直後は /etc/ufw/ufw.conf が ENABLED=no(無効)です。この状態ではファイアウォールは機能していません。有効化する前に必ず SSH を許可してください(次のステップで説明します)。
基本設定:デフォルトポリシーと SSH 許可
UFW を有効にする前に、2つのことをやっておきます。
- デフォルトポリシーを設定する(受信は全拒否、送信は全許可)
- SSH のポート(22番)を許可する
ここだけは順番を間違えると動きません。SSH 許可の前に ufw enable すると、VPS に SSH で接続できなくなります(コンソールからしか復旧できなくなります)。
手順2:デフォルトポリシーを設定する
Default incoming policy changed to ‘deny’
(be sure to update your rules accordingly)
$ sudo ufw default allow outgoing
Default outgoing policy changed to ‘allow’
(be sure to update your rules accordingly)
設定すると /etc/default/ufw の値が書き換わります。実際に grep で中身を確認した実測値が以下です。
DEFAULT_INPUT_POLICY=”DROP”
DEFAULT_OUTPUT_POLICY=”ACCEPT”
DEFAULT_FORWARD_POLICY=”DROP”
DEFAULT_APPLICATION_POLICY=”SKIP”
手順3:SSH(ポート22)を許可してから有効化する
SSH を許可してから ufw enable します。実際に --privileged コンテナで有効化まで実行すると、Status: active が取得できました(実測)。
Rules updated
Rules updated (v6)
$ sudo ufw enable
Firewall is active and enabled on system startup
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
ufw allow ssh は ufw allow 22/tcp と同じ意味です。/etc/services を確認すると ssh 22/tcp と定義されており、Ubuntu 24.04 の SSH バージョンは OpenSSH_9.6p1 Ubuntu-3ubuntu13.16(OpenSSL 3.0.13、実測)でした。
ポート開放(allow)とブロック(deny)
手順4:HTTPとHTTPSを開放する
Web サーバーを公開する場合、ポート 80(HTTP)と 443(HTTPS)を開放します。追加したルールは ufw show added で一覧確認できます(実測)。
Rules updated
Rules updated (v6)
$ sudo ufw allow 443/tcp
Rules updated
Rules updated (v6)
$ sudo ufw show added
Added user rules (see ‘ufw status’ for running firewall):
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp

ポート番号の指定形式
ufw allow 80/tcp— TCP ポート 80 だけ許可ufw allow 80— TCP と UDP 両方を許可(HTTP なら /tcp 指定推奨)ufw allow 8000:8080/tcp— 範囲指定(8000〜8080 番)ufw allow from 192.168.1.0/24— 特定 IP からの接続のみ許可
手順5:特定ポートをブロックする(deny)
Telnet(23番)など不要なポートをブロックします。ufw deny 23/tcp を追加すると、ufw show added にも deny ルールが並びます。
Rules updated
Rules updated (v6)
$ sudo ufw show added
Added user rules (see ‘ufw status’ for running firewall):
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw deny 23/tcp
deny と reject の違いは、deny は無応答(パケットを drop)、reject は拒否メッセージを返すという点です。攻撃者にポートの存在を悟られにくいという意味では deny が無難です。
手順6:アプリケーションプロファイルで許可する
UFW にはアプリ名で許可する仕組みもあります。ただし、ここは実測して初めて分かった注意点があります。クリーンインストール直後は /etc/ufw/applications.d/ が空で、ufw app list には何も表示されません。
Available applications:
# (何も表示されない=プロファイル未登録)
「Nginx Full」「OpenSSH」などのプロファイルは、それぞれのパッケージ(nginx / openssh-server)をインストールして初めて登録されます。Nginx を入れた後なら次のように使えます。
$ sudo ufw allow ‘Nginx HTTP’
Rules updated
Rules updated (v6)
プロファイル名にスペースが含まれる場合は引用符で囲みます。「Nginx HTTP」はポート80のみ、「Nginx Full」はポート80と443の両方を許可します。
ルールの削除
手順7:ルールを削除する(2通りの方法)
開放したポートが不要になったときはルールを削除します。実際に ufw delete allow 80/tcp を実行し、削除前後を ufw show added で比較しました(実測)。
方法①:ルールを直接指定して削除(推奨)
Rules updated
Rules updated (v6)
$ sudo ufw show added
Added user rules (see ‘ufw status’ for running firewall):
ufw allow 22/tcp
ufw allow 443/tcp

方法②:番号指定で削除
ufw status numbered で番号を確認してから削除します(番号が振られた状態は --privileged で有効化したコンテナで取得した実出力です)。
Status: active
To Action From
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
$ sudo ufw delete 2
Deleting:
allow 80/tcp
Proceed with operation (y|n)? y
Rules updated
注意:番号は動的に変わる
番号指定で削除すると、残りのルールの番号が繰り上がります。続けて番号指定で削除する場合は、その都度 ufw status numbered で番号を確認してください。
/etc/ufw/ の構成
UFW の設定ファイルは /etc/ufw/ ディレクトリに格納されています。実際に ls で確認した実測結果が以下です(ubuntu:24.04)。
after.init after.rules after6.rules applications.d
before.init before.rules before6.rules sysctl.conf
ufw.conf user.rules user6.rules

| ファイル / ディレクトリ | 役割 |
|---|---|
ufw.conf |
UFW の有効/無効と基本設定(ENABLED、LOGLEVEL など) |
user.rules |
ユーザーが ufw allow/deny で追加したルール(IPv4) |
user6.rules |
ユーザーが追加したルール(IPv6) |
before.rules |
ユーザールールより前に処理されるルール(ループバック許可など) |
after.rules |
ユーザールールの後に処理されるルール(LOG など) |
applications.d/ |
アプリプロファイルの格納先(初期は空。パッケージ導入で登録) |
sysctl.conf |
カーネルパラメータの設定(IPv6フォワーディングなど) |
Ubuntu 22.04 vs 24.04 バージョン比較
Docker コンテナで両バージョンを実際に動かし、UFW と関連パッケージのバージョン・バックエンドを比較しました。

よく「Ubuntu 24.04 で UFW のバックエンドが iptables-legacy から nftables に変わった」と説明されますが、これは正確ではありません。実際に update-alternatives --query iptables で確認すると、22.04 も 24.04 も既に /usr/sbin/iptables-nft(nftablesバックエンド)を指していました。legacy → nft の切り替えはもっと前のバージョンで済んでおり、22.04 と 24.04 の実質的な差は、UFW(0.36.1 → 0.36.2)と iptables(1.8.7 → 1.8.10)のバージョンアップです。
$ ufw –version | head -1
ufw 0.36.1
$ iptables –version
iptables v1.8.7 (nf_tables)
$ update-alternatives –query iptables | grep Value
Value: /usr/sbin/iptables-nft
# Ubuntu 24.04 (Noble) 実測
$ ufw –version | head -1
ufw 0.36.2
$ iptables –version
iptables v1.8.10 (nf_tables)
$ update-alternatives –query iptables | grep Value
Value: /usr/sbin/iptables-nft
いずれにせよ、UFW のコマンド操作(ufw allow など)はバージョンが違っても同じです。内部で nftables を使っていることを意識する必要はほとんどありません。
よくあるエラーと対処法
①「ERROR: Could not find a profile matching ‘nginx’」
Nginx をインストールする前に ufw allow nginx を実行しようとすると出るエラーです。前述のとおり、プロファイルはパッケージ導入後に登録されます。
ERROR: Could not find a profile matching ‘nginx’
# 対処: 先に Nginx をインストールするか、ポート番号で指定する
$ sudo ufw allow 80/tcp
Rules updated
②「WARN: initcaps」と Permission denied(Docker環境)
これは実測中に実際に遭遇したエラーです。通常(非 privileged)の Docker コンテナで ufw status やルール変更を行うと、iptables のカーネル操作権限が無いため次のように出ます。
ERROR: problem running iptables: iptables v1.8.10 (nf_tables):
Could not fetch rule set generation id: Permission denied (you must be root)
$ sudo ufw delete allow 80/tcp
WARN: initcaps
Rules updated # ルール定義自体は更新される
面白いのは、ルールの追加・削除(ufw show added に反映される定義)は権限が無くても更新される点です。実際にコンテナを --privileged で起動し直すと、同じコマンドでエラーが消え Status: active まで取得できました。本番の VPS(Vultr・DigitalOcean・Linode など)では root 権限で動くため、このエラーは発生しません。
③ 有効化したのにシステム再起動で無効に戻る
ufw enable は ufw.conf の ENABLED を yes に書き換え、起動時の自動適用も設定します。万一サービスとして有効になっていない場合は systemctl enable ufw で自動起動を明示してください。
Synchronizing state of ufw.service with SysV service script…
Executing: /usr/lib/systemd/systemd-sysv-install enable ufw
まとめ
Ubuntu 24.04 の UFW ファイアウォール設定について、公式 Docker イメージ(ubuntu:24.04 / ubuntu:22.04)で実際にコマンドを動かして確認しました。
- Ubuntu 24.04 の UFW バージョンは
0.36.2-6(Ubuntu 22.04 は 0.36.1) - インストール直後は無効(
/etc/ufw/ufw.confがENABLED=no) - 設定順番は
ufw default deny incoming→ufw allow ssh→ufw enable ufw show addedで追加済みルールをいつでも確認できる- ルール削除は
ufw delete allow 80/tcp(ルール指定)かufw delete 番号(番号指定) - 22.04 と 24.04 はどちらも iptables-nft バックエンドで、UFW のコマンド操作は同じ
- アプリプロファイルはパッケージ導入後に登録される(初期の app list は空)
本格的に VPS でサーバーを運用するなら、UFW の設定は必須スキルです。まず SSH を許可、次に必要なポートだけ開放するという「最小権限の原則」を守ることが、安全なサーバー運用の第一歩です。
SSH 側の設定(sshd_config の強化)まで合わせて行うと、より堅牢になります。UbuntuのSSH設定ガイドも参考にしてください。VPS を検討している方は、東京リージョンの有無とコストで選ぶとよいでしょう。



コメント