SSH接続の際、パスワード認証だけの場合、ブルートフォース(総当たり)攻撃で簡単に突破される可能性がある。
実際、さくらVPSを導入した当初、外部からのアクセス試行が何千回と発生していた。
IPで制限したり、N回失敗で無効化にする方法もあるが、今回はより堅牢な方法として公開鍵認証を導入する。
公開鍵・秘密鍵を作成する
公開鍵と秘密鍵のペアをログイン元の端末で作成する。
$cd ~/.ssh
$ssh-keygen -t rsa -b 4096 -f <ファイル名> -C <アドレス>
上記を実行すると、パスフレーズを求められるので入力する。
最終的に、
<ファイル名>という秘密鍵、
<ファイル名>.pubという公開鍵が生成される。
秘密鍵はなくしたり端末が故障すると一発で終わりなので、バックアップ方法も注意すること。
公開鍵を配布する
rootユーザであればVPSのコンソールから可能であるが、rootユーザでのログインは非推奨なので、直接サーバに配布を行う。
#任意のユーザでログインをする
$ssh sample@sample.vs.sakura.ne.jp
#ログイン先で公開鍵の置き場所を作成する
$vi ~/.ssh/authorized_keys
#<ファイル名>.pubの中身をコピペする
公開鍵の名前はauthorized_keysにし、権限を600に変更する。
権限を変更しないと、正しく認証できないため注意。
#公開鍵の権限を変更する
$chmod 600 authorized_keys
パスワード認証の無効化設定をする
最後に、sshdを修正し、rootログインの無効化・パスワード認証の無効化を行う。
#サーバー側で実行
$vi /etc/ssh/sshd_config
#以下を設定する
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
X11Forwarding no
設定を反映のためsshdを再起動する。
$sudo systemctl restart sshd
これで設定は完了。以降は以下でssh接続を行う。
ssh -i ~/.ssh/<秘密鍵> <ユーザ名>@sample.vs.sakura.ne.jp
sshの際に、パスワードを求められるが、秘密鍵を生成した時に求められたパスワードを入力する。
コメント