CentOSでSSHへのブルートフォースアタック(総当り)への対策3

SSHを公開鍵認証方式にしてセキュリティを向上

通常、サーバーにSSHで接続するには、ユーザー名とパスワードを入力して認証する方式になっている。それは、極端な話ユーザー名及びパスワードを知っていれば誰でも接続出来るという事だ。公開鍵認証にしてしまえば、秘密鍵を持っていないユーザーのログインは全て弾けるので、パスワード認証方式と比べるとセキュリティは高い。

公開鍵・秘密鍵を生成する

公開鍵・秘密鍵の生成は、サーバー上もしくは自分のマシンで行う必要がある。自分のマシンがMacまたはLinuxであれば、ターミナルでコマンドを打つだけで鍵生成が可能なのだが、windowsの場合は現状だと他のツールに頼らないといけない(windows10がbashに対応するまで我慢)ので、今回はサーバー上で鍵を生成する。

公開鍵認証をしたいユーザーでログインし、下記コマンドを実行する。

赤字1行目は、「このディレクトリに作成していい?」という質問なので何も考えずEnter。

赤字2,3行目は、鍵生成にあたってのパスコードを入力を求められる。入力しておくと、公開鍵認証の際にもパスコード入力を求められるようになる。面倒なら不要だが、セキュリティを少しでも向上させる為には出来る限り入れよう。

生成された秘密鍵をダウンロードする

さきほど鍵が生成された /home/xxxxxxxx/.ssh/ 以下を見てみると、id_rsa と id_rsa.pub という名前のファイルがある。

id_rsa が秘密鍵、id_rsa.pub が公開鍵だ。クライアント側に必要なのは秘密鍵なので、ftpかsftpでダウンロードする。ダウンロード後は、サーバー上に秘密鍵は不要なので削除する。

生成した公開鍵を authorized_keys に追加

/etc/sshd/sshd_config では、公開鍵は .ssh/authorized_keys を見るようになっている。sshd_config の設定を変更して id_rsa.pub を見るように変更しても良いのだが、今回は id_rsa.pub を authorized_keys に追加する

鍵認証でのログインを許可する

鍵を作っただけではまだ鍵認証は使えない。sshd_configの設定を変更して公開鍵認証を許可する

変更したら、sshd を再起動する

ダウンロードした秘密鍵で、サーバーに接続出来る事を確認する

別記事でRLoginとWinSCPに秘密鍵を設定して、公開鍵認証方式でサーバーに接続する方法を記述する。(サイト管理人の愛用ソフトなので)

パスワード認証方式でのログインを不許可とする

公開鍵認証でサーバーに接続出来る事を確認したら、パスワード認証方式での接続を不許可にし、公開鍵認証のみ接続出来るようにする。(※公開鍵認証で接続出来る事は絶対に確認!パスワード認証方式を不許可にした後に公開鍵認証も出来なかった、となると誰もサーバーにログイン出来なくなる)

変更したら、sshd を再起動する

以上で鍵認証方式の設定は完了。

ここまでするとブルートフォースアタック(総当り)の心配は無くなるが、今度は秘密鍵の保管に不安を覚える。鍵生成の際にパスワード設定していれば、秘密鍵を盗み出されたからと言って即終わりとはならないが、そんな事にならない様にしっかりと保管しよう。もし紛失などしてしまったら、誰もサーバーにログイン(以下略)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする