VPS

さくらのVPS 利用開始初日

VPSに関して「利用してみよう」、という気持ちがようやく沸いてきましたので、国内ではVPSの提供が早かった、そしておサイフに優しい価格と多くのドキュメントがある(と思われる)、「さくらのVPS」を申し込みました。

VPS(Virtual Private Server)とはインターネット上で利用できる仮想専用サーバーで、自身でサーバーや通信機器などのハードウェアを用意する事なく、OSの再インストールも含めて自由に操作できます(制限はありますが)。

利用は初めてですので、価格の安い(左端)プランを申し込みました。年間支払額は年間一括7,543円+初期費用1,080円=8,623円です。

このサービスでは固定IPアドレスが割り当てられますが、某レンタルサーバーでの固定IPアドレスの利用料金は年間6,000円です。ちょっと凹みます。

この件に関する投稿は、利用に関してどんな操作をしたか、の備忘録として今後投稿する予定です。なおクライアントPCはMac OS Xです。

登録完了メールを受け取った初日の本日は、以下のような設定をしました。

OSの再インストール

登録完了時点ではCentOS6がインストール済みで、VPSコントロールパネルからサーバーを起動すると直ちに利用できるようになっています。

しかしながら、さくらのVPSを選んだ理由の1つはCentOS7が使える事でしたので、すかさずOSを入れ直す事にしました。

OSの再インストールは、VPSの管理画面上「各種設定」メニューの「OSインストール」から実施できます。

この後のダイアログで「標準OS / カスタムOS / ISOイメージ」の中の「カスタムOSインストール」を選択、次のダイアログで「CentOS 7 x86_64」を選択して実行しました。

インストールはPCにDVDをセットして作業しているような感じで、ブラウザ上にコンソール表示ウィンドウが開かれ、マウスを利用して操作できます。

パーティションの設定やインストールするサーバープログラムなど選択できるようですが、パーティションはお薦め状態、サーバープログラムは特に選択せずインストールを進めました。

ログインのセキュリティに関する設定

サーバーは今後、クライアントPCからsshを利用して操作する事になります。sshは暗号化されたデータで通信するため、パケットを盗み見されても安心です。

しかしながら、管理者rootに安易なパスワードを設定していると辞書を利用したブルートフォース攻撃により、あっ!、という間に乗っ取られてしまう危険があります。

そこで以下のような設定を最初に実施します。

  • 管理者権限の必要なコマンドを実行できるユーザーの設定
  • sshでrootのログインを無効化
  • 公開鍵認証によるssh接続の設定
  • sshのパスワードによるログインの無効化
rootの代わりのユーザー

自身が利用するユーザーの追加登録で、管理者権限を必要とするコマンドはsudoを利用して実行できるようにします。作業は以下のような操作をサーバー上で実行しました。

  • adduserで新規ユーザー登録
  • passwdでパスワード設定
  • usermodでwheelグループに追加(-aG利用)

コマンド例:

# useradd ユーザー名
# passwd ユーザー名
# usermod -aG wheel ユーザー名
公開鍵認証の設定

生成した公開鍵id_rsa.pubをサーバーの/home/ユーザー/.ssh/authorized_keysファイルへ追加登録、秘密鍵id_rsaファイルは自身が利用するユーザーディレクトリの.sshディレクトリへ保存する。

  • Macのssh-keygenでキーファイルをパスワード付きで生成
  • scpで公開鍵をサーバーへアップロードして追加
  • 公開鍵のファイルパーミッションを600に変更
  • 秘密鍵を自身の.sshディレクトリへ600で保存

コマンド例:

クライアント側
$ ssh-keygen -t rsa
$ scp id_rsa.pub ユーザー名@サーバーIP:/home/ユーザー名/.ssh
$ chmod 600 id_rsa

サーバー側
$ mv id_rsa.pub authorized_keys
$ chmod 600 authorized_keys
あるいは
$ cat id_rsa.pub >> authorized_keys
$ rm id_rsa.pub
rootログイン、パスワード認証の無効化

rootログインの無効化は、パスワード認証を無効化する事で変更する必要はない気もしますが、どちらも/etc/ssh/sshd_configファイル内の設定を書き換えるだけですので、合わせて無効化しました。

コマンド例:

# vi /etc/ssh/sshd_config
設定は
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
修正後サービスをrestartする
# systemctl restart sshd

デフォルトパラメータについては、コメントアウトを外して修正しました。

ところでサービスコマンド操作に関して検索していると、systemctlを利用して説明するサイトがいくつもありました。これまでserviceを利用してましたが、最近変わりつつあるようです。詳細は時間があれば何れ調べる事になるでしょう。

便利な使い方

サーバーログインは、コマンド「ssh ユーザー名@サイトURL」を実行してパスワードを入力しました。

認証鍵の導入により、「ssh サイトURL」を実行して秘密キーに設定したパスワードを入力する方法に変わりました。

利用するVPSのDNS名は結構長いです。そこでもっと簡単にログインする方法がないか検索したところ、.ssh/configファイルを利用する方法がありましたので使う事にしました。

これは、他のサーバーのログインも含めて設定する事ができます。

ファイルサンプル:

Host サイト名称
    Hostname IPアドレス または URL
    port 22
    User ユーザー名
    IdentityFile ~/.ssh/id_rsa
Host 別のサイト名称
    以下上記と同様

秘密鍵のファイル名を変更すれば、異なる認証鍵を混在させて利用できそうです(試していませんが)。

サイト名称は、複数サイトを識別しやすいように、VPS管理画面でサーバー上のの名前に設定した名称と同じにしました。

以降サーバーへは、「ssh サイト名称」を入力、続けて秘密鍵のパスワードを入力してログインするようになります。

 

以下参考にさせていただいたページのリンクです。

ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」
SSH接続の設定変更方法
VPS借りたら、せめてこれくらいはやっとけというセキュリティ設定
ssh公開鍵認証設定まとめ
ssh公開鍵認証を実装する
SCPコマンドでローカルのファイルをサーバアップ&サーバ上のファイルをDL
SSHで複数の秘密鍵を使い分けるいくつかの方法
チュートリアル:CentOS7(さくらのVPS)サーバ作成直後に設定しておくべき初期セキュリティ設定