鯖memo

主にDebianを使って色々と遊んでみます

SSHの設定をする - さくらのVPSでWordPressを動かしてみる(3)

f:id:log134:20140116134512j:plain

さくらのVPSにDebianをインストールして不要なサービスを停止し、最低限の初期設定をするところまでやりました。
今回はサーバへセキュアに接続するためSSH周りの設定を行います。

SSHで第3者に接続されてしまうと、OSの再インストールレベルの修復が必要になってしまうので、しっかりと設定しておきたいところです。

クライアントマシンはMacを使い、鍵方式でサーバへ接続する方式を採用したいと思います。
最近のWindowsがどうなっているの不明ですが、Winの場合、SSHでサーバに接続するには、PuttyやTetatermなどのターミナルソフトが必要になります。

今回の設定

ひとまず以下の設定を行うことにします。

  • SSHで使用するポートをデフォルトの22番から任意のポートに変更
  • rootでのログインを禁止する
  • rootに昇格できるユーザーを制限する
  • パスワードでのログインを禁止する

接続IPの制限等さらに安全度を高めることもできますが、最低限これぐらいはやっておいた方がいいでしょう。

サーバ側の準備

インストール時にsakurauserという一般アカウントを作成したので、こいつをログイン用のアカウントとして使います。

wheelグループの作成

wheelグループに所属するアカウントのみがrootに昇格できるように設定します。
Debianは初期状態でwheelグループが存在しないのでグループを作成する必要があります。

groupadd -g 11 wheel
usermod -aG wheel sakurauser

これでsakurauserがwheelグループに追加されました。

wheelグループのみがrootに昇格出来るように設定

/etc/pam.d/su というファイルの「auth required pam_wheel.so」という行のコメントアウトを削除するだけですが、面倒なので末尾に追加してしまいます。

echo "auth       required   pam_wheel.so" >> /etc/pam.d/su

sshdの設定ファイルの編集

設定ファイルを編集し、rootでログインを禁止します。
/etc/ssh/sshd_config のPermitRootLogin yesをnoに変更するだけです。
これもファイルを開くのが面倒なので置換してしまいます。

sed -i.orig "s/^PermitRootLogin yes/PermitRootLogin no/g"  /etc/ssh/sshd_config

設定を反映させるためにsshdを再起動させます。

/etc/init.d/ssh restart

これでrootでログインをすることができない状態になりました。

ログインユーザの設定

sakurauserになって鍵方式でのログイン準備を行います。
.sshというディレクトリ(フォルダ)を作り、他のユーザからいじれないようにパーミッションを変更します。

# su sakurauser
$ mkdir ~/.ssh/
$ chmod 700 ~/.ssh/

ここまで作業したら、次はMac側(ローカル側)での作業になります。

Mac側での準備

Mac側での設定をまず行います。

暗号鍵の作成

Macでターミナルを起動し、鍵を作成します。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/********/.ssh/id_rsa): sakvps_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in sakvps_id_rsa.
Your public key has been saved in sakvps_id_rsa.pub.
The key fingerprint is:

秘密鍵の名前はsakvps_id_rsaという名前にしました。
名前はつけなければ、id_rsaという鍵が作成されます。

パスフレーズにはお好きなパスワードを入力してください。

公開鍵をサーバへアップロード

サーバへauthorized_keysという名前で公開鍵をアップロードします。
scpを使いますがサーバ側でファイルを作成してコピペでも問題ありません。

scp sakvps_id_rsa.pub sakurauser@xxx.xxx.xxx.xxx:/home/sakurauser/.ssh/authorized_keys

sakurauserは自分のユーザー名にxxx.xxx.xxx.xxxはさくらVPSのIPに置き換えて下さい。
パスワードを入力すればサーバ側に公開鍵がアップロードされているはずです。

サーバ側での作業

再度サーバ側での作業を行います。
鍵方式のみでのログインに変更するので、以降パスワードでのログインができなくなります。

公開鍵のパーミッションを変更

sakurauserで以下のコマンドを実行してファイルのパーミッションを変更します。

$ chmod 600 /home/sakurauser/.ssh/authorized_keys

sshdの設定を変更し、使用ポートの変更とパスワードでのログインを禁止する

rootユーザーになって作業を行います。

$ su -
# vi /etc/ssh/sshd_config

sshd_configの該当行を下記の様に編集します。

Port 20022
PasswordAuthentication no

ポート番号は10000〜65535の間で好きな番号を選びます。
sshdを再起動して設定完了です。

/etc/init.d/ssh restart

これで22番ポートを使ってのSSH接続とパスワードでのログインができないサーバになりました。

Mac側ので作業

Macからのログインを簡略化します。
ターミナルから下記のファイルを編集します。

$ vi ~/.ssh/config

以下の内容を追加します。
HostnameはIPアドレス、Userにはログインユーザー名、Portは変更したポート番号、IdentityFileには秘密鍵へのパスを自分の環境に置き換えて下さい。

Host svps1
        HostName xxx.xxx.xxx.xxx
        User sakurauser
        Port 20022
        IdentityFile ~/.ssh/sakvps_id_rsa

こうすると以降は下記のみで、サーバへ接続することが可能です。
いちいちポート番号やIPなどを指定せずに接続ができるので楽です。

ssh svps1

ここまでで、ひとまず簡単には第3者からログインされづらいサーバ環境ができあがりました。
次回からやっとWordPress周りの環境構築になりそうです。