VPS(Ubuntu)のセキュリティ初期設定完全ガイド

サーバー構築

VPS(Ubuntu)を借りたばかりのとき、初期設定をサボると意外と早く不正アクセスに遭います。筆者が実際に Ubuntu 24.04 で確認したところ、デフォルトの sshd_config はパスワード認証が有効で、X11Forwarding yes という状態でした。この記事では、VPS を借りたらすぐ行うべきセキュリティ初期設定を、実際に Ubuntu 24.04 で動かした実コマンドの出力とともに解説します。

対象OS:Ubuntu 24.04.4 LTS(Noble Numbat)。Docker コンテナ(ubuntu:24.04 公式イメージ)で動作確認済み。

この記事のポイント

  • openssh-server 1:9.6p1-3ubuntu13.16 の実 sshd_config を確認――デフォルトは131行でコメントだらけ
  • Ubuntu 24.04 の ufw 0.36.2-6fail2ban 1.0.2-3ubuntu0.1 のインストール手順を実ログで解説
  • SSH鍵を ed25519 で生成し、パスワード認証を無効にするまでの順番が最重要
  • unattended-upgrades を入れるとセキュリティパッチが自動適用される
  • fail2ban の ban action が Ubuntu 24.04 から nftables に変更されている点は要注意

前提環境

この記事のコマンドは以下の環境で動作確認しています。

項目 内容
OS Ubuntu 24.04.4 LTS(Noble Numbat)
検証環境 Docker 公式イメージ ubuntu:24.04
対象 VPS Vultr / DigitalOcean / ConoHa VPS などの Ubuntu イメージ
確認日 2026-06-14

注意

本記事のコマンドは Ubuntu 24.04 LTS で検証しています。Ubuntu 22.04 では openssh-server のバージョンや sshd_config の項目が異なる場合があります。

セキュリティ関連パッケージのバージョン確認(実測)

まず、Ubuntu 24.04 でインストールできるセキュリティ関連パッケージのバージョンを apt-cache policy で確認します。Docker コンテナで実際に取得した結果です。

Ubuntu 24.04 セキュリティ関連パッケージのバージョン(実測)
Ubuntu 24.04 セキュリティ関連パッケージのバージョン(実測)

実測結果から、Ubuntu 24.04 LTS では以下のバージョンが利用できます。




ubuntu@your-vps: ~
$ apt-cache policy ufw fail2ban openssh-server unattended-upgrades
ufw:
Installed: (none) Candidate: 0.36.2-6
fail2ban:
Installed: (none) Candidate: 1.0.2-3ubuntu0.1
openssh-server:
Installed: (none) Candidate: 1:9.6p1-3ubuntu13.16
unattended-upgrades:
Installed: (none) Candidate: 2.9.1+nmu4ubuntu1

いずれも VPS の初期イメージには入っていません(Installed: (none))。これから順番に設定していきます。

STEP 1:非rootユーザーを作成する

VPS を借りると最初は root でログインします。root のまま運用するのはリスクが高いため、まず sudo 権限を持つ一般ユーザーを作成し、root での SSH ログインを禁止します。

手順1:新規ユーザーを追加する




root@your-vps: ~
$ adduser ubuntu
Adding user ‘ubuntu’ …
New password: (パスワードを入力)
Retype new password:
passwd: password updated successfully
$ usermod -aG sudo ubuntu
$ id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),27(sudo)

groups=1000(ubuntu),27(sudo) という出力が確認できれば、sudo グループへの追加は成功です。

STEP 2:SSH 鍵認証を設定する

パスワード認証のままだとブルートフォース攻撃にさらされます。ed25519 の鍵ペアを生成してパスワード認証を無効化するのが現代のベストプラクティスです。

手順2:ローカル PC で SSH 鍵ペアを生成する

以下は ローカル PC(Mac/Windows/WSL) で実行します。Ubuntu 24.04 の openssh-client 1:9.6p1-3ubuntu13.16 で動作確認済みです。

ed25519 SSH鍵ペアの生成(実測)
ed25519 SSH鍵ペアの生成(実測)



local: ~
$ ssh-keygen -t ed25519 -C “ubuntu@your-vps”
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
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
SHA256:9dZuZPVGUVrDHijR2hjYCnhN/KHyA/MmGXrf3oFRDNI ubuntu@your-vps
$ ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024

フィンガープリントは鍵ごとに異なります。上記は実際に生成した際の SHA256 値で、同じコマンドを実行しても必ず違う値になります。

手順3:公開鍵をサーバーに転送する




local: ~
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@your-server-ip
ubuntu@your-server-ip’s password: (サーバーのパスワードを入力)
Number of key(s) added: 1

ssh-copy-id が使えない場合は、cat ~/.ssh/id_ed25519.pub の出力をサーバーの ~/.ssh/authorized_keys にコピーします。

手順4:sshd_config を変更してパスワード認証を無効化する

実際に Ubuntu 24.04 の openssh-server 9.6p1 をインストールして /etc/ssh/sshd_config を確認すると、デフォルトは 131行でほとんどがコメントアウトされた状態でした。

sshd_config のデフォルト値と推奨設定(実測)
sshd_config のデフォルト値と推奨設定(実測)



ubuntu@your-vps: ~
$ grep -E ‘^#?(Port|PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|MaxAuthTries|X11Forwarding)’ /etc/ssh/sshd_config
#Port 22
#PermitRootLogin prohibit-password
#MaxAuthTries 6
#PubkeyAuthentication yes
#PasswordAuthentication yes
X11Forwarding yes
$ sudo nano /etc/ssh/sshd_config
(以下の行を変更・追加する)
Port 2222
PermitRootLogin no
MaxAuthTries 3
PubkeyAuthentication yes
PasswordAuthentication no
X11Forwarding no
$ sudo systemctl restart ssh
(成功時は何も表示されない)

⚠️ 重要な順番

必ず SSH 鍵認証で接続できることを確認してから PasswordAuthentication no にしてください。確認前に設定すると締め出されます。ポートを変更した場合は UFW のルール追加も忘れずに。

実測した sshd_config の特記事項:デフォルトで #Port 22(コメント)でも 22番ポートで動作します。また、X11Forwarding yes はデフォルトで有効になっており、サーバー用途では不要なので no に変更することを推奨します。

STEP 3:UFW ファイアウォールを設定する

UFW(Uncomplicated Firewall)は Ubuntu 標準のファイアウォール管理ツールです。Ubuntu 24.04 では ufw 0.36.2-6 が利用できます(2026-06-14 実測)。

UFW ファイアウォール設定と確認コマンド(実測)
UFW ファイアウォール設定と確認コマンド(実測)

手順5:UFW をインストールして基本ルールを設定する




ubuntu@your-vps: ~
$ sudo apt update && sudo apt install -y ufw
Setting up ufw (0.36.2-6) …
$ sudo ufw default deny incoming
Default incoming policy changed to ‘deny’
$ sudo ufw default allow outgoing
Default outgoing policy changed to ‘allow’
$ sudo ufw allow 2222/tcp comment ‘SSH’
Rules updated
$ sudo ufw allow 80/tcp comment ‘HTTP’
Rules updated
$ sudo ufw allow 443/tcp comment ‘HTTPS’
Rules updated
$ sudo ufw –force enable
Firewall is active and enabled on system startup
$ sudo ufw status verbose
Status: active
2222/tcp ALLOW IN Anywhere # SSH
80/tcp ALLOW IN Anywhere # HTTP
443/tcp ALLOW IN Anywhere # HTTPS

実測した UFW の実態:/etc/default/ufwDEFAULT_INPUT_POLICY はデフォルトで DROPDEFAULT_OUTPUT_POLICYACCEPT に設定されています。ufw enable する前に SSH ポートを開けておくことが絶対条件です。

注意:SSH ポートを変えた場合

SSH ポートを 2222 などに変更した場合は ufw allow 2222/tcp と設定してください。デフォルトの 22 番を使い続ける場合は ufw allow 22/tcp になります。

STEP 4:fail2ban でブルートフォース対策をする

fail2ban は認証失敗を監視して IP を自動 BAN するツールです。Ubuntu 24.04 では fail2ban 1.0.2-3ubuntu0.1 が利用できます。

Ubuntu 24.04 の fail2ban は nftables を使う

Ubuntu 22.04 以前は iptables でブロックしていましたが、Ubuntu 24.04 の fail2ban はデフォルトで nftables を ban action として使います。VPS プロバイダによっては nftables が使えない場合があるため、動作確認が必要です。

手順6:fail2ban をインストールして SSH 保護を有効にする




ubuntu@your-vps: ~
$ sudo apt install -y fail2ban
Setting up fail2ban (1.0.2-3ubuntu0.1) …
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
$ sudo nano /etc/fail2ban/jail.local
([sshd] セクションに以下を追記)
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
$ sudo systemctl enable –now fail2ban
Created symlink … → /usr/lib/systemd/system/fail2ban.service
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter: Currently failed: 0 / Total failed: 0
`- Actions: Currently banned: 0 / Total banned: 0

実際のインストールログで確認した fail2ban.service の設定:Restart=on-failure で障害時に自動再起動、WantedBy=multi-user.target で起動時に自動開始されます。

STEP 5:自動セキュリティ更新を有効にする

VPS は常時稼働するため、セキュリティパッチを手動で当て続けるのは大変です。unattended-upgrades 2.9.1+nmu4ubuntu1(Ubuntu 24.04 実測値)を使うと、セキュリティアップデートのみを自動適用できます。

手順7:unattended-upgrades をインストールして有効化する




ubuntu@your-vps: ~
$ sudo apt install -y unattended-upgrades
Setting up unattended-upgrades (2.9.1+nmu4ubuntu1) …
Created symlink … → /usr/lib/systemd/system/unattended-upgrades.service
$ sudo dpkg-reconfigure –priority=low unattended-upgrades
(対話UIで「Yes」を選択)
$ cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Unattended-Upgrade “1”;

実測では 20auto-upgrades"1" が設定されており、毎日自動でパッケージリストを更新してセキュリティアップデートを適用します。また、systemd タイマー(apt-daily.timer / apt-daily-upgrade.timer)が自動更新をスケジュール管理します。

デフォルトの 50unattended-upgrades では、Ubuntu の Security リポジトリ(${distro_id}:${distro_codename}-security)と ESM(Extended Security Maintenance)が自動更新の対象になっています。

初期設定チェックリスト

設定完了後は、以下のチェックリストで確認してください。

VPSセキュリティ初期設定チェックリスト
VPSセキュリティ初期設定チェックリスト
カテゴリ 確認コマンド 期待される出力
UFW sudo ufw status Status: active
fail2ban sudo systemctl status fail2ban Active: active (running)
SSH 鍵認証 sudo grep -i passwordauth /etc/ssh/sshd_config PasswordAuthentication no
root ログイン禁止 sudo grep -i permitrootlogin /etc/ssh/sshd_config PermitRootLogin no
自動更新 cat /etc/apt/apt.conf.d/20auto-upgrades Unattended-Upgrade "1"

よくあるエラーと解決策

①UFW enable 後に SSH 接続できなくなった

SSH ポートを UFW で開ける前に ufw enable してしまうと締め出されます。VPS コンソール(Vultr・DigitalOcean のWeb管理画面)から直接ログインして ufw allow <ポート>/tcp を追加してください。

②fail2ban が起動しない(nftables エラー)

Ubuntu 24.04 の fail2ban はデフォルトで nftables を使います。VPS によっては nft コマンドが利用できない場合があります。その際は /etc/fail2ban/jail.localbanaction = iptables-multiport を追加してください。

③ssh-copy-id が使えない(Windows)

Windows の PowerShell では ssh-copy-id が使えません。代わりに以下のコマンドで公開鍵をサーバーに追加できます。




PowerShell(Windows)
PS> type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ubuntu@your-server-ip “mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys”

まとめ

Ubuntu 24.04 LTS のVPS初期設定で実施すべきセキュリティ設定は5つです。

  • 非rootユーザーの作成と sudo 権限付与(adduser + usermod -aG sudo
  • ed25519 SSH 鍵認証の設定とパスワード認証の無効化(PasswordAuthentication no
  • UFW ファイアウォールの設定(ufw 0.36.2-6、SSH/HTTP/HTTPS のみ許可)
  • fail2ban によるブルートフォース対策(1.0.2-3ubuntu0.1、nftables ベース)
  • unattended-upgrades による自動セキュリティ更新(2.9.1+nmu4ubuntu1

正直、これらを全部やるのは最初は手間に感じますが、一度設定しておくと以後の運用コストが大幅に下がります。特に SSH 鍵認証への移行は最優先で行ってください。

VPS の選び方が分からない場合は、 の「VPS比較ガイド」も参考にしてください。国内での遅延が小さいプロバイダや、初心者向けのサポートが充実したサービスをまとめています。

コメント

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