Skip to content
VDS · ネットワーク、IPアドレス、ドメイン

ufwファイアウォール:不要なポートを閉じる

5分でufwを設定する方法です。必要なポートを許可し、残りを閉じ、アドレスでアクセスを制限し、自分のSSHを遮断しない方法を説明します。

更新日 2026年8月23日

新品のマシンでは、ネットワークで待ち受けているものはすべて開いた状態です。意図的にインストールしたサービスもあれば、パッケージに同梱されてきたものもあります。ファイアウォールを使えば、これを一括で解決できます。リストに載せたもの以外はすべて拒否されます。

ufw はカーネルルールを扱いやすくするシンプルなラッパーです。ほとんどのケースではこれで十分であり、より複雑な構成については nftables の記事で解説しています。

基本的な設定

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status verbose

ここでは順序が重要です。SSH のルールは有効化する前に追加します。そうしないと ufw enable で接続が切断され、パネルのコンソール /hosting/vds/m/<id> またはレスキューモードから復旧しなければならなくなります。

パネルのコンソールはネットワークとは独立して動作するため、完全に締め出されることはありませんが、時間がかかります。

よく使うルール

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw limit 22/tcp
ufw delete allow 80/tcp
ufw status numbered
ufw delete 3

ufw limit は 30 秒間に 6 回を超えて接続を開く相手を減速させます。パスワード総当たり攻撃に対する手軽な対策です。同じ目的により細かく対応できるツールとして fail2ban があります。

allow from ルールは、公開すべきでないサービスに便利です。データベース、管理パネル、メトリクスのエクスポーターなどが該当します。

ufw allow from 203.0.113.5 to any port 5432 proto tcp

結果の確認

ufw status verbose
ss -tulpn

ss はシステムが待ち受けているものを表示し、ufw status は外部から何が通されているかを表示します。両者のリストの差分が、閉じているサービスであり、これは問題ありません。逆は問題です。ufw でポートが開いているのに、待ち受けているプロセスが存在しない状態です。

外部からは ping ではなくポートで確認します。

nc -vz <address> 443

Docker と ufw

マシンで Docker を動かしている場合は注意が必要です。コンテナのポート転送は ufw のルールより前のカーネルチェーンで処理されます。-p 5432:5432 で起動したコンテナは、ufw status が deny と表示していても外部から到達できます。そのようなポートはローカルインターフェースにバインドしてください。

docker run -p 127.0.0.1:5432:5432 postgres

よくある間違い

間違い結果解決策
SSH のルールなしで ufw enableネットワークアクセスの喪失パネルのコンソールから入り、ufw allow 22/tcp
SSH ポートを変更し、古いルールを残した同じ結果先にルール、その後でポート
ポートは開いているのにサービスが応答しないサービスが 127.0.0.1 で待ち受けているバインドアドレスを変更する
deny にもかかわらずコンテナに到達できるDocker が ufw をバイパスする127.0.0.1 にバインドする

ポートを閉じる前に ss -tulpn を実行し、そこに何が座っているかを把握してください。閉じた監視ポートは、後から「サービスが落ちた」ように見えます。