さくらVPSでセキュリティ関連の設定をする(SSH編)

さくらインターネットVPSSSHの設定をしたときのメモ。サーバーのOSはCentOS、クライアントはWindows

VPSの契約が完了すると「[さくらのVPS] 仮登録完了のお知らせ」というメールが届く。そこに書かれているIPアドレス、初期パスワードを使う。

SSH関連で設定すること

  1. WEBのVPSコントロールパネルからrootのパスワードの変更と、ログインユーザーを作成する
  2. RSA公開鍵のファイルを作成してサーバーに配置する
  3. RSA公開鍵認証を有効にする設定、rootでのログインを禁止する設定をする

1. WEBのVPSコントロールパネルからrootのパスワードの変更と、ログインユーザーを作成する

(1) 「VPSコントロールパネル」にログインしVPSを起動する

仮登録完了のメールに書いてある通り、初期状態ではVPSは停止状態になっているので、WEBページのUIからVPSを起動する。以下のURLにアクセスして、メールに書いてあるIPアドレスとパスワードを入力。
https://secure.sakura.ad.jp/vpscontrol/

「仮想サーバ操作」で、[起動]ボタンを押す。ステータスが「起動中」になったことを確認。

(2) rootのパスワードを変更する

SSHクライアントにIPアドレス(メールに書いてある)、アカウント(root)、パスワード(メールに書いてある)を入力してSSH2でログインする。そして、passwdコマンドでrootのパスワードを変更する。

[root@server ~]# passwd
Changing password for user root.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
(3) 通常使うユーザーを作成する

adduserコマンドでユーザーを作成する。

# -D オプションで、デフォルトでどんなユーザーが作られるか確認
[root@server ~]# adduser -D
GROUP=100      # 100はusersグループを意味する。「cat /etc/group」コマンドで確認できる。
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# スーパーユーザー(root)特権を得ることのできるグループを設定
[root@server ~]# visudo
...
# この行のコメントアウトを外して保存
%wheel        ALL=(ALL)       ALL
...
# ユーザーの追加とグループ、パスワードの設定
[root@server ~]# adduser ユーザー名
[root@server ~]# usermod -G wheel ユーザー名 # wheelグループへ追加
[root@server ~]# id ユーザー名               # グループの確認
uid=500(ユーザー名) gid=500(ユーザー名) groups=500(ユーザー名),10(wheel)
[root@server ~]# passwd ユーザー名
Changing password for user ユーザー名.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

これで、いったんexitコマンドでサーバーとの接続を切って、新しく作成したユーザーでログインできれば成功。

2. RSA公開鍵のファイルを作成してサーバーに配置する

パスワード認証だと外部からの攻撃でクラックされる可能性があるため、安全性の高いRSA公開鍵認証を使えるようにする。

(1) クライアント(ローカル環境)でRSA鍵を作成する

SSHクライアント(自分の場合はPoderosa)のメニューから、SSH鍵を作成する。アルゴリズムRSA、ビット数は2048、適当なパスワードを指定して実行。「秘密鍵を名前をつけて保存」でsitename.ppk、「OpenSSH形式で公開鍵を名前をつけて保存」でsitename-openssh.pubというファイル名で保存。

(2) サーバーに公開鍵のファイルを配置する

サーバーで以下のコマンドを実行する。

$ mkdir ~/.ssh                    # 鍵を配置する.sshディレクトリを作成
$ chmod 700 ~/.ssh                # 読み書き実行権限を付ける
$ cd ~/.ssh
$ touch authorized_keys           # 公開鍵のファイルを作成
$ chmod 600 ~/.ssh/authorized_keys# 読み書き権限を付ける

そして、authorized_keysファイルを開き、(1)で作成したsitename-openssh.pubの内容をコピペして保存する

$ vi authorized_keys # 
  ssh-rsa XXXXXXXX... # (1)で作成したsitename-openssh.pubの内容をコピペして保存する

3. RSA公開鍵認証を有効にする設定、rootでのログインを禁止する設定をする

(1) sshd_configを編集する
$ su -                            # rootになる
# vi /etc/ssh/sshd_config         # sshの設定を編集
  PermitRootLogin no              # rootでのログインを禁止
  
  RSAAuthentication yes           # RSA認証を許可
  PubkeyAuthentication yes        # 公開鍵認証を許可
  AuthorizedKeysFile      .ssh/authorized_keys # 認証鍵ファイルを指定
  
  PermitEmptyPasswords no         # パスワードなしのログインを禁止
  PasswordAuthentication no       # パスワード認証を禁止
  
# /etc/rc.d/init.d/sshd restart   # SSHサービスを再起動して設定を反映
(2) SSHクライアントからログインしてみる

SSHクライアントの新規接続で、認証方法を「公開鍵」に、鍵ファイルとして秘密鍵ファイルのパス(sitename.ppk)を指定、RSAの鍵を作成したときのパスワードを入力してログインできれば成功。root+パスワードでログインできないことも確かめる。

設定にミスがあると公開鍵認証もパスワード認証もできなくなる可能性があるため、動作確認をするときは、現在の接続を残したままSSHクライアントで新しい接続を作成して試すとよい。