VPSの初期設定ガイド!安全なサーバー構築の10分間手順
新規VPSは公開直後から攻撃の標的になります。rootログインの禁止、SSH keyの設定、sudo権限を持つ一般ユーザーの作成、firewallの有効化など、セキュリティを確保するために必ず行うべき必須のコマンドと手順を、最短10分で完了するロードマップ形式で解説します。
最初の10分間でサーバーの安全性が決まります
新規のVPSは安全ではありません。パブリックIPが付与された瞬間から、スキャナーによるログイン試行が始まります。デフォルトのイメージは、rootへのアクセスが可能であったり、パスワード認証が許可されていたりと、攻撃の標的になりやすい状態です。また、ファイアウォールも設定されておらず、定期的なパッチ適用も行われていません。幸いなことに、これらをすべて修正するには、わずか10分と数個のコマンドで済みます。これは、私が新しいサーバーをセットアップする際に必ず実行する手順書です。
各ステップは次のステップのために必要であるため、順番に進めてください。各ステップには詳細なガイドへのリンクがあります。このページは、それらをまとめた最短ルートです。
1分目: すべてをアップデートする
プロバイダーから提供された認証情報を使用してrootでログインし、他の作業を行う前にシステムを最新の状態にします。
apt update && apt upgrade -yパッチが当たっていないサーバーは最も容易な攻撃対象となるため、これが最初のステップです。完了したら、手動で操作しなくてもパッチが適用され続けるよう、自動セキュリティアップデートを設定してください。
2分目: sudo権限を持つ一般ユーザーを作成する
rootでの作業を継続しないでください。自分用のユーザーを作成し、sudo権限を付与します。
adduser matt
usermod -aG sudo matt以降は、このユーザーでログインし、管理者タスクには sudo を使用してください。常にrootとして実行していると、あらゆるミスや侵害が全権限を持った状態で行われます。これを防ぐために 非特権ユーザーでの実行 が存在します。
4分目: SSHキーを設定する
パスワードは推測されますが、キーは推測されません。自身のPCで、まだキーを持っていない場合は作成してください。
ssh-keygen -t ed25519次に、公開鍵をサーバーにコピーします。
ssh-copy-id matt@YOUR_SERVER新しいユーザーでパスワードログインを許可するには、ssh-copy-id が有効である必要があります。すでに無効になっている場合は、rootの ~/.ssh/authorized_keys を /home/matt/.ssh/authorized_keys (所有者は matt) にコピーするか、公開鍵を手動でそのファイルに貼り付けてください。
「デバイスごとに1つのキー」「キーログインを失敗させる権限設定」「紛失したキーの無効化」といった概念については、SSHキー管理の基本 で解説しています。
一度ログアウトし、キーを使用して matt で再度ログインし、次のステップに進む前に動作を確認してください。キーでのログインができる前にSSHをロックダウンすると、自分自身を締め出すことになります。
6分目: rootログインとパスワード認証を無効にする
キーでのログインが確認できたら、スキャナーが利用する2つの経路を閉じます。パッケージのアップグレード時に設定が上書きされないよう、ドロップインファイルを使用してください。Ubuntuのクラウドイメージには PasswordAuthentication yes が含まれる 50-cloud-init.conf よりも先にソートされるよう、ファイル名を 00- としてください。sshdは最初に読み込んだ値を保持するため、後からソートされるファイルは無視されます。
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no次に、SSHをリロードします。
sudo systemctl restart ssh次に、sshdが実際に使用している設定を確認します。これにより、設定の不備によるミスを防げます。
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'パスワード認証とrootログインを無効にすれば、サーバーへの執拗なブルートフォース攻撃は成功しなくなります。ポート番号の変更を含む詳細な手順は、VPSにおけるSSHの要塞化 にあります。
8分目: ファイアウォールを有効にする
まず、すべてのインバウンド通信をデフォルトで拒否(deny)するように設定し、必要な通信のみを許可します。ファイアウォールを有効にする前に、必ずSSHを許可してください。そうしないと、接続が遮断されます。
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableWebサイト用の 80/tcp や 443/tcp など、実際に運用するサービスに対して allow ルールを追加してください。IPv4とIPv6の両方がカバーされていることを確認してください。IPv4のみをフィルタリングするファイアウォールでは、IPv6側が完全に無防備 になります。詳細な手順は VPSにおけるファイアウォールの基本 を参照してください。
10分目: Fail2banでスキャナーを遅延させる
最後に、ポートを攻撃してくるIPアドレスを排除するために Fail2ban を導入します。
sudo apt install -y fail2banUbuntu 24.04の標準インストールでは、初回起動時からSSHが保護されています。すでにキー認証を必須としている場合、Fail2banはメインの防御策ではなく、ログのノイズを減らし、繰り返しの攻撃者をブロックするためのバックアップとして機能します。
チェックリスト
これが手順書です。以下のジェネレーターを使用して、各制御項目にチェックを入れ、各ステップの正確なコマンドを含む、サーバーと一緒に保管できるパーソナライズされたチェックリストを作成してください。
新しいサーバーごとにこれを実行すれば、作業が習慣化されます。今10分をかけることで、サーバーが乗っ取られた後に発生する最悪な事態を回避できます。
基本設定が完了したら、Ubuntuでの自動セキュリティアップデート によって、再ログインすることなくサーバーを最新の状態に保てます。
FAQ
新しいVPSで最初にすべきことは何ですか?
apt update && apt upgrade -y でシステムをアップデートし、sudo権限を持つ一般ユーザーを作成して、rootでの作業を止めてください。その後、SSHキーの設定、rootログインとパスワード認証の無効化、デフォルト拒否のファイアウォールの有効化、Fail2banのインストールを行ってください。この順序で行うことで、自分自身を締め出すことなく安全に設定を進められます。
SSHの要塞化中に自分自身を締め出さないようにするにはどうすればよいですか?
パスワードやrootを無効にする前に、SSHキーによるログインを設定し、テストしてください。キーでログインできることを確認してから、PasswordAuthentication と PermitRootLogin を無効にします。ファイアウォールを有効にする際は、ufw enable を実行する前にポート22を許可してください。もし締め出されてしまった場合は、プロバイダーのウェブコンソールを使用すれば、SSHなしでアクセス可能です。
小規模なサーバーにこれらすべてが必要ですか?
はい。スキャナーはサーバーの規模を気にしません。あらゆるパブリックIPに対して同じように試行を行います。この手順書はわずか10分で完了し、rootログイン、パスワード推測、意図しない公開サービス、未修正のバグといった、容易な攻撃経路を排除します。
最も重要なステップは何ですか?
rootログインを無効にした「キーのみのSSH」です。新規VPSへの攻撃の多くはrootに対する自動化されたパスワード推測であり、この両方を無効にすれば、そのカテゴリの攻撃は不可能になります。ファイアウォールとFail2banは、残った攻撃範囲を制限し、攻撃を遅延させる役割を果たします。
サーバーが実際に保護されていることをどうやって確認しますか?
信頼する前に、手動で3つの点を確認してください。sudo ss -tlnp を実行し、意図したポートのみがパブリックアドレスでListenしていること、および忘れている 0.0.0.0 や [::] のサービスがないことを確認してください。sudo ufw status verbose を実行し、デフォルトのインバウンドポリシーが deny であること、および通常のルールと (v6) ルールの両方が存在することを確認してください。また、設定ミスで締め出されないよう、最初のセッションを閉じる前に、必ず2つ目のSSHセッションを開いておいてください。これら3つが正しければ、基本設定は完了しています。