Ubuntu 26.04 講座 / UFWで管理・サービスポートを制限する

UFWは実際の管理接続の送信元とサービスポートを確認したうえで、必要な接続のみを許可するように構成します。ファイアウォールをオンにする前にSSH許可ルールとコンソールを準備し、許可・拒否クライアントそれぞれで新しい接続として検証する必要があります。

リスナーと既存ルールの確認

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

サービスがどのアドレスとポートで待機しているか、現在のSSHの実際のpeerアドレスが何かを記録します。NATやVPNを経由すると、自分が想定しているPCのアドレスとサーバーが見る送信元が異なる場合があります。UFWがすでに有効になっている場合は、既存のポリシーとルールを保持し、今回の変更のみを追加します。

固定IP実習における許可Linuxクライアントはホスト専用アドレス192.168.56.10です。Windowsホストから直接管理する場合、実際の送信元は通常192.168.56.1となるため、ルールの.10をその値に変更します。サーバーでss -tnのpeerとクライアントのアドレスを照合し、NATアダプターのアドレスやサーバーの宛先.20を送信元に入れないようにします。

既存ルールのない専用実習VMの初期ポリシー

以下の流れは、既存のルールがない専用VMで管理クライアント192.168.56.10、SSHポート22を確認した例です。自分の実際の値に置き換える必要があります。他のポリシーがあるシステムの基本送受信ポリシーをこの例で上書きすることはありません。

sudo ufw --dry-run allow from 192.168.56.10 to any port 22 proto tcp
sudo ufw allow from 192.168.56.10 to any port 22 proto tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing

dry-runは適用予定のルールを表示するだけで、実際のアクセス許可は作成しません。管理許可ルールを先に追加し、コンソールログインを維持します。SSHポートが異なる場合、22番ルールは既存の接続を保護できません。

Ubuntuファイアウォールの解説では、UFWの基本動作・送信元制限・ドライランの使い方を説明しています。

必要なサービスのみを許可して有効化する

sudo ufw allow from 192.168.56.10 to any port 80 proto tcp
sudo ufw enable
sudo ufw status verbose

80番は該当の実習クライアントでのHTTPテストのみを許可する例です。サービスがなければ、ポートを事前に開ける必要はありません。enableの接続中断警告を読み、他のターミナルで新しいSSH接続ができるか確認するまで既存セッションを閉じないでください。

IPv6・クラウド・コンテナ層を区別する

/etc/default/ufwのIPv6設定とssのIPv6リスナーを確認します。IPv4クライアント1台でブロックされたからといって、IPv6経路までブロックされるわけではありません。クラウドセキュリティグループ・ルーター・ホストファイアウォールも別の層です。

Dockerなどのコンテナエンジンは公開ポートに独自ルールを作成できるため、UFWだけを見て露出範囲を判断することはできません。コンテナを使う場合はホストバインディングとエンジンの公式ファイアウォール連携を両方確認し、外部から実際にポートアクセスを試します。

許可・ブロックのテストと個別ルールの復元

許可したクライアントでは新しいSSH・HTTP接続を、許可していないクライアントでは同じ宛先に対する拒否を確認します。既に開かれた接続だけを試すとステートフルファイアウォールのため新しい接続ポリシーを検証できないことがあります。サービス停止とファイアウォールブロックも区別してください。

sudo ufw delete allow from 192.168.56.10 to any port 80 proto tcp
sudo ufw status numbered

上記のコマンドは今回追加したHTTPの例のルールだけを削除します。管理アクセスが必要な間はSSHルールは維持します。番号で削除する場合は毎回新しいリストを確認する必要があり、全体リセットや既存ポリシーの無効化によって、関連のないルールまで消さないでください。元々無効な専用VMを完全に復元するには、最初に記録したポリシーと変更履歴を基に別途判断します。