Ubuntu Server 22.04 ガイド
SECURITY 02 / 03

ファイアウォール

管理接続を確保してから、必要な受信だけを許可します。

共通の設定基準:SEC-04。ほかのOSでも確認する基準を見る

01 / 許可する通信を決める

先にSSH公開鍵と管理者を完了し、現在のSSH接続を維持します。コンソールから復旧できることも確認してください。クラウドやルーター側のフィルター、既存UFWルール、IPv4とIPv6を含む接続経路を調べ、必要なサービスと接続元を決めます。

sudo ufw status verbose
sudo ufw status numbered
sudo ss -lntup

既存のファイアウォールをリセットせず、運用中のルールへの影響を確認してください。以下の ADMIN_IP はサーバーから見える管理端末の送信元IPまたは適切なCIDRに置き換えます。NATやVPN経由では端末自身のアドレスと異なる場合があります。

02 / SSHを許可して有効化

必要なSSHポートと送信元を確認し、まず許可ルールを追加します。22以外を使用する場合は実際のポートに変更します。公開サービスにも必要なルールを追加し、その後に既定ポリシーを設定します。

sudo ufw allow from ADMIN_IP to any port 22 proto tcp
sudo ufw status numbered

ルールが意図どおり追加されたことを確認し、必要な受信の許可が揃ってから有効化します。既存環境ではポリシー変更が他の通信に影響するため、適用範囲を先に確認します。

sudo ufw allow from ADMIN_IP to any port 22 proto tcp &&
sudo ufw default deny incoming &&
sudo ufw default allow outgoing &&
sudo ufw logging low &&
sudo ufw enable
sudo ufw status verbose

SSHセッションを閉じずに別端末から新規SSH接続を試します。失敗したらコンソールから sudo ufw status numbered で確認し、必要な許可を修正します。

03 / 別接続と遮断を確認

必要なサービスに到達でき、許可していない待ち受けポートに外部から到達できないことを確認します。サービス停止だけでは遮断の証明になりません。IPv4とIPv6それぞれ、利用する経路から試してください。ログは sudo journalctl -k | grep 'UFW BLOCK' で確認できます。

検証用Ubuntu 22.04.5 VMでは、SSHを送信元限定で許可してUFWを有効にし、別の管理端末から新規SSH接続に成功しました。試験用HTTP 8080は一時許可中に到達でき、ルール削除後は内部でサービスが稼働したまま接続がタイムアウトし、UFW BLOCKログも確認しました。試験サービスと一時ルールは削除済みです。

この試験はローカルQEMUのポート転送経由のIPv4接続です。公開インターネットやIPv6の到達性は確認していません。

UFW設定と遮断の検証画面
検証用VMでのファイアウォール確認。