ksaitoの日記

日々試したことの覚え書き

SSHブルートフォース攻撃が増加、SANSが紹介した対策をやってみる(その4)

その4は、"PasswordAuthenticationを禁止に設定して鍵を利用する"です。

パスワードでログインできることを確認する

設定前に確認してみます。

$ ssh localhost
user@localhost's password: 
$ logout
Connection to localhost closed.
$

パスワードでログインできました。

パスワードでのログインを禁止する

下記のパラメータを設定するだけです。

$ sudo bzr diff sshd_config | grep Auth | grep Pass
-#PasswordAuthentication yes
+PasswordAuthentication no
$ sudo /etc/init.d/ssh restart
[sudo] password for user: 
 * Restarting OpenBSD Secure Shell server sshd
   ...done.
$ ssh localhost
Permission denied (publickey).
$

接続できるようにする

接続するためには、キーペアを作成して公開鍵を.ssh/authorized_keysに設定する必要があります。

$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+--[ RSA 2048]----+
|   .o+*+.        |
|     . . .       |
|      . + +   E  |
|     . o .   .   |
|      = Ss   .    |
|     * * ..     |
|      B +. .      |
|       +        |
|        . .       |
+-----------------+
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys 
$ ssh localhost
Enter passphrase for key '/home/ksaito/.ssh/id_rsa': 
$

公開鍵のコピーは、ssh-copy-idコマンドを使うと簡単ですが、この設定をした場合、パスワード認証が使えないのでエラーとなってしまいます。

$ ssh-copy-id localhost
Permission denied (publickey).
$

考察

この方法は、コンソールに直接ログインして公開鍵をコピーすることが必須となります。
パスワード認証をしないのでブルートフォース攻撃を無効にします。
秘密鍵パスフレーズは、個人の管理なので秘密鍵を不用意にコピーしたりパスフレーズを忘れた場合は、設定し直しになります。