サーバー

さくらのVPS1日目 利用開始、DNSとSSHのセットアップ

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に変更
    /home/ユーザー/.sshディレクトリのパーミッションを700に変更
  • 秘密鍵を自身の.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

秘密キーを指定してログインを確認します。

$ ssh -i ~/.ssh/id_rsa サイトURL

エラー「Permission denied (publickey)」が出力された場合、サーバー側の「.sshディレクトリ」と「id_rsa.pubファイル」のパーミッション設定がそれぞれ「700」,「600」に設定されているか確認します。

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)サーバ作成直後に設定しておくべき初期セキュリティ設定

 

記事に関して質問をいただいても回答できませのでご了承ください。

書籍の紹介:

CentOS 7を対象としたLinuxサーバーに関してのサービスや機能を網羅した書籍です。日本語で書かれた資料が少ない中で、本書はCentOS 7サーバーを構築、運用する上で購入しました。情報量が多いため読破しようとは思いませんが、リファレンスとしてとても役に立ちます。