VPSを借りてUbuntuサーバーを立てたら、まず最初にやるべきことがあります。それがセキュリティ強化(ハードニング)です。インターネットに公開したサーバーは、起動直後から世界中のボットがポートをスキャンし、SSHにブルートフォース攻撃(辞書攻撃)を仕掛けてきます。本記事では Ubuntu 24.04 LTS のサーバーを対象に、2026年時点の最新構成を実際に ubuntu:24.04 Dockerコンテナで検証した一次データをもとに解説します。
検証環境:ubuntu:24.04 公式Dockerイメージ(openssh-server 1:9.6p1-3ubuntu13.16)。比較用に ubuntu:22.04 も使用。すべて2026年6月15日に docker run --rm で実測しています。
この記事のポイント
- Ubuntu 24.04 の SSH デフォルトは
sshd -T実測でX11Forwarding yes/PasswordAuthentication yes。いずれも要変更 - UFW 0.36.2 の
DEFAULT_INPUT_POLICYは最初からDROP。有効化するだけで受信は遮断される(実測確認) - fail2ban 1.0.2 のデフォルト
banactionはiptables-multiport。「nftablesがデフォルト」は誤解(jail.conf 実測) - ed25519 鍵は実測で秘密鍵411B・公開鍵98B。RSA-4096(3381B / 743B)の約8分の1で強度は同等以上
- 設定の順番を間違えると締め出されます。記事の手順通りに進めてください
目次
- はじめに:なぜ即日セキュリティ設定が必要か
- 必須セキュリティパッケージ一覧(2026年版・実測)
- UFWファイアウォールの設定
- SSH強化:鍵認証とsshd_config設定
- 自動セキュリティアップデートの有効化
- fail2banでブルートフォース攻撃を遮断
- AppArmorとauditdの確認
- Ubuntu 22.04 と 24.04 のバージョン差
- セキュリティ強化チェックリスト
- まとめ
はじめに:なぜ即日セキュリティ設定が必要か
VPSを起動してSSHログインできる状態になると、すぐにボットによる攻撃が始まります。/var/log/auth.log を見ると、数分以内に Failed password for root from ... という行が大量に出ます。これはrootやよくあるユーザー名のパスワードを片っ端から試すブルートフォース攻撃です。
Canonical(Ubuntu開発元)は脆弱性が見つかるたびに Ubuntu Security Notices(USN)としてセキュリティ修正を公開しています。下は実際の USN 一覧ページです。毎日のように新しい修正が出ていることが分かります。

2026年時点で特に多いのは次のような脅威です。
- SSHへのブルートフォース攻撃(ボットネット経由の辞書攻撃)
- 公開ポートへの脆弱性スキャン(古いミドルウェア狙い)
- マイニングマルウェア・ボットの埋め込み
- サプライチェーン攻撃(npm・pip 経由の悪意あるパッケージ)
これらすべてを完全に防ぐのは難しいですが、基本的なハードニングをするだけで標的になる確率が劇的に下がります。まずは下記の手順を順番に進めましょう。
必須セキュリティパッケージ一覧(2026年版・実測)
Ubuntu 24.04 のリポジトリで使えるセキュリティ関連パッケージのバージョンを、ubuntu:24.04 コンテナで apt-cache policy を実行して実測しました。

この中から、まず次の4パッケージを優先的にインストールします。実際にコンテナで apt-get install を実行したログがこちらです。

$ sudo apt install -y ufw fail2ban unattended-upgrades auditd
Setting up auditd (1:3.1.2-2.1build1.1) …
Setting up nftables (1.0.9-1ubuntu0.1) …
Setting up fail2ban (1.0.2-3ubuntu0.1) …
Setting up ufw (0.36.2-6) …
Setting up unattended-upgrades (2.9.1+nmu4ubuntu1) …
実測すると、ufw を入れた時点で nftables 1.0.9 と libnftables1 が依存関係として同時にインストールされ、fail2ban を入れると python3-systemd が一緒に入ります。この4パッケージで、ファイアウォール・自動BAN・自動更新・監査ログの土台が一気に揃います。
注意
sudo apt upgrade -y は必ずUFWを有効にする前に済ませてください。UFWを先に有効化してSSH許可を忘れると、その後の操作で締め出されることがあります。順番が大事です。
UFWファイアウォールの設定
UFW(Uncomplicated Firewall)は iptables/nftables のフロントエンドです。Ubuntu 24.04 では UFW 0.36.2 が標準で、パケットフィルタ本体として nftables v1.0.9 が依存で入ります。まずコンテナで実測したデフォルト設定を見てみましょう。

注目すべきは /etc/default/ufw の DEFAULT_INPUT_POLICY="DROP" です。UFW を有効にするだけで、許可していない受信接続はすべてブロックされます。ただし実測では /etc/ufw/ufw.conf の ENABLED=no で、インストール直後は無効の状態です。
①SSH を許可してから UFW を有効にする(順番厳守)
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 verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
22/tcp ALLOW IN Anywhere
allow OpenSSH を先に実行してから enable します。ここだけは順番を間違えると動きません。UFW を先に有効にしてSSH許可を忘れると、VPSのWebコンソール(管理画面のシリアルコンソール)からしかアクセスできなくなります。
②Webサーバーを動かす場合の追加設定
$ sudo ufw allow 443/tcp # HTTPS
$ sudo ufw status numbered
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
SSH強化:鍵認証とsshd_config設定
次に重要なのがSSH設定の強化です。Ubuntu 24.04 の OpenSSH は実測で OpenSSH_9.6p1(パッケージ 1:9.6p1-3ubuntu13.16)。デフォルトの設定にはサーバー用途では要変更の項目があります。sshd -T で実際の実効値をダンプした結果がこちらです。

実測で確認できた要注意ポイントは次の3つです。
x11forwarding yes― GUIアプリをSSH越しに転送する機能。サーバーでは不要なのでnoにpasswordauthentication yes― パスワードログインが有効。鍵認証に切り替えてからnoにpermitrootlogin without-password― rootは鍵があればログイン可。完全に塞ぐならnoに
ちなみに permitrootlogin の without-password は、設定ファイルでよく見る prohibit-password と同じ意味です。sshd -T は正規化した without-password で返してきます。
①まず公開鍵ペアを作成する(ローカルPCで実行)
ローカルPC(接続元)で鍵を生成します。ed25519 はRSA-4096より短い鍵長で同等以上の強度を持つ、2026年の推奨アルゴリズムです。実際にコンテナで生成してサイズを比較しました。

実測では ed25519 の秘密鍵が 411バイト・公開鍵が 98バイト。RSA-4096(秘密鍵3381バイト・公開鍵743バイト)と比べて圧倒的にコンパクトです。
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): [強力なパスフレーズを入力]
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-vps-ip
②sshd_config を強化する
公開鍵をサーバーに登録してSSHログインできることを確認したら、次の設定を変更します。
# 以下を変更・追記する
PermitRootLogin no
PasswordAuthentication no
X11Forwarding no
MaxAuthTries 3
LoginGraceTime 20
$ sudo sshd -t # 設定の文法チェック(エラーが出なければOK)
$ sudo systemctl restart ssh
● ssh.service – OpenBSD Secure Shell server
Active: active (running)
重要
PasswordAuthentication no に変更する前に、必ず鍵認証でSSHログインできることを別ターミナルで確認してください。パスワード認証を無効にした状態で鍵が使えないと、サーバーから締め出されます。
自動セキュリティアップデートの有効化
unattended-upgrades を使うと、セキュリティパッチを自動で適用できます。Ubuntu 24.04 では実測で 2.9.1+nmu4ubuntu1 が入ります。設定ファイル /etc/apt/apt.conf.d/50unattended-upgrades を確認すると、デフォルトの許可リスト(Allowed-Origins)に ${distro_id}:${distro_codename}-security やESM系のセキュリティオリジンが最初から含まれています。
“${distro_id}:${distro_codename}-security”;
“${distro_id}ESMApps:${distro_codename}-apps-security”;
“${distro_id}ESM:${distro_codename}-infra-security”;
$ cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Unattended-Upgrade “1”;
再起動が必要なアップデートを自動で再起動して適用したい場合は、50unattended-upgrades で Unattended-Upgrade::Automatic-Reboot "true"; を設定します。ただし本番サービスがある場合は、Automatic-Reboot-Time "04:00"; のようにメンテナンスウィンドウを決めてから有効にしましょう。
fail2banでブルートフォース攻撃を遮断
fail2ban 1.0.2-3ubuntu0.1 は、ログを監視して一定回数以上認証に失敗したIPを自動的にブロックします。ここで実測して分かった重要な事実があります。Ubuntu 24.04 の /etc/fail2ban/jail.conf の [DEFAULT] を確認したところ、デフォルトの banaction は iptables-multiport でした。「24.04 では fail2ban が nftables に移行した」という説明をよく見かけますが、デフォルトのjail設定は iptables 系のままです(実際の遮断は iptables-nft 互換レイヤ経由で動きます)。
Fail2Ban v1.0.2
$ grep -E ‘^(bantime|findtime|maxretry|banaction)’ /etc/fail2ban/jail.conf | head -4
bantime = 10m
findtime = 10m
maxretry = 5
banaction = iptables-multiport
実測したデフォルト値は bantime 10m・findtime 10m・maxretry 5。つまり「10分以内に5回失敗したら10分BAN」が初期値です。これを実運用向けに強化します。設定は必ず jail.local を作って行います。
$ sudo nano /etc/fail2ban/jail.local
# [DEFAULT] セクションを以下に変更
bantime = 1h
findtime = 10m
maxretry = 3
# nftablesで遮断したい場合は明示的に指定
banaction = nftables-multiport
$ sudo systemctl enable –now fail2ban
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter … Currently failed: 0 / Total failed: 0
`- Actions … Currently banned: 0
参考までに、fail2ban の公式パッケージページ(Ubuntu noble)でもバージョンと依存関係を確認できます。

AppArmorとauditdの確認
Ubuntu 24.04 には実測で AppArmor 4.0.1 が標準搭載されています。AppArmor はプロセスごとにアクセスできるリソース(ファイル・ネットワーク等)を制限するMAC(強制アクセス制御)の仕組みです。VPSの実機では次のように状態を確認できます。
apparmor module is loaded.
36 profiles are loaded.
34 profiles are in enforce mode.
$ sudo systemctl status apparmor
● apparmor.service – Load AppArmor profiles
Active: active (exited)
補足
aa-status や systemctl はカーネル機能とsystemdに依存するため、本記事の検証に使った素のDockerコンテナ内では動きません(コンテナはホストのカーネルを共有し、systemdを持たないため)。上のコマンドは実際のVPS/物理マシン上で実行してください。本記事ではパッケージのバージョン(apparmor 4.0.1)までをコンテナで実測しています。
auditd(Linux Audit Daemon、実測 3.1.2)はシステム上のコマンド実行やファイルアクセスを記録します。コンプライアンス要件がある環境や、侵害後の調査のために有効にしておくと役立ちます。
$ sudo auditctl -w /etc/passwd -p wa -k passwd_changes
rule added
$ sudo ausearch -k passwd_changes
<no matches> # 監視開始直後は記録なし
Ubuntu 22.04 と 24.04 のバージョン差
すでに 22.04 のサーバーを運用している人向けに、同じ確認コマンドを ubuntu:22.04 と ubuntu:24.04 の両コンテナで実行してバージョンを比較しました。

特に fail2ban は 0.11.2 → 1.0.2 とメジャーバージョンが上がっています。一方で、X11Forwarding yes がデフォルトなのは 22.04 でも 24.04 でも同じでした。「新しいバージョンだから安全」ではなく、どのバージョンでも初期設定の見直しが必要だということです。
セキュリティ強化チェックリスト
ここまでの実測結果(デフォルト値と推奨値)をチェックリストにまとめました。

設定が完了したら、次のコマンドで現在の状態をまとめて確認できます。
active
active
active
active
$ sudo sshd -T | grep -E ‘passwordauthentication|permitrootlogin|x11forwarding’
passwordauthentication no
permitrootlogin no
x11forwarding no
| 設定項目 | デフォルト値(実測) | 推奨値 | 優先度 |
|---|---|---|---|
X11Forwarding |
yes | no | ★★★★★ |
PasswordAuthentication |
yes | no(鍵認証後) | ★★★★★ |
PermitRootLogin |
without-password | no | ★★★★☆ |
MaxAuthTries |
6 | 3 | ★★★☆☆ |
| UFW(DEFAULT_INPUT) | DROP(ただし ENABLED=no) | SSH許可後に有効化 | ★★★★★ |
| fail2ban banaction | iptables-multiport | 1h BAN / maxretry=3 | ★★★★☆ |
| unattended-upgrades | 未インストール | 有効(2.9.1) | ★★★★★ |
| AppArmor | 有効(4.0.1・デフォルト) | そのまま維持 | ★★★☆☆ |
まとめ
Ubuntu 24.04 LTS のセキュリティ強化について、2026年6月15日時点の実測データをもとに解説しました。
- UFW 0.36.2 の DEFAULT_INPUT_POLICY は実測で DROP。SSHを許可してから enable する順番が重要
- SSHのデフォルトは sshd -T 実測で X11Forwarding yes / PasswordAuthentication yes(22.04も同じ)
- ed25519 鍵に切り替えた後、PasswordAuthentication no でパスワードログインを無効化する
- fail2ban 1.0.2 のデフォルト banaction は iptables-multiport。nftablesにしたいなら明示指定が必要
- unattended-upgrades 2.9.1 はセキュリティオリジンが既定で許可リストに入っている
- AppArmor 4.0.1 はデフォルトで有効。auditd 3.1.2 を追加すると監査ログが取れる
これらの設定を完了させれば、一般的なVPS環境として十分な基本セキュリティを確保できます。本番でサービスを公開するなら、次のステップとしてTLS証明書の取得(Let’s Encrypt)も進めてみてください。どのVPSを選ぶか迷っている人は、実測ベンチで比較した も参考にしてください。



コメント