ConoHa VPSにUbuntu。スタートアップガイドの読み方。

ConoHa VPSのスタートアップガイドはCentOSを適用したときの説明です。そこで、UbuntuをOSに選んだ私が、備忘録として設定手順に関するメモを作成しました。基本的にCentOSと大きな違いはありませんが、参考にしてください。

以下、ConoHa VPSのスタートアップガイドです。右も左もわからない状態で大変お世話になりました。

ご利用ガイド VPSスタートアップガイド

ここからは、初心者の私が迷った内容を加えながら説明したいと思います。Ubuntuでなくても、導入でひっかかっている方は是非御一読ください。

なお、特にセキュリティー設定が終わっていない段階では、サーバーを使わないときにVPSサーバーをシャットダウンするようにしましょう。設定前の無防備な状態で起動したままにするのは危険です。

1.スタートアップガイドの内容

スタートアップガイドの内容は以下の通りです。一番最初の「VPSを追加する」は、新たにVPSのプランを申し込む手順なので、申し込んだばかりの私には不要です。

2番目の「起動・再起動・シャットダウン」はConoHaのコントロールパネル(ログイン画面)で、起動などの操作をする方法で何度もお世話になりました。

そして、3番目の「SSH接続でVPSにログインする」から環境設定が始まります。

2.セキュリティ強化の手順

セキュリティ強化の手順として、設定の基本的な流れを説明します。セキュリティ設定の方針がつかめると、理解しやすいと思います。

(1) SSHクライアントによる操作

基本的に「Tera Term」などのSSHクライアントのソフト使ってVPSサーバーを操作します。SSHクライアントでは操作の内容が暗号化されるので、セキュリティを強化することができます。なお、「Tera Term」はフリーソフトです。

VPSサーバーはConoHaのコントロールパネル上からアクセスするコンソールからでも操作できますが、基本的にはSSHクライアントソフトを使います。

(2) スーパーユーザー(root)は使わない

ユーザーは、何でも操作できるスーパーユーザーであるrootと、権限が制約される一般ユーザーに分けられます。

スーパーユーザー(root)は何でも操作できるので便利ですが、権限が大きすぎるためセキュリティ上の穴となる可能性があります。そこで、最終的にはスーパーユーザーではログインできないようにします。

しかし、スーパーユーザーしか使えないコマンドが使えなくなってしまうのは困ります。そこで、sudoという特別なコマンドが使える一般ユーザーを追加し、この一般ユーザーを使ってOSを操作するという方法をとります。

このように、スーパーユーザーを使わないことでセキュリティを強化できます。

さて、sudoが使える一般ユーザーは、コマンドの前にsudoを付けるとスーパーユーザーしか使用できないコマンドでも使えます。

例えばシステムをシャットダウンするコマンド「shutdown -r now」は普通の一般ユーザーには使えませんが、sudoが使える一般ユーザーは「sudo shutdown -r now」と入力すればシステムをシャットダウンすることが可能です。

このようにsudoを使える一般ユーザーを使うことで、誤って大切なファイルを消してしまうといった誤操作を減らすこともできます。

(3) 鍵認証によるログイン

最後にパスワードによるログインから、鍵(セキュリティファイル)によるログインに変更します。パスワード方式のログインはセキュリティ上の弱点になりやすいからです。

そこで、sudoが使える一般ユーザーもパスワードによるログインを禁止し、鍵によるログインしかできないように設定します。

長くなってしまいましたが、これがスタートアップがガイドの内容です。

(4) ファイヤーウォール

最後の接続許可ポートを設定するは、ファイヤーウォールの設定をConoHaのコントロールパネル上で簡単に設定できるようにしたものです。サーバーへの接続の入口番号を限定し、使わないポートにはアクセスできないようにできます。

ちなみにSSHクライアントソフトでアクセスするためのポート番号はディフォルトでは22番ですが、一般的にはこの番号を変えてしまうことが推奨されています。

ひとまず、「接続許可ポートを設定する」を参考に「全て許可」のチェックを外し「SSH(22)」「Web(20, 21, 80, 443)」だけをチェックする運用でよいと思いますが、少し慣れたらSSHのポート番号を変更し、ファイヤーウォールを自分で設定した方がよいと思います。

コントロールパネルでは、指定できるSSH用の番号は「SSH(22)」なので、SSHのポート番号を変えるとコントロールパネルからでは指定できません。より細かな設定をするためにはコマンド上で設定する必要があります。

3.SSH接続でVPSにログインする

参考公式サイト:SSH接続でVPSにログインする

それでは、ここからは個々の設定ステップについてポイントを説明したいと思います。

SSHクライアントのソフトにはTeraTermPuTTY、Rloginのようなものがありますが、設定初心者であればTera Termを使いましょう。ガイドの「一般ユーザーの鍵の生成」の説明でもTeraTermを使いますので、まずはTeraTermを導入した方が楽に進められます。

4.公開鍵認証を設定する

参考公式ガイド:公開鍵認証を設定する

スタートアップガイドの「公開鍵認証を設定する」では、サーバーの追加時に設定すると説明されていますが、サーバー追加とは新しく契約を追加することですので、現実的にはこの方法をとることはできません。そこで、「サーバーの追加」ではなく「サーバーの再構築」により鍵を追加します。手順は以下の通りです。

左側の「サーバー」をクリック → 「ネームタグ」でサーバーを指定 → 「シャットダウン」 → 「サーバー再構築」

なお、この方法で公開鍵認証を設定すると鍵が追加され、自動的にパスワード認証が禁止となります。

この後、このパスワード認証の禁止が「一般ユーザーで公開鍵認証を使用してSSHログインする」ときに問題となりますので覚えておいてください。解決方法はその時に説明します。

さて、rootに鍵認証を設定する必要はないというのも考え方の一つですし、後で別の方法で生成することもできますが、無防備な状態を少しでも短くするためには、この方法で最初に鍵認証を設定しておいた方が無難です。

5.一般ユーザーを追加する

参考公式ガイド:一般ユーザーを追加する

まず、rootでログインします。

一般ユーザーの追加は以下の通りです。「ユーザー名」の部分が追加するユーザーの名称です。

adduserとすると、/homeの下にユーザー名のディレクトリができますが、useraddではディレクトリはできません。ガイドではuseraddとなっていますが、adduserの方が使いやすいと思います。

また、「useradd」の場合には別途「passwd」によりパスワードを設定する必要がある点も「adduser」との違いです。

# adduser ユーザー名

以下、「adduser」実行後の画面です。まず、追加する一般ユーザーのパスワードを入力します。次にFull Name[]: ~Other []:までは、追加情報が特になければ空白のままでかまいません。最後にyを入力して終了です。

# adduser ユーザー名
Adding user `ユーザー名' ...
Adding new group `ユーザー名' (1001) ...
Adding new user `ユーザー名' (1001) with group `ユーザー名' ...
Creating home directory `/home/ユーザー名' ...
Copying files from `/etc/skel' ...
New password: ※パスワード入力
Retype new password: ※パスワード再入力
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
        Full Name []: ※Enter
        Room Number []: ※Enter
        Work Phone []: ※Enter
        Home Phone []: ※Enter
        Other []: ※Enter
Is the information correct? [Y/n] y

なお、ユーザーの削除は以下の通りです。-rの指定でホームディレクトリの情報も削除されます。

# userdel -r ユーザー名

6. パスワードによるログインの許可

公開鍵認証を設定」で最初にrootの鍵を指定したときに自動的に、パスワードログインができないように設定されていますので一時的にログインを許可します。

許可の方法として、まずrootの鍵認証でログインしたあとに、viエディタを使って「/etc/ssh/sshd_config」を編集します。なお、viエディタの最初に覚えるべき基本操作は以下の5つです。

  • i:編集モードに変更
  • Esc:コマンドモードに変更
  • 編集モードで「Back Space」:前の文字を消す
  • コマンドモードで「:wq」:保存して終了
  • コマンドモードで「:q!」:保存しないで終了

以下の入力によりファイル「sshd_config」を指定してviエディタを起動します。

# vi /etc/ssh/sshd_config

sshd_configの中のPasswordAuthenticationをnoからyesに変更します。注意しなければならないのは、私の場合PasswordAuthenticationの記述が2カ所ありました。両方変更する必要があります。(1つは消してしまってよいのかもしれません)

PasswordAuthentication no
    ↓
PasswordAuthentication yes

sshd_configの変更が終了したらSSH接続の設定の変更を反映します。

systemctl reload sshd

7.sudoを設定する

参考公式ガイド:sudoを設定する

sudoを使用できる一般ユーザーは、スーパーユーザーでなければ使えないコマンドであっても、コマンドの前にsudoを追加することによって、コマンドを実行できます。

sudo [コマンド]

sudoの設定では、CentOSとUbuntuではコマンドが異なります。Ubuntuでは以下のいずれかの指定によりsudoグループに追加します。sudoグループに追加することにより、sudoを使用できる一般ユーザーになります。

gpasswd -a ユーザー名 sudo
usermod -G sudo ユーザー名

それでは、実際に確認してみましょう。設定した一般ユーザーでログインし直し、以下のコマンドを実行してください。rootではないため実行できません。

shutdown -r now

しかし、以下のように入力して実行するとシャットダウンできます。なお、sudoを最初に実行するときにログインした一般ユーザーのログインパスワードを入力する必要があります。

sudo shutdown -r now

8.一般ユーザーで公開鍵認証を使用してSSHログインする

参考公式ガイド:一般ユーザーで公開鍵認証を使用してSSHログインする

この手順では、一般ユーザーを鍵認証によってログインできるように設定し、rootのログインを禁止し、一般ユーザーのパスワードによるログインができないように設定します。

(1) 鍵の生成

Tera Termで鍵を生成します。Tera Termの起動時に最初に表示されるウィンドウをキャンセルボタンで閉じ、黒いコンソール画面の上部ツールバーの「設定」から「ssh鍵生成」を選択します。

次に鍵の種類:RSA、ビット数:2048、bcrypt KDF形式はチェックを入れたまま、生成ボタンを押します。(生成のボタンを押す度に違う鍵が生成されます)

すると、公開鍵の保存、秘密鍵の保存がアクティブになりますので、それぞれ保存します。コメント欄には接続を行うユーザ名を入力するとなど後で内容が判断できるコメントを入力します。パスフレーズは空白でかまいませんが、入力することによってセキュリティが強化されます。短いパスフレーズでは効果がないので10文字程度以上の長いものにします。

bcrypt KDF形式については、当初対応していないソフトが多くトラブルもあったようですが、現在は問題になることはないようですので、チェックを入れておきましょう。bcrypt KDF形式を使用することでセキュリティは強化されます。

「公開鍵」の名前はid_rsa.pubであり、自分のPCへ一旦保存した後にサーバーに送ります。

「秘密鍵」の名称はid_rsaであり、自分のPCに保存します。これが第三者に渡ると大変ですので、メールや通信で送ったり、クラウドに保管するのはやめましょう。

01_鍵生成

(2) 公開鍵のアップロード

まず、tera termで一般ユーザーでログインします。次に自分のPCの中に保存したid_rsa.pubをログイン済みのTera Termの黒いコンソール画面にドラッグすると以下のウィンドウが起ち上がります。送信先には入力せず、そのままO.K.ボタンをクリックすると一般ユーザーのホームディレクトリにid_rsa.pubがアップロードされます。

03_サーバーへのファイルのアップロード

なお、一般ユーザーのホームディレクトリは「/home/ユーザー名」です。念のため「pwd」で現在のカレントディレクトリを確認してみましょう。

$ pwd

以下のように出力され「/home/user_name」に入っていることがわかります。

/home/user_name

次に一般ユーザーのホームディレクトリのなかに「.ssh」というディレクトリを作り、そこに、id_rsa.pubを移動し、ファイルの名前をauthorized_keysに変更します。

以下の3行目は不要ですが、権限の関係で移動前のファイルを消すことができなかった場合には実行してください。

mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys
rm -f id_rsa.pub  ←これは不要

(3) ファイル or ディレクトリに対する権限の設定

ディレクトリ「.ssh」ファイル「authorized_keys」の権限を設定します。なお、最初の「.」がついたディレクトリやファイルは「ls」で表示されません。表示するためには「ls -a」「ls -A」とします。

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

ディレクトリ「.shh」
→ 所有者の権限:7、所有者が属するグループの権限:0、その他のユーザーの権限:0
ファイル「authorized_keys」
→ 所有者の権限:6、所有者が属するグループの権限:0、その他のユーザーの権限:0

0読込×、書込×、実行×
1読込×、書込×、実行○
2読込×、書込○、実行×
3読込×、書込○、実行○
4読込○、書込×、実行×
5読込○、書込×、実行○
6読込○、書込○、実行×
7読込○、書込○、実行○

つまり、ディレクトリ「.ssh」を作ったユーザーが「.ssh」の所有者であり、Tera Termで「authorized_keys」をコピーしたユーザーが「authorized_keys」の所有者となるので、rootとそのユーザーのみが「.ssh」や「authorized_keys」にアクセスできるようになります。

(4) 鍵を使ったログイン

それでは、鍵を使って一般ユーザでログインをします。

ユーザー名には、作成した一般ユーザー名を入力します。パスフレーズには鍵作成の時に入力したパスフレーズを入力します。ユーザーを作成したときのログインパスワードではないので注意してください。

そして、「RSA/DSA/ECDSA/ED25519鍵を使う」をチェックし、自分のPC内の秘密鍵を選択し、OKボタンを押します。

02_SSH認証

これで、一般ユーザーとしてログインできます。

(5) rootログインの禁止、パスワードによるログインの禁止

rootでログインしなおします。そして、viエディタを使って、/etc/ssh/sshd_configを編集します。

# vi /etc/ssh/sshd_config
#rootログインを禁止にする
PermitRootLogin yes
    ↓
PermitRootLogin no
#パスワードログインを禁止にする →2カ所ある
PasswordAuthentication yes
    ↓
PasswordAuthentication no

SSH接続の設定変更を反映します。

systemctl reload sshd

9.接続許可ポートを設定する

参考公式ガイド:接続許可ポートを設定する

「サーバー」 → VPSの「ネームタグ」 → 「ネットワーク情報」 → 「接続許可ポート」にて使用するポートを限定します。

使用しないポートにはアクセスできないようにすることでセキュリティを強化します。まず、コントロールパネルの「全て許可」のチェックを外します。そして、「SSH(22)」「Web(20, 21, 80, 443)」だけをチェックします。

サーバーの使用用途によって許可するポートを指定し直してください。ポートの指定が一目で分かり設定変更しやすいのが特長です。

以上で、ConoHaのスタートアップガイドにそった設定は終了です。これで最低限のセキュリティ設定は完了しました。

これで、「セキュリティ対策ができない初心者」を狙うハッカーからの攻撃は防御することができます。

なお、セキュリティ対策ではSSHのポート番号は22から他の番号に変更した方がよいとされていますので、その場合はコントロールパネルの設定を「全て許可」にもどし、自分でファイヤーウォールの設定を行う必要があります。

他にも、TCP WrapperでアクセスできるIPアドレスを制限したり、PAMにより認証方式を一括管理したりできますので、状況に応じてセキュリティを強化して下さい。最低限のセキュリティということは攻撃側も当然想定している設定だからです。

10.最後に設定をイメージ保存

さて、ここまで設定できたらイメージ保存しておきましょう。コントロールパネルの「サーバー」から以下の設定メニューのアイコンでシャットダウンすると、イメージ保存が選択できるようになります。

04_コントロールパネルの設定メニューのアイコン

イメージ保存を選択すると以下のウィンドウが現れますので、VPSを選択し、「Startup-Guide」といった保存内容がわかるネームタグで保存します。日本語、空白は使えません。なお、日付は後でイメージリストから確認できますのでファイル名に加える必要はありません。

05_イメージ保存の保存先とネームタグ

ConoHaのVPSサーバーではイメージ保存機能が無料で使えるので大変便利です。トラブルがあった場合には「サーバー再構築」から「イメージ選択」で「保存イメージ」を選べば復旧できます。

なお、イメージファイルの削除など詳しい使い方は以下の公式ガイドを参照してください。

イメージ保存機能を使う

11.公開鍵についての追記

公開鍵の設定については、スタートアップガイドに近い手順にするために、少しまわりくどい方法をとっています。そこで、最後に鍵の設定について内容を整理したいと思います。

(1) rootの鍵設定

上記の手順ではrootの鍵設定では「サーバーの再構築」によりコントロールパネルから鍵を指定しました。この時、自動的にパスワードによるログインが禁止されます。この一連の設定を、この後の説明では「コントロールパネルでの設定」と呼ぶことにします。

今後、自動で設定された内容を変更したい状況も想定できますので、具体的にはどの様な設定が行われたのかを知っておく必要があります。

さて、rootのホームディレクトリは「/root」です。「コントロールパネルでの設定」では、「/root/.ssh」の中に公開鍵「authorized_keys」が自動で生成されます。そして、「/etc/ssh/sshd_config」の「PasswordAuthentication yes」が「PasswordAuthentication no」に設定されます。

ですから、rootに別の鍵を設定したい場合には「/root/.ssh/authorized_keys」を書き換えれば鍵を変更できますし、「/etc/ssh/sshd_config」の内容を書き換えればパスワードによるログインの許可・不許可を切り替えられます。

なお、最初に「コントロールパネルでの設定」で作成した公開鍵はConoHaの別の場所でも保管されているようで、「/root/.ssh/authorized_keys」を書き換えてしまっても、「サーバーの再構築」で再度同じ鍵を指定すれば復旧します。

(2) 一般ユーザーの鍵設定

一般ユーザーの公開鍵は「/home/ユーザー名/.ssh」に「authorized_keys」というファイル名称で保存します。つまり、rootでログインし、「id_rsa.pub」をアップロードするときに送信先を「/home/ユーザー名」とすれば、パスワードによるログインの禁止を一時的に解除する必要はありません。

03_サーバーへのファイルのアップロード

あとは、rootでログインしたまま、最初に「/home/ユーザー名」に入ってしまえば、同じような手順で一般ユーザーの鍵の設定ができます。

cd /home/ユーザー名/
mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

ただし、ここで作ったディレクトリ「.ssh」とファイル「authorized_keys」は所有者と所属グループがrootになっています。これでは新しく作成した一般ユーザーからアクセスできなくなってしまいます。

実際に「/home/ユーザー名」からlsのaオプション、lオプションで確認してみると、以下のように表示されます。1番目のrootが所有者、2番目のrootがグループです。

# ls -a -l
drwx------ 2 root      root      4096 Oct 14 23:29 .ssh
# ls -l .ssh
-rw------- 1 root root 395 Sep 30 15:36 authorized_keys

従って、chownにより、「.ssh」とその中のファイルの所有者とグループを変更します。-Rオプションは.sshだけではなく、その下のファイルやディレクトリの所有権も変更するオプションです。

chown -R user_name:user_name .ssh  #ディレクトリの中身も

もう一度、確認するときちんと変更されていることがわかります。

# ls -a -l
drwx------ 2 user_name user_name 4096 Oct 14 23:29 .ssh
# ls -l .ssh
-rw------- 1 user_name user_name 395 Sep 30 15:36 authorized_keys

この方法は、後でユーザーを追加するときにも応用できますので、マスターしておいて下さい。

私が実際にレンタルしたVPSサーバー

私が実際にレンタルしたVPSサーバーはConoHa VPSです。私は1GBのプランを申し込みました。VPSサーバーは一般のレンタルサーバーと異なりOSやアプリケーションを自由に設定できるので、Pythonで計算した結果をサイトに表示したりすることもできます。

なお、ConoHa VPSの特長として、サーバーのディスクイメージを丸ごとバックアップできるイメージ保存機能を無料で使用することができます。コードを変更して元に戻せなくなった場合にも安心です。

また、ConoHa VPSは途中でプランをスケールアップできるだけでなく、スケールダウンすることもできます。つまり、2Gプランを1Gプランに変更することができます。ただし、512MBプランだけはスケールアップ・ダウン機能が使用できないので注意してください。

また、初期費用なしで3日だけ借り、3日分の費用だけ払うといったことも可能なので気軽に始められます。※時間課金(月の上限額は決まっています)



その他

Twitterへのリンクです。SNSもはじめました♪

以下、私が光回線を導入した時の記事一覧です。
 (1) 2020年「光回線は値段で選ぶ」では後悔する ←宅内工事の状況も説明しています。
 (2) NURO光の開通までWiFiルーターを格安レンタルできる
 (3) NURO光の屋外工事の状況をご紹介。その日に開通!
 (4) 光回線開通!実測するとNURO光はやっぱり速かった
 (5) ネット上のNURO光紹介特典は個人情報がもれないの?