VPSを安全に運用いただくためには、契約後すぐのセキュリティ対策が必要です。
※便宜上、本記事では「VPS = Linux系のOSを導入したVPS」としています。
本記事では、VPSの契約直後のセキュリティ対策を解説します。
- セキュリティ対策の重要性
- 契約直後に押さえるべきセキュリティ対策
- SSH接続によるVPSの基本操作
- クライアントOS
Windows
- サーバーOS
Linux
- ディストリビューション
Ubuntu22.04 LTS
- SSHクライアント
Tera Term
本記事の内容を実践することで、VPSのセキュリティを強化でき、より安全に運用を開始できます。
本記事で解説するのは、サーバーの用途や構成に関わらず、VPSの契約後に共通して必要になる最低限のセキュリティ対策です。
AIツールやビジネスツールを運用するなど、VPSの用途によっては追加のセキュリティ対策をご検討ください。
本記事では、「Linux」ベースのディストリビューション「Ubuntu」を前提に手順を解説します。
他のOSやディストリビューションをご利用の場合は、必要に応じて読み替えてください。
契約直後のセキュリティ対策が重要な理由
VPSは、サーバーへの入り口(ポート)を開放した瞬間から、さまざまな攻撃の対象になります。
基本的に契約直後のVPSは、カスタマイズしやすいよう多くの設定がデフォルトのままで、安全にサービスを公開する準備が整っていません。
そのため、VPSの運用を安全に開始するには、契約直後からセキュリティ対策に取り組む必要があります。
初期設定のまま運用を開始すると、不正アクセスなどの重大なトラブルに繋がることも。
以下は、VPSにおけるセキュリティ被害の一例です。
- 個人情報、顧客情報、製品情報など、機密性の高いデータが漏洩する
- 暗号資産のマイニングに悪用される(CPUなどのリソースを不正利用される)
- 他システムに攻撃するための踏み台として悪用される(「DDos攻撃」「ブルートフォース攻撃」など)
機密性の高いデータが漏洩したり、攻撃の踏み台として悪用されたりすると、社会的な信用を失うだけでなく、最悪の場合は法的な責任を問われるおそれがあります。
セキュリティ被害が生じるリスクは、VPSの運用規模に関わりません。
小規模だからと他人事にはせず、最悪のケースを見越して契約直後からセキュリティ対策を徹底しましょう。
契約直後に押さえるべき基本の初期セキュリティ対策
以下は、どのようなソフトウェアを運用する場合でも、VPSの契約直後に共通して押さえるべき基本的な初期セキュリティ対策です。
なお、本記事では『Tera Term』という無料のツールを使用し、SSH接続でVPSのセキュリティ対策を実施します。
すでにお手元のPCにSSHクライアントが入っている方は、「【事前準備】SSHクライアントを導入する」のセクションは飛ばし、OSやソフトウェアを最新版にアップデートするからご覧ください。
より厳密にセキュリティ対策を実施する場合は、『XServer VPS』の「コンソール」上で「安全(セキュア)なリモート管理の環境を整える」まで実施したあと、最後にパケットフィルター設定でSSHポートを開放するのがおすすめです。
ただ、本記事ではSSHクライアントで作業する方が多いことを想定して、SSH接続を前提に手順を案内します。
【事前準備】SSHクライアントを導入する
以下は『Tera Term』を導入し、SSH接続の環境を整える手順です。
ネットワーク上の通信を暗号化し、サーバーを安全に遠隔操作するための仕組み(プロトコル)のこと。
『Tera Term』のインストーラーをダブルクリックで起動しましょう。

「日本語」が選択されている状態で、OKをクリックします。

利用規約が表示されるので、「同意する」にチェックを入れて次へをクリックしてください。

そのまま次へをクリックします。

「日本語」にチェックが入っている状態で、次へをクリックしましょう。

そのまま次へをクリックしてください。

設定内容を確認して、インストールをクリックしましょう。

インストールが終わったら、完了でウィンドウを閉じて問題ありません。

契約直後の『XServer VPS』は、外部からの不正アクセスを防ぐ目的で、すべての接続を拒否する設定になっています。
デフォルトのままではSSHで『XServer VPS』に接続できないため、「パケットフィルター設定」を変更しましょう。
「ポート」と呼ばれるサーバーへの入口を開閉することで、通信を制御するセキュリティ設定のこと。
まずはログインページにアクセスして、契約時に設定したメールアドレスとパスワードを入力のうえログインするをクリックしてください。

続いて、VPS管理をクリックします。

左メニューのパケットフィルター設定をクリックしましょう。

パケットフィルター設定を追加するをクリックしてください。

「SSH」を選択した状態で、下部の追加するをクリックしましょう。

VPSへのSSH接続を試す前に、「VPSパネル」の「コンソール」にてホスト鍵のフィンガープリントを表示しておきましょう。
SSH接続には、本物のサーバーのように振る舞うことで通信内容を傍受する「中間者攻撃(MITM)」のリスクがあります。
初めてSSH接続するとき、SSHクライアント上にサーバーのなりすましに関する警告画面が表示されるため、ホスト鍵のフィンガープリントに相違がないか確認できるよう準備しておいてください。
VPSパネルにアクセスしたら、画面右上のコンソールをクリックして、「シリアルコンソール」を選択します。

「root」と入力したあと、契約時に設定した「rootパスワード」を打ち込んで、コンソールにログインしてください。

rootパスワードは、入力しても画面上に表示されません。
コンソールにログイン後、以下のコマンドを実行しましょう。
ssh-keygen -l -E sha256 -f /etc/ssh/ssh_host_ed25519_key.pub

シリアルコンソールでは、「Ctrl + Shift + V」でペーストできます。
ホスト鍵のフィンガープリントが表示されるので、この画面を置いたまま次のステップへ進んでください。

次に、VPSへのSSH接続を試してみます。
SSH接続には、VPSのIPアドレスが必要です。
「VPSパネル」で画面上部のIPアドレスをコピーし、メモ帳などにペーストしておきましょう。

続いて、『Tera Term』を起動します。
「ホスト」の入力欄にVPSのIPアドレスを入力し、OKをクリックしてください。

サーバーのなりすましに関するセキュリティ警告が表示されます。
先ほど表示しておいたホスト鍵のフィンガープリントと突き合わせて、相違がなければ続行をクリックしてください。

以下のとおり、SSH認証の画面が表示されます。
「ユーザー名」には「root」と入力しましょう。
「パスフレーズ」には、『XServer VPS』の契約時に設定した「rootパスワード」を入力してください。

それぞれ入力したら、OKをクリックします。

「Welcome to Ubuntu 22.04」と表示されればSSH接続は完了です。

ちなみに、ウィンドウの×ボタンを押せばVPSから切断できます。
1. OSやソフトウェアを最新版にアップデートする
はじめに、契約時に選択したOSやソフトウェアをアップデートしましょう。
OSやソフトウェアは、時間とともに脆弱性が見つかっていくことがほとんど。
古いバージョンのまま放置すると、攻撃者にセキュリティを突破されるリスクが高まります。

VPSの契約時に選択したOSやソフトウェアが最新版とは限りません。
すでに脆弱性が発見されたバージョンの可能性もあるため、契約直後は必ずOSやソフトウェアをアップデートしてください。
OSやソフトウェアのアップデートは、定期的に行う必要があります。
今後インストールするソフトウェアと合わせ、アップデートは習慣化しましょう。
『Tera Term』を起動し、VPSにSSH接続します。
初めて『XServer VPS』にSSH接続する方は、以下のマニュアルを参考にしてください。

SSH接続できたら、アップデートのコマンドを実行しましょう。
apt update && apt upgrade -y

「CentOS」「AlmaLinux」「Rocky Linux」では、アップデートコマンドが異なります。
dnf update -y
以下のような画面が表示されるので、Enterを押してください。

続けて、Enterを押します。

アップデートを反映させるため、以下のコマンドでVPSを再起動しましょう。
reboot

以上で、OSのアップデートは完了です。
なお、ソフトウェアのアップデートは、それぞれで手順が異なります。
契約時に『Dify』などのアプリイメージを選択した場合は、以下のサポートサイトで検索のうえ手順を確認してください。
一方、アプリイメージ以外でソフトウェアを導入した場合は、公式のドキュメントを参照するのが確実です。
Googleなどで「[ソフトウェア名] アップデート」と検索し、公式が案内する手順に沿ってアップデートを実施してください。
2. 安全(セキュア)なリモート管理の環境を整える
続いて、VPSをリモートで管理するためのセキュアな環境を整備します。
VPSは、SSH接続によってリモートから管理するのが一般的です。
ただ、だからこそSSH用のポートは狙われやすく、開放すると一気に不正アクセスのセキュリティリスクが上がります。
以下は、安全なリモート管理の環境を整えるうえで、よく実施されるセキュリティ設定・対策です。
- 管理用の一般ユーザーを作成する
- 公開鍵認証を有効化する(パスワードログインを制限する)
- rootユーザーによるSSH接続を禁止する
- SSHの接続ポートをデフォルト(22番)から変更する
- 接続元の環境(IPアドレス)を限定する
- 不審な接続を検知し、遮断する(『Fail2ban』を導入する)
本記事では、サーバーの管理環境に依存しない定番のセキュリティ設定・対策として、以下4つの手順を解説します。
管理用の一般ユーザーを作成する
まずは、以降のサーバー管理に使用する一般ユーザーを作成しましょう。
通常、VPSの契約直後に使用できるのは「rootユーザー」のみです。
サーバー全体のシステムをコントロールできる管理者権限のこと。
日々の管理でrootユーザーを常用すると、うっかり重要なファイルを削除してしまうなど、大きなトラブルを引き起こしかねません。
また、悪意ある第三者にrootユーザーが奪われてしまえば、容易にサーバーが乗っ取られてしまいます。
そこで、普段は一般ユーザーで作業し、基本的にrootユーザーは使用しない運用にしておくと安心です。
とはいえ、むやみに一般ユーザーを追加すると、その分だけ攻撃の対象が増えたり、認証情報が漏洩したりなどのリスクが上がります。
一般ユーザーの追加は最小限に留め、VPSで作業する方は絞るようにしましょう。
今回は、「xserver」という名前の一般ユーザーを作成します。
※任意の名前で問題ありません。
SSHでVPSに接続したら、以下のコマンドを実行してください。
adduser xserver

「新しいパスワード:」と表示されます。
任意のパスワードを入力して、Enterを押してください。

パスワードは入力しても画面上に表示されません。
再度、パスワードを入力しましょう。

続いて、識別情報の入力が求められます。
ユーザーを複数作る予定がないなど、識別情報が不要な場合は、Enterでスキップして問題ありません。

「以上で正しいですか?[Y/n]」と表示されたら、「Y」のあとEnterを押してください。

追加した一般ユーザーでログインできるか試してみましょう。
現在はrootユーザーでログインしている状態なので、「exit」コマンドで一度ログアウトしてください。

再度『Tera Term』を起動し、先ほど作成した一般ユーザーの情報でログインできればOKです。

次に、追加した一般ユーザーに「sudo(スードゥ)」という権限を設定していきます。
必要なときだけ一時的にroot権限でコマンドを実行するための仕組みのこと。
一般ユーザーを追加しただけでは、OSのアップデートなど、セキュリティに関わる作業ができません。
ただ、一般ユーザーにsudo権限を付与すれば、必要に応じてrootユーザー限定のコマンドが実行可能に。
rootユーザーを使用せずとも、安全にVPSを管理できるようになります。
また、sudoコマンドはサーバーログに記録されるため、あとから不正やミスを確認できる点もメリットです。
sudo権限には、rootと同じくサーバー全体を自由にコントロールする力があります。
VPSを管理する一般ユーザーにだけ、sudo権限は付与するようにしましょう。
sudo権限を付与できるのはrootユーザー、もしくはsudo権限を持つユーザーのみです。
一般ユーザーでSSH接続している場合は、rootユーザーで入り直しましょう。

sudo権限は、「sudo」というグループに登録することで付与できます。
以下のコマンドを実行して、先ほど作成した一般ユーザーを「sudo」グループに登録してください。
usermod -aG sudo xserver

「CentOS」「AlmaLinux」「RockyLinux」などのOSには、「sudo」グループが用意されていません。
以下のコマンドで、「sudo」グループの代わりに「wheel」グループに登録する必要があります。
sudo usermod -aG wheel xserver
「exit」コマンドでログアウトし、一般ユーザーでSSH接続し直しましょう。
以下のコマンドを実行してください。
sudo whoami

以下のとおり、sudoコマンドを実行するには、パスワードの入力が必要です。
一般ユーザーのパスワードを入力して、Enterを押しましょう。

「root」と表示されれば、sudo権限は正常に付与されています。

なお、一般ユーザーからsudo権限をはく奪したい場合は、rootユーザーで以下のコマンドを実行してください。
gpasswd -d xserver sudo
公開鍵認証を有効化する
パスワードによるログイン認証の場合、平易な文字列を設定したり、他サービスで使い回したりなど、管理の仕方によっては不正アクセスの要因になってしまいます。
そこで、ログイン認証を強化するため、パスワードに代わり、よりセキュリティ性の高い「公開鍵認証」を有効化しましょう。
「公開鍵」と「秘密鍵」のペアを照らし合わせて認証する方式のこと。

公開鍵はVPSに登録し、秘密鍵はPCで保管します。
VPS上の公開鍵とPC内の秘密鍵が合致すると、サーバーにログインできる仕組みです。
以下では、公開鍵認証を有効化し、パスワード認証を無効化する手順を紹介します。
本記事では、『Tera Term』を使用して公開鍵と秘密鍵を生成します。
『Tera Term』を起動したら、キャンセルをクリックして「新しい接続」の画面を閉じましょう。

画面上部の設定をクリックしてください。

SSH鍵生成をクリックします。

「RSA」にチェックを入れ、生成をクリックしましょう。

「RSA」はスタンダードな鍵の方式である一方、最近では「ED25519」のほうが主流です。
よりセキュリティを高めたい方は、「ED25519」で鍵を生成してください。
「鍵を生成しました」と表示されたら、任意の「パスフレーズ」を設定していきます。
秘密鍵にアクセスするためのパスワードのこと。
パスフレーズを入力したあと、公開鍵の保存と秘密鍵の保存をそれぞれクリックしましょう。

生成された公開鍵のファイル(「id_rsa.pub」)をメモ帳で開きます。

ファイルの中身をすべて選択し、コピーしておいてください。

一般ユーザーでSSH接続したあと、以下のコマンドで公開鍵を格納するためのディレクトリを作成します。
mkdir /home/xserver/.ssh

続いて、以下のコマンドで公開鍵として保存するファイルを作成しましょう。
touch /home/xserver/.ssh/authorized_keys

ファイルを作成したら、以下のコマンドで編集画面を開きます。
nano /home/xserver/.ssh/authorized_keys

先ほどコピーしておいた、「id_rsa.pub」ファイルの中身をペーストしましょう。
ペーストするとき、誤って改行すると正しく公開鍵が登録されないので注意してください。
『Tera Term』では、画面内で右クリックすることでペーストできます。

公開鍵をペーストしたら、Ctrl + Xを押しましょう。
「変更されたバッファを保存しますか?」と表示されるので、「Y」のあとEnterを押してください。

所有者(本記事では「xserver」ユーザー)以外は、公開鍵のディレクトリとファイルを閲覧したり、編集したりできないよう権限を設定します。
まず、以下のコマンドを実行してください。
chmod 700 /home/xserver/.ssh

続いて、以下のコマンドを実行しましょう。
chmod 600 /home/xserver/.ssh/authorized_keys

「700」は、所有者のみ「読み書き」と「実行」ができる権限。
「600」は、所有者のみ「読み書き」ができる権限です。
公開鍵認証でログインできるか試します。
SSH接続している場合はログアウトしたあと、再度『Tera Term』を起動してください。
「SSH認証」の画面で「ユーザー名」を入力。
また、秘密鍵にアクセスするための「パスフレーズ」を入力しましょう。

続いて、「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れたのち、…をクリックします。

先ほど保存した秘密鍵(「id_rsa」ファイル)を選択して、開くをクリックしてください。

OKをクリックして無事にログインできれば、公開鍵認証の有効化は完了です。

公開鍵認証を有効化したら、パスワード認証を無効化しましょう。
パスワード認証を無効化することで、秘密鍵を持つユーザーしかVPSにログインできなくなり、大幅にセキュリティを向上できます。
パスワード認証は、必ず公開鍵認証でSSH接続できることを確認してから無効化してください。
パスワード認証を無効化したあと、SSH接続できなくなったときは「VPSパネル」の「コンソール」から「sshd_config」ファイルを編集して復旧しましょう。
以下のコマンドを実行して、SSHに関する設定をまとめた「sshd_config」というファイルにアクセスしてください。
sudo nano /etc/ssh/sshd_config

一般ユーザーのパスワードを入力してsudoコマンドを実行すると、「sshd_config」が開きます。
「PasswordAuthentication yes」を「no」に書き換えて、ファイルを保存してください。

行頭に「#(コメントアウト)」が付いている場合は、そちらを削除します。
編集後、「Ctrl + X」のあとYを押して設定を保存しましょう。
設定変更を適用するため、SSHサービスを再起動していきます。
まずは、以下のコマンドを実行して、「sshd_config」ファイルの構文に誤りがないか確認してください。
sudo sshd -t

何も出力結果が返ってこなければOKです。
続いて、以下のコマンドでSSHサービスを再起動しましょう。
sudo systemctl restart sshd

一度ログアウトして、パスワード認証が無効化されているかを確認してください。
パスワード認証でのログインを試し、以下のような画面が表示されればOKです。

rootユーザーによるSSH接続を禁止する
一般ユーザーでリモート管理できる環境を整えられたので、続いてrootユーザーのSSH接続を制限していきます。
rootユーザーは、悪用すれば手っ取り早くVPSの管理権を奪えるため、攻撃者の標的になりやすいです。
しかし、rootユーザーによるSSH接続を禁止しておけば、万が一悪用されたとしても、VPSが乗っ取られるリスクを大きく抑えられます。
以下、rootユーザーによるSSH接続を禁止する手順です。
一般ユーザーでSSH接続したら、以下のコマンドを実行して「sshd_config」ファイルを開きます。
sudo nano /etc/ssh/sshd_config

少しスクロールして、「PermitRootLogin yes」を「no」に書き換えてください。

行頭に「#(コメントアウト)」が付いている場合は、そちらを削除してください。
編集後、Ctrl + Xのあと「Y」を押して設定を保存しましょう。
以下のコマンドを実行して、「sshd_config」ファイルに誤りがないかを確認します。
sudo sshd -t

誤りがないことを確認したあと、以下のコマンドでSSHサービスを再起動しましょう。
sudo systemctl restart sshd

一般ユーザーでSSH接続している場合はログアウトして、rootユーザーでログインを試してみてください。
以下のとおり、「認証に失敗しました」と表示されればOKです。

SSHの接続ポートをデフォルトから変更する
リモート管理の環境を整備する最後のセキュリティ設定として、SSHの接続ポートをデフォルトから変更しましょう。
SSHの接続ポートは、「22番」がデフォルトです。
基本的に攻撃者は22番のポートを標的にするため、他の番号に変更しておくことでセキュリティリスクを軽減できます。
以下は、SSHの接続ポートを22番から変更する手順です。
はじめに、変更後のポート番号を決めておきましょう。
ポート番号は、「1~65535」の範囲で割り当てられます。
ただ、「1~1023」は「well-knownポート」と呼ばれ、すでに他のサービスなどで使用されていることが多いです。
ポートが被るとエラーの原因になってしまうため、基本的にwell-knownポートは避け、「1024~65535」の範囲で任意の番号を割り当てるようにしてください。
ポート番号を決めたら、すでに使用されていないか念のため確認します。
VPSにSSH接続したあと、以下のコマンドを実行しましょう。
sudo lsof -i:[ポート番号]

何も出力結果が返ってこなければ、そのポートは使用されていません。
続いて、以下のコマンドで「sshd_config」ファイルを開きましょう。
sudo nano /etc/ssh/sshd_config

まずは、「#Port 22」のコメントアウト(#)を外してください。

次に、「Port 22」の下に「Port [ポート番号]」を記載します。

編集が完了したら、Ctrl + Xでファイルを保存してください。
以下のコマンドで、「sshd_config」ファイルの構文に誤りがないかを確認します。
sudo sshd -t

その後、以下のコマンドで設定変更を適用しましょう。
sudo systemctl restart sshd

変更後のポートでVPSにSSH接続できるよう、パケットフィルター設定を変更します。
VPSパネルにアクセスしたあと、左メニューのパケットフィルター設定をクリックしてください。

パケットフィルター設定を追加するをクリックします。

「フィルター」のメニューをクリックして、手動で設定を選択してください。

以下のとおりポート番号を入力して、追加するをクリックしましょう。

『Tera Term』を起動したら、変更後のポートを入力のうえSSH接続を試してください。

無事に新しいポートでSSH接続できることを確認したあと、22番のポートを塞ぎましょう。
「sshd_config」ファイルで「Port 22」の記載を削除し、SSHサービスを再起動してください。

あとは、「パケットフィルター設定」で「SSH」のフィルタールールを削除すればOKです。

必ず新しいポートでSSH接続できることを確認してから22番のポートを塞いでください。
22番のポートを塞いだあと、SSH接続できなくなったときは「VPSパネル」の「コンソール」から「sshd_config」ファイルを編集して復旧しましょう。
3. ファイアウォール(パケットフィルター)を設定する
最後に、必要な通信のみを許可するよう「ファイアウォール」を設定します。
サーバーの通信を制御する「防火壁」のこと。
外部からの不正アクセスや、内部からの許可していない通信を遮断するセキュリティ機能です。
ファイアウォールを設定することで、不正アクセスのセキュリティリスクを大幅に軽減できます。
以下は、ファイアウォールを設定する主な方法2つです。
- 『XServer VPS』に備わる「パケットフィルター設定」を利用する
「VPSパネル」からクリック操作で設定が可能。
指定したポートへの通信を一括で制御できます。
- OSに備わる「ファイアウォール機能(ufwなど)」を利用する
シェル画面でのコマンド操作によって設定が可能。
IPアドレスやアプリ単位で通信を制御できるなど、細かくルールを設定できます。
本記事では、契約直後のVPSで手軽に不正アクセスを防ぐ手段として、「パケットフィルター設定」を利用します。
運用段階で細かく通信を制御したい場合は、『ufw』などの導入を検討してください。
VPSの用途に応じて、パケットフィルター設定を変更しましょう。
今回は、本記事で設定したSSHポートに加え、Webサイトやアプリの運用で必要な「HTTP(80/TCP)」と「HTTPS(443/TCP)」のみ開放します。
Webサイトやアプリを運用する予定がない方は、「HTTP(80/TCP)」と「HTTPS(443/TCP)」は開放しないようにしてください。
VPSのセキュリティ対策では、必要最小限のポートのみを開放し、不要な通信はすべて遮断することが重要です。
下部のパケットフィルター設定を追加するをクリックしてください。

「フィルター」のメニューをクリックして、「Web」を選択しましょう。

「Web」を選択すると、以下のとおり「HTTP(80/TCP)」と「HTTPS(443/TCP)」のどちらも開放されます。

追加するをクリックすれば、「パケットフィルター設定」は完了です。

許可するポートが増えるほど、不正アクセスのリスクは高まります。
不要なポートを許可している場合は、フィルタールールから削除するようにしましょう。
さいごに
以上、VPSの契約直後に押さえるべきセキュリティ対策でした。
本記事では案内しなかったものの、以下二つもVPSの運用を開始する前のセキュリティ対策として有効です。
- 自動アップデートを有効にして常に最新の状態にする
- サーバーで起動している不要なサービスを停止する
VPSの用途などを踏まえ、必要に応じて上記のセキュリティ対策も検討してください。
また、VPSのセキュリティ対策は、契約直後の一回で終わりではありません。
運用中のメンテナンスも徹底することで、VPSのセキュリティを維持しましょう。
最後までお読みいただき、ありがとうございました。