XServerVPS 初期設定の方法を紹介
はじめに
XServer VPSを契約してUbuntu Serverをインストールした直後に行っておきたい初期設定をまとめます。
実際に契約して行った初期設定で、この通りにやれば誰でもできるように説明していきます。
この記事では、XServer VPSのシリアルコンソールから設定を開始し、最終的にWindowsのPowerShellからSSH鍵認証で接続できる状態まで順番に設定します。
サーバーの基本設定を行う
シリアルコンソールに接続する
最初にXServer VPSのシリアルコンソールへ接続します。
シリアルコンソールは、SSHを使用せずにXServer VPSの管理画面から直接サーバーを操作するための機能です。契約直後はまだSSHの設定が終わっていないため、最初の設定はここから行います。
- XServer VPSのVPSパネルを開く
- 対象のVPSを選択する
- 「コンソール」を開く
- 「シリアルコンソール」を選択する
コンソールが表示されたら、rootユーザーでログインします。
現在のユーザーを確認します。
whoami
rootと表示されればrootユーザーでログインしています。
rootはLinuxで最も強い権限を持つ管理者ユーザーです。初期設定ではrootを使用しますが、普段の作業をrootで行うのは危険なため、あとで作業用ユーザーを作成します。
シリアルコンソールやSSH接続後のターミナルでは、Ctrl + Vで貼り付けできない場合があります。この記事のコマンドをコピーしたあと、ターミナル上で右クリックすると貼り付けできます。
OSを更新する
Ubuntuを最新の状態へ更新します。
OSをインストールした直後でも、インストールイメージ作成後に公開されたセキュリティ修正や不具合修正が存在することがあります。そのため、サーバーを使い始める前に更新しておきます。
パッケージ情報を更新します。
apt update
インストールされているパッケージを更新します。
apt upgrade -y
不要になったパッケージを削除します。
apt autoremove -y
カーネルなどが更新されている場合もあるため、一度再起動します。
reboot
再起動するとシリアルコンソールの接続が切れるため、サーバーが起動したら再度接続します。
日本時間に変更する
サーバーのタイムゾーンを日本時間へ変更します。
サーバーの時刻は、ログの記録時刻やCronの実行時刻、プログラム内の時刻処理などで使われます。日本で管理するサーバーであれば、最初に日本時間へ合わせておくと管理しやすくなります。
timedatectl set-timezone Asia/Tokyo
設定を確認します。
timedatectl
Time zoneの項目が「Asia/Tokyo (JST, +0900)」となっていれば設定完了です。
作業用ユーザーとSSH鍵を設定する
作業用ユーザーを作成する
普段のサーバー管理に使用する作業用ユーザーを作成します。
rootユーザーはサーバー上のほぼすべてを操作できるため、コマンドを間違えた場合でも重要なファイルを削除したり、サーバーを動作しない状態にしたりできます。
普段は一般ユーザーでログインし、管理者権限が必要なときだけsudoを使用することで、誤操作による影響を減らします。
この記事ではserveradminというユーザーを作成します。
adduser serveradmin
パスワードの入力を求められるため、serveradmin用のパスワードを設定します。
Full Nameなどは必要がなければEnterキーで進めて構いません。
sudoを使用できるようにする
作成した一般ユーザーは、そのままでは管理者権限が必要な操作を実行できません。
serveradminをsudoグループへ追加し、必要なときだけ管理者権限を使えるようにします。
usermod -aG sudo serveradmin
所属グループを確認します。
groups serveradmin
表示内容にsudoが含まれていれば設定できています。
SSH鍵を作業用ユーザーへコピーする
作成したserveradminでもSSH鍵を使ってログインできるようにします。
SSH鍵認証では、サーバー側に公開鍵を保存し、それに対応する秘密鍵を持っているパソコンだけがログインできます。パスワードだけでログインする方法より、総当たりによる不正ログインを受けにくくできます。
XServer VPSのOSインストール時にSSH Keyを設定している場合、rootユーザーのauthorized_keysに公開鍵が登録されています。
SSH用ディレクトリを作成します。
mkdir -p /home/serveradmin/.ssh
rootの公開鍵をコピーします。
cp /root/.ssh/authorized_keys /home/serveradmin/.ssh/authorized_keys
所有者を変更します。
chown -R serveradmin:serveradmin /home/serveradmin/.ssh
SSH用ディレクトリと公開鍵ファイルの権限を設定します。
chmod 700 /home/serveradmin/.ssh
chmod 600 /home/serveradmin/.ssh/authorized_keys
SSHではファイルの権限が適切でない場合、安全ではない設定として鍵認証が拒否されることがあるため、この権限設定も必要です。
SSHで接続できることを確認する
XServer VPSでSSHを許可する
外部のパソコンからVPSへSSH接続できるように、XServer VPSのパケットフィルターを設定します。
パケットフィルターは、VPSへ入ってくる通信をポート番号などによって許可または遮断する機能です。必要な通信だけを許可することで、外部から不要なサービスへ接続されるのを防ぎます。
この時点ではSSHの標準ポートであるTCP 22番ポートを許可します。
- XServer VPSのVPSパネルを開く
- 「パケットフィルター設定」を開く
- パケットフィルターをONにする
- SSHで使用するTCP 22番ポートを許可する
PowerShellからSSH接続する
作業用ユーザーとSSH鍵の準備ができたため、Windowsから実際にSSH接続できることを確認します。
rootログインやパスワード認証を禁止する前に、必ずこの段階で作業用ユーザーによるSSH鍵認証が成功することを確認します。
WindowsでPowerShellを開き、秘密鍵を指定して接続します。
ssh -i "秘密鍵ファイルのパス" serveradmin@VPSのIPアドレス
例えば、秘密鍵がC:\Users\user\.ssh\xserver.keyにあり、VPSのIPアドレスが192.0.2.10の場合は次のようになります。
ssh -i "C:\Users\user\.ssh\xserver.key" serveradmin@192.0.2.10
接続できたら現在のユーザーを確認します。
whoami
serveradminと表示されれば成功です。
sudoが使用できることを確認する
管理者権限が必要な操作も実行できることを確認します。
sudo whoami
作業用ユーザーを作成したときに設定したパスワードを入力します。
rootと表示されれば問題ありません。
ここでSSH鍵を使ったserveradminへのログインと、sudoの両方が使用できることを必ず確認してください。確認できてからSSHの制限を強くします。
SSHのセキュリティを強化する
SSH設定ファイルをバックアップする
SSHの設定を変更する前に、現在の設定ファイルをバックアップします。
SSHはサーバーを遠隔操作するための重要な機能です。設定を間違えた場合でも元へ戻せるように、変更前の状態を残しておきます。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
バックアップを誤って変更しないように書き込み権限を外します。
sudo chmod a-w /etc/ssh/sshd_config.original
SSH設定ファイルを作成する
Ubuntuでは/etc/ssh/sshd_config.d/に追加のSSH設定ファイルを作成できます。
元の設定ファイルを直接大きく変更せず、自分で変更した内容だけを別ファイルで管理できるため、設定内容が分かりやすくなります。
次のコマンドで設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config.d/00-custom.conf
開いたファイルに次の3行を入力します。
Port 22222
PermitRootLogin no
PasswordAuthentication no
入力できたらCtrl + Xを押します。
保存するか確認されたらYを押し、Enterキーで保存します。
rootのSSHログインを禁止する
設定した「PermitRootLogin no」によって、rootユーザーでSSHへ直接ログインできないようにします。
rootはサーバー上のほぼすべてを操作できる特別なユーザーです。また、ユーザー名が最初からrootと分かっているため、不正ログインの対象にもなりやすくなります。
SSHからrootへ直接ログインできないようにし、まずserveradminでログインして、必要な操作だけsudoで実行する形にします。
SSHのパスワード認証を禁止する
設定した「PasswordAuthentication no」によって、SSHへパスワードだけでログインできないようにします。
パスワード認証を有効にしていると、ユーザー名とパスワードの組み合わせを大量に試す総当たり攻撃の対象になります。
SSH鍵認証だけにすることで、対応する秘密鍵を持っていない端末からはログインできない状態にします。
ここで無効になるのはSSHログイン時のパスワード認証です。sudoを使用するときのパスワードは引き続き使用できます。
SSHのポート番号を変更する
設定した「Port 22222」によって、SSHで使用するポート番号を標準の22番から22222番へ変更します。
SSHでは通常22番ポートが使用されるため、22番ポートを自動的に探してログインを試すアクセスが多くあります。
別のポート番号へ変更すると、22番ポートだけを狙った機械的なスキャンやログイン試行を減らせます。
ただし、ポート番号を変更するだけで認証そのものが強くなるわけではありません。SSH鍵認証やrootログイン禁止と組み合わせて使用します。
変更したSSH設定を反映する
新しいSSHポートをパケットフィルターで許可する
SSH側の設定を反映する前に、XServer VPSのパケットフィルターで新しい22222番ポートを許可します。
SSHだけ22222番へ変更しても、XServer VPS側で通信を遮断していると外部から接続できません。そのため、必ず先に新しいポートを許可します。
この時点では22番ポートを削除しないでください。22222番ポートで正常にSSH接続できることを確認するまで、古い接続手段を残しておきます。
- XServer VPSのVPSパネルを開く
- 「パケットフィルター設定」を開く
- 新しい設定を追加する
- プロトコルをTCPにする
- ポート番号を22222にする
- 設定を保存する
SSH設定に間違いがないか確認する
SSHサービスを再起動する前に、設定ファイルに書き間違いがないか確認します。
設定に誤りがある状態でSSHサービスを再起動すると、SSHが正常に起動しなくなる可能性があります。
sudo sshd -t
何も表示されなければ、SSH設定の構文に問題はありません。
エラーが表示された場合は再起動せず、設定ファイルを修正します。
SSH設定を反映する
設定に問題がないことを確認したら、SSHサービスを再起動します。
sudo systemctl restart ssh.service
現在接続しているPowerShellはまだ閉じないでください。
今の接続を残しておけば、新しい設定で接続できなかった場合でも、その接続から設定を修正できます。
新しいSSHポートで接続する
現在使用しているPowerShellとは別に、もう1つPowerShellを開きます。
新しい22222番ポートを指定して接続します。
ssh -p 22222 -i "秘密鍵ファイルのパス" serveradmin@VPSのIPアドレス
例えば次のようになります。
ssh -p 22222 -i "C:\Users\user\.ssh\xserver.key" serveradmin@192.0.2.10
正常に接続できたら現在のユーザーを確認します。
whoami
serveradminと表示されれば成功です。
SSHの設定を確認して仕上げる
SSHの最終設定を確認する
SSHサーバーが実際に使用している設定を確認します。
設定ファイルに書いた内容だけではなく、SSHが最終的にどの設定を認識しているか確認することで、意図した状態になっているか確実に確認できます。
sudo sshd -T | grep -E '^(port|permitrootlogin|passwordauthentication) '
実行結果が次の内容になっていることを確認します。
port 22222 permitrootlogin no passwordauthentication noport 22222はSSHが22222番ポートを使用していることを表します。
permitrootlogin noはrootユーザーによるSSHログインが禁止されていることを表します。
passwordauthentication noはSSHのパスワード認証が禁止されていることを表します。
rootでSSHログインできないことを確認する
rootログイン禁止が実際に機能していることも確認します。
PowerShellから次のコマンドを実行します。
ssh -p 22222 -i "秘密鍵ファイルのパス" root@VPSのIPアドレス
ログインが拒否されれば正常です。
22番ポートを閉じる
22222番ポートから正常にSSH接続できることを確認できたら、XServer VPSのパケットフィルターから22番ポートの許可を削除します。
使用していないポートを開けたままにせず、外部からアクセスできる入口を必要最小限にするためです。
- XServer VPSのVPSパネルを開く
- 「パケットフィルター設定」を開く
- TCP 22222番ポートが許可されていることを確認する
- TCP 22番ポートの許可設定を削除する
最後に再起動する
最後にサーバーを再起動し、再起動後も設定が正常に動作することを確認します。
再起動後にも正常にSSHサービスが起動し、同じ設定で接続できることを確認しておけば、今後の再起動時にも問題が起きにくくなります。
sudo reboot
サーバーが起動したら、PowerShellから再度接続します。
ssh -p 22222 -i "秘密鍵ファイルのパス" serveradmin@VPSのIPアドレス
正常に接続できれば初期設定完了です。
初期設定完了後の状態
ここまで設定すると、VPSは次の状態になります。
| 項目 | 設定後 |
|---|---|
| OS | 最新パッケージへ更新済み |
| タイムゾーン | Asia/Tokyo |
| 通常のログインユーザー | serveradmin |
| 管理者権限 | 必要なときだけsudoを使用 |
| SSH認証 | SSH鍵認証 |
| rootのSSHログイン | 禁止 |
| SSHパスワード認証 | 禁止 |
| SSHポート | 22222 |
| XServer VPSパケットフィルター | SSH用としてTCP 22222番ポートを許可 |
普段のSSH接続方法
初期設定完了後は、rootではなくserveradminでSSH接続します。
ssh -p 22222 -i "秘密鍵ファイルのパス" serveradmin@VPSのIPアドレス
通常の操作はserveradminで行い、管理者権限が必要なコマンドだけsudoを付けます。
例えば、パッケージ情報を更新するときは次のように実行します。
sudo apt update
一時的にrootとして連続して作業する必要がある場合は、SSHでrootへ直接ログインするのではなく、ログイン後に次のコマンドを使用します。
sudo -i
rootでの作業を終了するときは次のコマンドで戻ります。
exit
まとめ
XServer VPSを契約してUbuntuをインストールした直後は、そのまま利用を始めるのではなく、OSの更新、作業用ユーザーの作成、SSH鍵認証、SSHのセキュリティ設定などを最初に行っておくことが重要です。
普段はrootではなく作業用ユーザーを使用し、必要な場合だけsudoで管理者権限を使うことで、誤操作やrootアカウントへの直接攻撃によるリスクを減らせます。
また、SSHのパスワード認証を禁止してSSH鍵認証だけにすることで、パスワードの総当たりによる不正ログインを防ぎやすくなります。
SSH設定を変更するときは、古い接続方法を先に無効にせず、新しい設定で正常にログインできることを確認してから古いポートを閉じることが重要です。
ここまで設定できれば、XServer VPSを使い始めるための基本的な初期設定は完了です。