Ubuntuのファイアウォール(ufw)が有効になっているかどうか、どんなルールが設定されているかを確認したい——そんな疑問に、結論から言うと sudo ufw status の1コマンドで確認できます。本記事では実際に Ubuntu 24.04 で実行した結果をもとに、状態確認から詳細表示・ルール管理まで丁寧に解説します。
VPSを借りてサーバーを立てたとき、「ファイアウォールって本当に動いてるの?」と不安になったことはありませんか。ufw の状態確認は意外と奥が深く、status / status verbose / status numbered の3つのコマンドでそれぞれ得られる情報が違います。本記事では Ubuntu 24.04 LTS の Docker 公式イメージで実際にコマンドを動かした結果を載せています。
この記事のポイント
sudo ufw statusで有効・無効と基本ルールを確認できるsudo ufw status verboseでデフォルトポリシーも含めた詳細を確認できるsudo ufw status numberedでルールに番号を付けて個別削除が可能になる- Ubuntu 24.04 は ufw 0.36.2、22.04 は 0.36.1 と異なる(実測値)
- インストール直後はデフォルトで 無効(inactive)。意図的に
ufw enableで有効化する
目次
- ufw とは
- ufw のインストールと初期状態
- ufw status で基本的な状態を確認する
- ufw status verbose で詳細を確認する
- ufw status numbered でルール番号を確認する
- デフォルトポリシーを確認・設定する
- よく使うルールの確認と追加
- Ubuntu 22.04 vs 24.04 の違い
- よくあるエラーと解決策
- まとめ
ufw とは
ufw(Uncomplicated Firewall)は Ubuntu が標準で提供するファイアウォール管理ツールです。内部では iptables(Ubuntu 22.04)や nftables(Ubuntu 24.04)を使っていますが、複雑なコマンド体系を簡潔なインターフェースで包んでくれています。
正直、iptables を直接触ったことがある方ならわかると思いますが、ルール管理が煩雑で初学者には敷居が高い。ufw はそれを「ufw allow ssh」の一行で済ませてくれる便利なラッパーです。Ubuntu Server を立ち上げたらまず ufw の状態を確認する習慣をつけることをお勧めします。
注意
本記事のコマンドは Ubuntu 24.04 LTS(Docker 公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 との差異は「バージョン比較」セクションで扱います。
ufw のインストールと初期状態
手順1:ufw のインストール確認
Ubuntu Server 22.04 / 24.04 では ufw は標準でインストールされていることがほとんどです。念のか確認しましょう。
ii ufw 0.36.2-6 all program for managing a Netfilter firewall
ii で始まる行が表示されればインストール済みです。入っていない場合は次のコマンドでインストールします。
Reading package lists… Done
The following NEW packages will be installed:
iptables nftables ufw
Setting up nftables (1.0.9-1ubuntu0.1) …
Setting up ufw (0.36.2-6) …
Ubuntu 24.04 では ufw をインストールすると nftables 1.0.9 も一緒に入ります。Ubuntu 22.04 ではこの nftables は含まれていませんでした(後述)。

ufw status で基本的な状態を確認する
最もよく使うのが sudo ufw status です。ファイアウォールが有効かどうかと、設定されているルールの一覧を一発で確認できます。
①インストール直後の状態(inactive)
Status: inactive
Status: inactive はファイアウォールが無効な状態です。Ubuntu 24.04 では ufw をインストールしただけでは自動では有効になりません。sudo ufw enable を実行して初めて有効化されます。
VPS を借りたときの確認ポイント
Vultr・DigitalOcean・Linode 等のVPSでは、プロバイダ側のファイアウォール(セキュリティグループ)が有効になっていても、OS 側の ufw が inactive なことがあります。必ず両方確認しましょう。
②ufw を有効化してルールを追加した状態
SSHと一般的なWebサービスのポートを許可してから ufw を有効化すると、次のように表示されます。
Rules updated
Rules updated (v6)
$ sudo ufw allow 80/tcp
Rules updated
Rules updated (v6)
$ sudo ufw allow 443/tcp
Rules updated
Rules updated (v6)
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
To Action From
— —— —-
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Rules updated と Rules updated (v6) が出るのは、IPv4 と IPv6 の両方のルールが更新されているためです。ufw はデフォルトで IPv4/IPv6 を同時に管理します。
ufw status verbose で詳細を確認する
sudo ufw status verbose を使うと、デフォルトポリシーも含めた詳細な状態が確認できます。
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
— —— —-
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
8080/tcp DENY IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
8080/tcp (v6) DENY IN Anywhere (v6)

注目すべきは Default: deny (incoming), allow (outgoing) の行です。これは 許可していないポートへの着信はすべてブロックされることを意味します。実際に /etc/default/ufw を確認すると次の設定が書かれています(Ubuntu 24.04 実測値)。
DEFAULT_INPUT_POLICY=”DROP”
DEFAULT_OUTPUT_POLICY=”ACCEPT”
DEFAULT_FORWARD_POLICY=”DROP”
DEFAULT_APPLICATION_POLICY=”SKIP”
つまり Ubuntu の ufw はインストール直後から INPUT を DROP(拒否)に設定しています。ufw enable すると、許可していないすべての着信は自動的に遮断されます。セキュリティのデフォルト値としては十分に安全な設定です。
ufw status numbered でルール番号を確認する
ルールを削除・整理したいときは sudo ufw status numbered が便利です。各ルールに番号が付くため、番号指定での削除が可能になります。
Status: active
To Action From
— —— —-
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 8080/tcp DENY IN Anywhere
[ 5] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 443/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 8080/tcp (v6) DENY IN Anywhere (v6)

番号を使ってルールを削除するには次のようにします。
Deleting:
deny 8080/tcp
Proceed with operation (y|n)? y
Rule deleted
なお ufw delete でルールを削除すると残りのルールは番号が詰められます。複数のルールを削除する場合は、番号の大きい方から削除するのがコツです(番号がずれる混乱を避けられます)。
デフォルトポリシーを確認・設定する
ufw には「明示的に許可していない通信をどう扱うか」のデフォルトポリシーがあります。サーバー運用では着信を deny(拒否)にしておくのが基本です。

Default incoming policy changed to ‘deny’
(be sure to update your rules accordingly)
$ sudo ufw default allow outgoing
Default outgoing policy changed to ‘allow’
$ sudo ufw status verbose | grep Default
Default: deny (incoming), allow (outgoing), disabled (routed)
deny と reject の違いも覚えておくと良いでしょう。deny はパケットをサイレントに捨てます(接続先に何も通知しない)。reject は接続拒否の応答を返します。サーバーが存在しないように見せたい場合は deny、接続エラーをすぐクライアントに伝えたい場合は reject が適しています。一般的には deny が推奨されます。
よく使うルールの確認と追加
①ポート番号とサービス名での指定
ufw は /etc/services に定義されたサービス名でルールを書けます。SSH のポートは 22/tcp です(Docker 公式イメージで実測)。
ssh 22/tcp # SSH Remote Login Protocol
$ sudo ufw allow ssh
Rules updated
Rules updated (v6)
$ sudo ufw allow 22/tcp
Skipping adding existing rule
Skipping adding existing rule (v6)
ufw allow ssh と ufw allow 22/tcp は同じルールを追加します。2回目は「すでに存在する」として skip されます。
②特定のIPからの接続のみ許可する
Rule added
$ sudo ufw status | grep 22
22 ALLOW 203.0.113.1
上記の 203.0.113.1 は例示用IPアドレス(RFC 5737)です。実際には自分の接続元IPに置き換えてください。
③ufw の無効化と再確認
Firewall stopped and disabled on system startup
$ sudo ufw status
Status: inactive
ufw disable でファイアウォールを無効にすると Status: inactive に戻ります。設定したルールは保持されるので、再度 ufw enable すれば同じルールで再起動します。
Ubuntu 22.04 vs 24.04 の違い

Ubuntu 22.04 と 24.04 で ufw をインストールして比較すると、いくつか重要な差がありました(Docker コンテナで実測)。
| 項目 | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|
| ufw バージョン | 0.36.1-4ubuntu0.1 | 0.36.2-6 |
| iptables バージョン | v1.8.7 (nf_tables) | v1.8.10 (nf_tables) |
| nftables | 未インストール(依存なし) | 1.0.9-1ubuntu0.1(自動インストール) |
| デフォルト INPUT | DROP | DROP |
| IPv6 サポート | yes(デフォルト有効) | yes(デフォルト有効) |
最も目立つ違いは Ubuntu 24.04 では nftables が自動的にインストールされる点です。Ubuntu 24.04 の iptables は内部で nftables をバックエンドとして使う「nf_tables」モードで動作しています(iptables v1.8.10 (nf_tables) の表記で確認できます)。
一方で ufw のコマンドインターフェースは 22.04 と 24.04 で変わらないため、既存のスクリプトやドキュメントはそのまま使えます。
よくあるエラーと解決策
① sudo なしで実行した場合
ERROR: You need to be root to run this script
ufw の操作には root 権限が必要です。必ず sudo ufw status と実行してください。
② iptables のカーネルモジュールエラー(Docker / WSL)
WARN: initcaps
[Errno 2] iptables: Could not fetch rule set generation id: Permission denied
Docker コンテナや WSL では iptables のカーネルモジュールにアクセスできないためこのエラーが出ます。実際のファイアウォール操作は VPS や物理サーバーで行う必要があります。ufw allow でルールをファイルに書き込むことは可能ですが、ufw enable で実際に有効化するには root かつカーネルモジュールへのアクセスが必要です。
③ ufw が見つからない(Command not found)
sudo: ufw: command not found
ufw がインストールされていない場合は sudo apt install ufw でインストールしてください。Ubuntu 20.04 以降のデスクトップ版では標準でインストールされていますが、最小構成のサーバーイメージでは含まれていないことがあります。
まとめ
Ubuntu の ufw ファイアウォール状態を確認する方法を整理します。
sudo ufw status— 有効/無効と基本ルール一覧sudo ufw status verbose— デフォルトポリシーも含めた詳細sudo ufw status numbered— ルール番号付き一覧(削除時に便利)- Ubuntu 24.04 は ufw 0.36.2、22.04 は 0.36.1(nftables 依存が追加)
- インストール直後は
Status: inactive。ufw allow sshしてからufw enableする順番を守る
VPSでサーバーを運用するなら、ufw の設定は必須のステップです。特にSSH 許可前に ufw enable してしまうとログインできなくなる点は、初学者が最もはまるポイントです。本記事の手順通り、ルール追加→enable の順で進めてください。
実際に VPS を借りてサーバーを立ち上げてみたい方は、以下の記事も参考にしてください。
関連記事



コメント