レンタルサーバーではなく、VPSを利用する場合、まず最初におこなう大事な作業はセキュリティ対策です。

尚、VPS契約をする時に最初に選ぶのがOS(operating system)です。

日本で圧倒的にシェアがあって人気なのは、Windowsシリーズのwindowsサーバーですが、データ容量も大きいし、とにかく重いし、ランニングコストも高くなってしまうので、お勧めしません。

気軽に個人でVPSサービスをするなら、linux技術がベースとなっているCentOSかubuntuが良いでしょう。

因みに私は長年CentOSを使ってきましたが、CentOS8の突然のサポート終了に怒りを感じ、ubuntuに乗り換えています。

そこで、今回はUbuntuOSの初期設定方法をご紹介です。

 

 

UbuntuOSのVPSサーバーを調べると、さくらのVPSやconohaなど、色々見つかりますが、慣れれば、あっという間に契約を切り替える事が出来ますので、どれでも良いでしょう。

今回は、料金が安くて手軽なconohaのVPSで説明します。

 

尚、スマホやパソコンやスマホの操作に慣れてしまっているVPS初心者の方がまず驚くのは、VPS操作画面がないという事でしょう。

厳密には、契約するVPSサービスによって、Pleskなど、ブログ用に特化された管理画面などもありますが、基本は黒画面が基本のターミナル(コンソール)という操作画面で、文字を打つことになります。

この黒画面は、WEBブラウザからも操作できますが、レスポンスが悪くセキュリティリスクもあるので、あまりおすすめできません。TeraTermなどの専用ソフトでSSH接続するのが、安心です。

尚、windows10を利用しているなら、OS標準装備のWindows PowerShellが便利です。

今回大事なセキュリティ対策は3つ!

VPSの初期設定
  1. rootユーザーでアクセスしない
  2. ブラウザからアクセスしない
  3. ファイヤーウォールの設定

rootユーザーの変更

rootユーザーの他に新規にユーザーを追加します。

$ adduser <ユーザー名>

新規ユーザーにsudoという操作が出来るように権限の追加

$ gpasswd -a <ユーザー名> sudo

SSHのポート設定をする事で、SSH Clientサービスからアクセスする事が可能になります。

$ apt install openssh-server

ルートログインを無効にします。

rootユーザーで日頃の操作をしないように、SSH接続においてrootユーザーにおいてのアクセス権限をなくします。

$ sudo vi /etc/ssh/sshd_config

VPS初心者には、ちょっと敷居が高いかもしれませんが、viと言うコマンドでsshd_configの設定ファイルを開きます。

windowsのノートパッド(メモ帳)のようなアプリを立ち上げるイメージです。

修正1か所

PermitRootLogin no

追加1か所(ポート番号1022でSSHにアクセルするという意味)を最後に記入

Port 1022

尚、追加修正するには、キーボードのiキーを押してみてください。

insertと表示され、文字の入力削除が可能になります。

Viを起動してconfigを設定、保存する時はctrl+cの後に:wqと入力してください

:wq

これで、変更でsaveされます。尚、変更なしで閉じる場合は、:q!です。

SSH接続の方法

今までの捜査は、WEBブラウザのコンソールでの操作でしたが、いよいよSSHソフトからのアクセスです。

まずは、Windows PowerShellを立ち上げましょう。

最初に自分のPCのCドライブの表示があると思いますが、ここで、次のように入力してください。

$ ssh -p 1022 <ユーザー名>@<IPアドレス>

-pと言うのは、ポート番号の事です。sshd_configの設定時に1022でアクセスすると指定しているので、1022を入力しています。

尚SSHの標準ポートは22ですが、一般的に知られ過ぎているので、ここではあえてセキュリティを高めるために他のポートに変更しています。

また先ほどrootユーザーでのアクセスを禁止しているので、ルートユーザーでアクセスしようとすると次のように表示されます。

$ ssh -p 1022 root@<IPアドレス>
root@<IPアドレス>: Permission denied (publickey).

通常はこれだけでOK、続けてパスワードを入力すれば、アクセスできますが、よりセキュリティ対策を強化するなら、SSHキーを使うのがベストです。

 

SSH接続:conohaVPSの場合

 windows-poweshell

conohaVPSの場合は、公式マニュアル(https://support.conoha.jp/v/registsshkey/)にも記載されていますが、秘密鍵をダウンロードしましょう。

ダウンロード後の作業はWindows PowerShellを起動し、次のように入力します。

$ mv /Users/<PCのユーザー名>/Downloads/<秘密鍵ファイル.pem> ~/.ssh

これで、隠しファイルとして.sshディレクトリの中にファイルが格納(移動)されました。

これで、rootユーザーの.sshフォルダの中に認証を受けるためのキーが配置されましたが、これはあくまでrootユーザーでアクセスした時に有効になります。

セキュリティを強化するためにroot以外のユーザーを作成し、SSHでアクセスするようにしているので、同じデータをコピーする必要があります。

これは、ちょっとめんどくさいですが、rootユーザでアクセスする必要があるので、conohaにログインして、WEBブラウザからのコンソールから、次のように入力します。

$ cp .ssh /home/<ユーザー名>

一旦「exit」でログアウトし、新規ユーザーでログインしなおします。

デフォルトの階層から.sshの中に移動したいので、次のように入力します。

$ cd .ssh

尚、.sshファイルは隠しファイルになるので、ディレクトリが存在しているかのチェックは、ls -aを使います。

$ ls -a
. .. .bash_history .bash_logout .bashrc .cache .profile .ssh .sudo_as_admin_successful

きちんとSSHが入っているかチェックするために、lsコマンドで確認です。

<ユーザー名>@<ホスト名>:~/.ssh $ ls
authorized_keys

authorized_keysが入っていれば、SSHターミナルからの接続がパスワード不要で可能になります。

それでは、Windows PowerShellを再び起動し、次のように入力です。

$ ssh <ユーザー名>@<IPアドレス> -p 1022 -i ~/.ssh/<秘密鍵ファイル.pem>

秘密鍵ファイルは、ダウンロードしたファイル名です。

でも、実はこれでログインできません。

ちょっとはまった個所なので、非常に大事なポイントです。

通常の秘密鍵ファイルと言うのは、rootユーザーにしか権限が与えられていなかったのです。

よって、もう1度コンソールから新規ユーザーでログインし、次のコマンドを入力します。

$ sudo chown -R <ユーザー名> .ssh/

簡単に説明すると、新規ユーザーにも秘密鍵の権限を与えるというコマンドです。

これで、再度SSHサービスからログインしてみましょう。

$ ssh <ユーザー名>@<IPアドレス> -p 1022 -i ~/.ssh/<秘密鍵ファイル.pem>

問題なくパスワード不要でログイン出来たら終了です。

 

ファイヤーウォールの初期設定

まずは、ファイヤーウォールが設定されているかチェックしましょう。

$ sudo ufw status

VPSによっては初期サービスでインストールされているものもありますが、インストールされていなければ、次のコマンドでインストールしてください。

$ sudo apt -y install ufw 

全てのポートが開いていると危険なので、まずは全部のポートの閉鎖です。

$ sudo ufw default deny
デフォルトの incoming ポリシーは 'deny' に変更しました

今後色々なサービスを展開するに毎にポートを開放する必要がありますが、まずはSSH接続で必要なポート番号を設定します。1022の場合

$ sudo ufw allow 1022
ルールをアップデートしました
ルールをアップデートしました(v6)

これで、ufwを有効にしても良いでしょう。

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます

最後にufw(ファイヤーウォール)がしっかり稼働しているかのチェックをして終了です。

$ sudo ufw status
状態: アクティブ

To Action From
-- ------ ----
1022 ALLOW Anywhere
1022 (v6) ALLOW Anywhere (v6)

 

尚VPSサービスの中には、WEB画面からファイヤーウォール対策できるものも存在します。

例えば、GMOVPSの場合は、専用のセキュリティ画面があり、簡単操作で設定が行えて大変便利です。

ファイヤーウォールの設定を突き詰めると、port管理におけるネットワークの知識が必要になってくるので、簡単にファイヤーウォール対策だけをしたい方は、GMOVPSを選ぶというのも選択の1つです。

 

 

その他VPS導入時の初期設定

VPS導入時に設定しておいた方が良い、その他の操作です。

タイムゾーンの設定

botを作ったりしてlogを吐き出す時に日時がずれていると混乱の元になるので、タイムゾーンを日本時を間に変更します。

$ sudo timedatectl set-timezone Asia/Tokyo

日時は次のコマンドで確認できます。

$ date
Wed 23 Mar 2022 11:26:39 PM JST

最後にJSTと表示されていれば、日本時間になっています。

より詳細に確認したい場合は、timedatectl status

$ timedatectl status
Local time: Wed 2022-03-23 23:41:48 JST
Universal time: Wed 2022-03-23 14:41:48 UTC
RTC time: Wed 2022-03-23 14:41:49
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: n/a
RTC in local TZ: no

ホスト名の変更

契約するVPSサービスによって、初期値(デフォルトネーム)は異なりますが、conohaの場合はIPアドレスになっています。

複数のVPSを利用する時など、わかりやすい名前に変更しておくと良いでしょう。

$ sudo hostnamectl set-hostname <ホストネーム>

ホスト名の確認は、hostnameです。例えば、conohadayoにしている場合

$ hostname
conohadayo

日本語環境に対応

日本語環境を設定しておくと、今まで英語で表記されていたものが、日本語に翻訳されるので、便利です。

$ sudo apt -y install language-pack-ja language-pack-ja-base ibus-mozc
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

日本語対応になっているかの確認

$ localectl list-locales
C.UTF-8
en_US.UTF-8
ja_JP.UTF-8

全てを最新の状態にする

初期設定の状態から最新状態のOS状況に更新します。

$ sudo apt update

インストールした各種パッケージを最新の状態にします。

$ sudo apt upgrade -y

いよいよ、これでVPSを使ってWEBサーバーを構築する、botを作成するなどの準備が整いました。

でも、VPSサーバーの醍醐味を堪能するのは、dockerをインストールしてからが本番です。

次回、プログラマーでなくても必見、使わないと絶対もったいないdockerのインストール方法をご紹介です。