rootユーザーのログイン制御とSSHのポート番号変更とセキュリティに関する施策を行ってきましたが、最後はもっとも強固な対策である鍵認証を使ったログイン設定をしていきます。
公開鍵と秘密鍵使った認証
鍵認証とは、その名の通り鍵となるファイルを使った認証方式で、ちょうど鍵と錠前のように「公開鍵」と「秘密鍵」のペアを合わせることで認証される仕組みになります。このうち「公開鍵」はサーバー側に設置しておき、「秘密鍵」をクライアント側に持っておきます。
秘密鍵を持っているクライアントだけが公開鍵のあるサーバーにログイン(別途パスワードの入力は必要)できるということで、他のPCからのアクセスを防ぐことができます。但し、秘密鍵を盗まれてしまうと、パスワードの入力だけでログインできてしまうのと、紛失してしまうと新たに作成しないとログインできなくなってしまうのでしっかりと管理します。
1. クライアント側で秘密鍵と公開鍵を生成する
1-1. ルートディレクトリに「.ssh」フォルダを作成します(無い場合のみ)
$ mkdir .ssh
1-2. 「.ssh」フォルダのパーミッションを下記の通り変更します。
$ chmod 700 .ssh
1-3. 「.ssh」フォルダに移動して下記コマンドで秘密鍵と公開鍵のキーペアを生成します。その際にパスフレーズも設定しますので、忘れないように控えておきます。
$ cd ~/.ssh/ $ ssh-keygen
1-4. 「.ssh」フォルダに秘密鍵ファイルである「id_rsa」と、公開鍵ファイルの「id_rsa.pub」が生成されているのを確認します。
補足:秘密鍵と公開鍵のキーペアで「id_rsa」「id_rsa.pub」と異なる名前にしたい場合(すでに存在していて名前が同じになる時など)はキーペア作成のコマンド入力後に表示される下記のタイミングでファイル名を変更することができます。
$ ssh-keygen // 通常時 Enter file in which to save the key (/Users/USERNAME/.ssh/id_rsa): /User/USERNAME/.ssh/id_rsa ↓ // ファイル名変更時 Enter file in which to save the key (/Users/USERNAME/.ssh/id_rsa): /User/USERNAME/.ssh/[id_rsaの変更後ファイル名]
これでキーペアが「変更後のファイル名」「変更後のファイル名.pub」になります。
1-5. 公開鍵である「id_rsa.pub」の中身を下記コマンドで表示させて、その中身に書かれている内容を全てコピーします。
$ cat id_rsa.pub
2. サーバー側に公開鍵を設置する
2-1. サーバーへログインして、先ほどと同じくルートディレクトリに「.ssh」フォルダを作成しパーミッションを変更します。最後に「.ssh」フォルダへ移動しておきます。
$ mkdir .ssh $ chmod 700 .ssh $ cd ~/.ssh
2-2. 「.ssh」フォルダ内に「authorized_keys」というファイルを作成します。vimエディタでファイルを作成し、先ほどクライアント側で作成した公開鍵「id_rsa.pub」の中身をペーストして保存します。
$ vim authorized_keys
2-3. 作成した「authorized_keys」のパーミッションを変更します。
$ chmod 600 authorized_keys
2-4. 一旦ログアウトして下記のコマンドを入力し公開鍵を使った方法でログインできるかを確認します。
$ ssh -i .ssh/id_rsa [USERNAME]@[HOSTNAME] -p [PORTNUMBER]
2-5. ログインができれば、rootユーザーにスイッチして以降はユーザー名でのパスワード認証ができないように「sshd_config」フォルダを編集します。vimエディタでファイルを開きます。
$ su - # cd /etc/ssh # vim sshd_config
2-6. 「sshd_config」フォルダ内の下記の項目を次のように変更し保存します。
PasswordAuthentication yes (変更前) ↓ PasswordAuthentication no (変更後)
2-7. SSHサーバーを再起動して変更内容を反映させます。最後に公開鍵認証でログインができ、ユーザー名とパスワードでのログインができなくなっているのを確認します。
# service sshd restart
これでペア鍵を持っているサーバーとクライアント間でしかログインができなくなりました。セキュリティは強くなりましたが、鍵の管理には十分気をつけるようにしましょう。公開鍵認証にあたっての設定は少し難しくてややこしい部分もありますが、一つひとつ進めていくとわかりやすいかと思います。
(参考)
「よく分かる公開鍵認証」~初心者でもよくわかる!VPSによるWebサーバー運用講座(2)
[shortcodefile file=’shortcode-developmentlab-001′]