Ubuntuのファイアウォール状態を確認する方法【ufw status】

システム管理

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 で有効化する

目次

  1. ufw とは
  2. ufw のインストールと初期状態
  3. ufw status で基本的な状態を確認する
  4. ufw status verbose で詳細を確認する
  5. ufw status numbered でルール番号を確認する
  6. デフォルトポリシーを確認・設定する
  7. よく使うルールの確認と追加
  8. Ubuntu 22.04 vs 24.04 の違い
  9. よくあるエラーと解決策
  10. まとめ

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 は標準でインストールされていることがほとんどです。念のか確認しましょう。




ubuntu@vps-server: ~
$ dpkg -l ufw | tail -1
ii ufw 0.36.2-6 all program for managing a Netfilter firewall

ii で始まる行が表示されればインストール済みです。入っていない場合は次のコマンドでインストールします。




ubuntu@vps-server: ~
$ sudo apt update && sudo apt install ufw
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 の基本的な使い方(Ubuntu 24.04 実測)
ufw status の基本的な使い方(Ubuntu 24.04 実測)

ufw status で基本的な状態を確認する

最もよく使うのが sudo ufw status です。ファイアウォールが有効かどうかと、設定されているルールの一覧を一発で確認できます。

①インストール直後の状態(inactive)




ubuntu@vps-server: ~
$ sudo ufw status
Status: inactive

Status: inactiveファイアウォールが無効な状態です。Ubuntu 24.04 では ufw をインストールしただけでは自動では有効になりません。sudo ufw enable を実行して初めて有効化されます。

VPS を借りたときの確認ポイント

Vultr・DigitalOcean・Linode 等のVPSでは、プロバイダ側のファイアウォール(セキュリティグループ)が有効になっていても、OS 側の ufw が inactive なことがあります。必ず両方確認しましょう。

②ufw を有効化してルールを追加した状態

SSHと一般的なWebサービスのポートを許可してから ufw を有効化すると、次のように表示されます。




ubuntu@vps-server: ~
$ sudo ufw allow ssh
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 updatedRules updated (v6) が出るのは、IPv4 と IPv6 の両方のルールが更新されているためです。ufw はデフォルトで IPv4/IPv6 を同時に管理します。

著者アイコン
著者アイコン

ufw enable する前に必ず SSH のポートを許可する」——これを忘れると SSH でログインできなくなります。VPS の場合は VNC コンソールからしか復旧できなくなるので、ここだけは順番を間違えないように。

ufw status verbose で詳細を確認する

sudo ufw status verbose を使うと、デフォルトポリシーも含めた詳細な状態が確認できます。




ubuntu@vps-server: ~
$ 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)
ufw status verbose の詳細表示(実測)
ufw status verbose の詳細表示(実測)

注目すべきは Default: deny (incoming), allow (outgoing) の行です。これは 許可していないポートへの着信はすべてブロックされることを意味します。実際に /etc/default/ufw を確認すると次の設定が書かれています(Ubuntu 24.04 実測値)。




ubuntu@vps-server: ~
$ sudo grep DEFAULT_ /etc/default/ufw
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 が便利です。各ルールに番号が付くため、番号指定での削除が可能になります。




ubuntu@vps-server: ~
$ 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)
ufw status numbered とルール削除(実測)
ufw status numbered とルール削除(実測)

番号を使ってルールを削除するには次のようにします。




ubuntu@vps-server: ~
$ sudo ufw delete 4
Deleting:
deny 8080/tcp
Proceed with operation (y|n)? y
Rule deleted

なお ufw delete でルールを削除すると残りのルールは番号が詰められます。複数のルールを削除する場合は、番号の大きい方から削除するのがコツです(番号がずれる混乱を避けられます)。

デフォルトポリシーを確認・設定する

ufw には「明示的に許可していない通信をどう扱うか」のデフォルトポリシーがあります。サーバー運用では着信を deny(拒否)にしておくのが基本です。

デフォルトポリシー確認(/etc/default/ufw 実測値)
デフォルトポリシー確認(/etc/default/ufw 実測値)



ubuntu@vps-server: ~
$ sudo ufw default deny incoming
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)

denyreject の違いも覚えておくと良いでしょう。deny はパケットをサイレントに捨てます(接続先に何も通知しない)。reject は接続拒否の応答を返します。サーバーが存在しないように見せたい場合は deny、接続エラーをすぐクライアントに伝えたい場合は reject が適しています。一般的には deny が推奨されます。

よく使うルールの確認と追加

①ポート番号とサービス名での指定

ufw は /etc/services に定義されたサービス名でルールを書けます。SSH のポートは 22/tcp です(Docker 公式イメージで実測)。




ubuntu@vps-server: ~
$ grep -w ssh /etc/services
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 sshufw allow 22/tcp は同じルールを追加します。2回目は「すでに存在する」として skip されます。

②特定のIPからの接続のみ許可する




ubuntu@vps-server: ~
$ sudo ufw allow from 203.0.113.1 to any port 22
Rule added
$ sudo ufw status | grep 22
22 ALLOW 203.0.113.1

上記の 203.0.113.1 は例示用IPアドレス(RFC 5737)です。実際には自分の接続元IPに置き換えてください。

③ufw の無効化と再確認




ubuntu@vps-server: ~
$ sudo ufw disable
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 vs 24.04 ufw バージョン比較(実測)
Ubuntu 22.04 vs 24.04 ufw バージョン比較(実測)

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 なしで実行した場合




ubuntu@vps-server: ~
$ ufw status
ERROR: You need to be root to run this script

ufw の操作には root 権限が必要です。必ず sudo ufw status と実行してください。

② iptables のカーネルモジュールエラー(Docker / WSL)




docker container内
$ ufw status
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)




ubuntu@vps-server: ~
$ sudo ufw status
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: inactiveufw allow ssh してから ufw enable する順番を守る

VPSでサーバーを運用するなら、ufw の設定は必須のステップです。特にSSH 許可前に ufw enable してしまうとログインできなくなる点は、初学者が最もはまるポイントです。本記事の手順通り、ルール追加→enable の順で進めてください。

実際に VPS を借りてサーバーを立ち上げてみたい方は、以下の記事も参考にしてください。

コメント

タイトルとURLをコピーしました