Linux VPS 初期設定の流れ
公開: 2026-05-17 · 更新: 2026-05-25 · ServerCost 編集部
Linux VPS を契約した直後の状態は「世界中からポート 22 に攻撃が来る無防備な箱」です。 以下の手順で、最低限のセキュリティと運用基盤を整えます。Ubuntu 24.04 LTS を想定していますが、 Debian / AlmaLinux / Rocky Linux でも「鍵認証」「更新」「ファイアウォール」「監視」「バックアップ」という順序は同じです。
作業前に確認すること
- VPS 管理画面でコンソール接続またはレスキューモードを使えるか
- SSH 公開鍵を管理画面に登録済みか
- 作業中に SSH を切っても復旧できる別ターミナルを用意したか
- 本番データがある場合、作業前にスナップショットを取ったか
SSH 設定やファイアウォールを間違えると、自分自身を締め出すことがあります。 設定変更後は既存セッションを残したまま、別ターミナルで新規ログインできることを確認してから次へ進みます。
Step 1: SSH 鍵を作って root でログイン
ローカルマシンで鍵を作成(既存があれば省略):
ssh-keygen -t ed25519 -C "your@email.com" -f ~/.ssh/servercost_ed25519サービス事業者の管理画面で公開鍵を登録し、初回 SSH ログインします:
ssh -i ~/.ssh/servercost_ed25519 root@your-server-ipStep 2: OS パッケージを全更新
初回ログイン後は、公開前に OS パッケージを更新します。
apt update && apt -y upgrade
apt -y autoremoveカーネル更新が入った場合は再起動が必要です。再起動後にもう一度 SSH 接続できることを確認します。
reboot
ssh -i ~/.ssh/servercost_ed25519 root@your-server-ipStep 3: 一般ユーザーを作成して sudo 権限付与
adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh && chmod 600 /home/deploy/.ssh/authorized_keys別ターミナルで ssh deploy@your-server-ip が通ること、sudo whoami が root を返すことを確認してから先に進みます。
Step 4: SSH 設定を硬化
/etc/ssh/sshd_config を編集:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 22SSH ポート変更は攻撃ログを減らす効果はありますが、セキュリティの本体ではありません。 まず鍵認証とパスワード認証無効化を確実に行い、必要ならファイアウォール側の許可ポートも同時に変更します。
sshd -t
systemctl reload ssh既存の SSH セッションを残したまま、別ターミナルで ssh deploy@your-server-ip が通ることを確認します。
Step 5: ufw でファイアウォール
Ubuntu では ufw が標準的な簡易フロントエンドです。Ubuntu 公式ドキュメントでも、ufw allow 22 のように必要なポートだけを開ける方法が案内されています。
apt -y install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH(ポート変更したらその番号)
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable適用後に状態を確認します:
ufw status verbose管理画面側にクラウドファイアウォールがあるサービスでは、OS 内の ufw と二重で制御できます。 どちらか片方だけに頼るより、外側で不要ポートを閉じ、内側でも最小許可にする方が安全です。
Step 6: 自動セキュリティ更新
apt -y install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades自動更新は脆弱性修正の取りこぼしを減らします。ただし、カーネル更新やミドルウェア更新で再起動が必要になることがあります。 本番では「自動更新 + 週 1 回の手動確認」をセットにします。
Step 7: 時刻同期 + ホスト名 + タイムゾーン
timedatectl set-timezone Asia/Tokyo
hostnamectl set-hostname web-01
apt -y install chronyStep 8: fail2ban / CrowdSec を入れる
パスワード認証を無効化していても、SSH には継続的にログイン試行が来ます。 ログのノイズを減らし、繰り返しの試行を遮断する目的で fail2ban または CrowdSec を検討します。
apt -y install fail2ban
systemctl enable --now fail2ban
fail2ban-client status sshdStep 9: バックアップと復元確認
VPS の初期設定は、セキュリティだけでなく復元できることまで含めて完了です。 サービス事業者の自動バックアップ、スナップショット、または外部ストレージへの rsync / restic などを使い、 DB とアップロードファイルをサーバー外に逃がします。
- OS 変更前はスナップショットを取る
- 本番 DB は日次で別ストレージへ退避する
- アップロードファイルはオブジェクトストレージも検討する
- バックアップは取るだけでなく、復元手順を 1 回試す
よくある失敗と対処
- SSH に入れなくなった: 管理画面のコンソールから
ufw disableまたはsshd_configを戻す。 - Web が表示されない:
ufw status、クラウドファイアウォール、nginx / Caddy の listen ポートを確認する。 - 更新後にアプリが落ちた: systemd ログ、アプリログ、DB 起動状態を確認し、直前のスナップショットへ戻す判断をする。
- ディスクが満杯: ログ、Docker イメージ、DB バックアップの保存先を確認する。
次のステップ
- nginx / Caddy で HTTPS(Let's Encrypt 自動更新)
- Docker / Docker Compose インストール
- サービス事業者のバックアップ機能を有効化
- 監視サービスで HTTP 死活監視とディスク使用量を確認
- 本番デプロイ手順を README に残す
参考にした公式情報
関連: 主要 Provider の料金プラン一覧
執筆: ServerCost 編集部 / 監修: 庄司 育雄
公式ページで確認できる情報だけを根拠にし、確認できない数値は推測で補完しません。
よくある質問
Q.Linux VPS 契約直後に最初にやるべきことは何ですか?
まず SSH 鍵でログインできること、管理画面のコンソールで復旧できることを確認します。その後、OS パッケージ更新、一般ユーザー作成、sudo 権限付与、パスワード認証無効化、ファイアウォール設定の順で進めます。
Q.SSH ポートを変更すれば安全になりますか?
攻撃ログを減らす効果はありますが、安全性の本体ではありません。優先すべきは鍵認証、パスワード認証無効化、root ログイン禁止、必要ポートだけを許可するファイアウォールです。ポート変更は復旧手段を確認してから行います。
Q.ファイアウォール設定で締め出されたらどうしますか?
VPS 管理画面のコンソールまたはレスキューモードから復旧します。作業前にコンソール接続の場所を確認し、既存 SSH セッションを残したまま別ターミナルで新規接続を試すと、誤設定に気づいて戻しやすくなります。
Q.初期設定後にすぐ本番公開してよいですか?
HTTPS、バックアップ、復元確認、監視、ログ容量の確認まで済ませてから公開する方が安全です。特に DB やアップロードファイルを扱う場合、バックアップを取るだけでなく別環境で復元できるかを一度試しておくべきです。