さくらVPSのsshによる鍵認証の設定

VPSのセキュリティーってどうなってるの?

↑で指摘されているユーザーによる脆弱性について、自分もインフラ周りに弱い危ういユーザーの一人です。先日、さくらVPSに登録したのですが備忘録を兼ねて、まずはsshによる鍵認証について、ここに書き残しておこうと思います。まずはPuttyをダウンロード、インストールします。

PuTTY ごった煮版

鍵認証の設定手順は次の通り。

  1. 公開鍵と秘密鍵の生成
  2. 鍵認証ログイン用のユーザー作成
  3. サーバ側に公開鍵を登録
  4. sshの設定
  5. Puttyに秘密鍵をセットして接続

では、順番に進めていきます。

1). 公開鍵と秘密鍵の生成

[スタート]-> [プログラム]-> [PuTTY]-> [PuTTYgen]で鍵生成ツールを開き、公開/秘密鍵ペアの生成の「生成」をクリックします。

image

赤い斜線部分のエリアをマウスで動かして、乱数を生成します。

image

鍵の生成が完了すると次のような画面になります。

image

鍵のコメントを任意で編集します。用途やユーザー情報を書いておくと良いでしょう。

鍵のパスフレーズには任意のパスワードを入力します。**これはOSへのログインパスワードとは関係ありません。

** 次に生成した鍵を保存します。「公開鍵の保存」と「秘密鍵の保存」ボタンを押して鍵を保存します。

秘密鍵のファイル名は拡張子を.ppk、公開鍵は.pubとしておくと良いでしょう。

image

2). 鍵認証ログイン用のユーザー作成

次に鍵認証でログインするユーザーを作成します。

useradd sakura
passwd sakura
Changing password for user sakura.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

3).サーバ側に公開鍵を登録

サーバ側に公開鍵を登録します。

鍵認証用のユーザーのディレクトリの.sshディレクトリにauthorized_keysを作成します。

.sshディレクトリが無ければ作成してください。また、「.」で始まるファイルはlsでは確認することが出来ず、ls -aとしなければなりません。

cd /home/sakura (ユーザーディレクトリに移動)
mkdir .ssh (.sshディレクトリを作成)
chmod 700 .ssh (.sshディレクトリの権限を所有者だけに限定)
chown -R sakura:sakura .ssh (所有者をrootからユーザに変更)
vi authorized_keys (公開鍵ファイルを作成、編集)

PuTTYgenの「OpenSSHのauthorized_keysファイルに~公開鍵」の部分をコピーして、authorized_keysにペーストして、保存します。

PuTTYgenを閉じてしまった場合は、[変換]->[鍵のインポート]で秘密鍵を指定してください。

image

chmod 600 authorized_keys (権限を所有者だけに変更)

4)サーバのssh設定

サーバ側のssh設定で、鍵認証ログインを許可するように設定します。

vi /etc/ssh/sshd_config

#PermitEmptyPasswords no ⇒ PermitEmptyPasswords no(パスワード無しのログインを禁止)

#RSAAuthentication yes                        ⇒(RSA認証を許可)
RSAAuthentication yes
#PubkeyAuthentication yes                     ⇒(公開鍵認証を許可)
PubkeyAuthentication yes
#AuthorizedKeysFile      .ssh/authorized_keys ⇒(認証鍵ファイルの場所を指定)
AuthorizedKeysFile      .ssh/authorized_keys

#PasswordAuthentication yes ⇒ (rhost認証を無効)
PasswordAuthentication no
#RhostsRSAAuthentication no ⇒ (rhost認証を無効)
RhostsRSAAuthentication no

設定を保存後、設定を反映させるためにsshdをリスタートします。

/etc/init.d/sshd restart

5).Puttyに秘密鍵をセットして接続

image

セッションを指定して、ホスト名またはIPアドレスを入力。セッション一覧の欄には任意の設定名を入力します。

image

[接続]->[SSH]->[認証]を選択し、「認証のためのプライベートキーファイル」に秘密鍵ファイルを指定します。

image

最初の画面に戻って保存をし、開くボタンをクリックします。

image

VPSに鍵認証でログイン出来ることを確認できたら、Rootログインが出来ないように設定を変更します。

vi /etc/ssh/sshd_config

#PermitRootLogin yes ⇒
PermitRootLogin no

設定が完了したら、再度sshdをリスタートします。

/etc/init.d/sshd restart

rootでログイン出来ないことを確認しましょう。

これで、公開鍵認証の設定は完了です。