国内の衆議院サーバへの不正アクセス、国土地理院サーバへの不正アクセス等、公的機関や民間企業のサーバに対する不正アクセスが相次いでいます。国土地理院のサーバはブルートフォースアタック(総当たり攻撃)でしたので、サーバのセキュリティ設定次第では攻撃が防げたと思います。
今回はSSHの設定について書こうと思います。まずは、設定するサーバにSSHでログインします。2つウィンドウを起動しておいたほうが便利です。1つは設定画面、もう1つは何かあった時のバックアップです。設定を間違えてsshd restartなどやってしまい、セッションを切断した場合は二度とログインできなくなってしまいますので複数ウィンドウを立ち上げて設定しましょう。
ここではTera Term Version 4.71での作業とします。
1.パスワード認証から鍵認証へ変更
1-1.Tera Termのメニューから[設定(S)]⇒[SSH鍵生成(N)…]を選択します。下記の画面が表示されます。
1-2.[生成(G)]ボタンをクリックします。下記の画面(鍵を生成しました。メッセージ)が表示されます。
1-3.[公開鍵の保存(C)]ボタンをクリックし、id_rsa.pubとして保存します。
1-4.[鍵のパスフレーズ]、[パスフレーズの確認]にパスワードを入力し、[秘密鍵の保存(P)]をクリックします。ファイル名はわかりやすい名前をつけておきましょう。ここでは、test-keyとして保存します。
1-5.「1-3」で保存したid_rsa.pubをテキストエディタで表示し、内容を全てコピーしておきます。
1-6.SSHでサーバにログインし、ホームの中に.sshディレクトリに移動(なければ作成)し、authorized_keysファイルを作成します。
$ cd .ssh $ touch authorized_keys $ chmod 600 authorized_keys
.sshディレクトリがない場合は下記のように作成します。
$ mkdir .ssh $ chmod 700 .ssh
1-7.authorized_keysに「1-5」でコピーした内容を保存します。「1-5」~「1-7」までは、単純にローカルのid_rsa.pubの中身をサーバの.ssh/authorized_keysにコピーしているだけです。authorized_keysにコピーし終わったらid_rsa.pubは削除しても問題ありません。
$ vi authorized_keys
1-8.rootで作業をします。sshd_configの中身を書き換えてパスワード認証を拒否し、鍵認証に変更します。sshd_config内の先頭に# がついている項目については#を外して下記の設定にします。PasswordAuthentication noでパスワード認証を拒否、その下の3行で鍵認証の設定を行なっています。
# vi /etc/ssh/sshd_config
PasswordAuthentication no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
1-9.上記の設定でsshdを再起動します。これでパスワード認証から鍵認証に変わりましたので、Tera Termでログインします。ユーザ名、パスフレーズはログインユーザの情報を入力し、「RSA/DSA鍵を使う」にチェックを入れ[秘密鍵(K)]は「1-4」で作成したtest-keyを選択して「OK」ボタンをクリックします。ログインできることを確認します。
# sshd restart
次に、もう一度Tera Termを起動し、「プレインテキストを使う(L)」を選択し、ユーザ名・パスフレーズを入力してから「OK」ボタンをクリックします。「認証に失敗しました」と表示されればOKです。
1-20.ログの確認をします。ログは/var/log内にsecureがありますので、そちらを表示します。
# tail /var/log/secure
下記が2回のログインで、Accepted publickeyと表示がありますので鍵認証が有効になっていることが確認できます。2回目のログは秘密鍵を使わずにログインしようとした場合のログで、失敗していることがわかります。
Oct 31 10:32:52 server sshd[1111]: Accepted publickey for testuser from ***.***.***.*** port 11111 ssh2 Oct 31 10:32:54 server sshd[1112]: Received disconnect from ***.***.***.***: 2: disconnected by server request
# 追記
1-6の.sshディレクトリ、authorized_keysファイルのパーミッションを追加しました。
はじめまして、YOU-KAと申します。
手順1-6.で作成するディレクトリとファイルのパーミッションには注意が必要ですね。
作っただけではログインできずハマッてしまいました。
YOU-KAさん
手順1-6のパーミッションの件ありがとうございました。
.sshのパーミッションは700、authorized_keysは600ですね。
追記しておきます。
ピンバック:SSHのセキュリティ設定(Port番号変更等) | 菊地崇仁ブログ「ポイ探社長のブログ」
ピンバック:Tera Term MenuでPortを指定してログイン | 菊地崇仁ブログ「ポイ探社長のブログ」
ピンバック:iMacにSSHでログインする | 菊地崇仁ブログ「ポイ探社長のブログ」