レンタルサーバーではなく、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つ!
- rootユーザーでアクセスしない
- ブラウザからアクセスしない
- ファイヤーウォールの設定
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の場合
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のインストール方法をご紹介です。