OpenSSH 構成のガイドのほとんどでは、パスワード認証を無効にしてキーベースの認証を使用するようにアドバイスしています。しかし、私の意見では、パスワード認証には、キーなしでどこからでも接続できるという大きな利点があります。常に強力なパスワードを使用して使用する場合、これはセキュリティ リスクにはなりません。それとも、リスクになるのでしょうか?
答え1
パスワードベースまたはキーベースの認証にはそれぞれ長所と短所があります。
例えば、キーベースの認証は少ないパスワード認証よりも安全です。他の場合には、パスワードベースのほうが安全性が低くなります。ある場合には、どちらか一方がより便利で、他の場合には、より不便です。
結局のところ、鍵ベースの認証を行うと、しなければならないパスフレーズでキーを保護します。ssh-agent を実行しない限り (ssh-agent を使用すると、パスフレーズを毎回入力する必要がなくなります)、利便性の面では何のメリットもありません。セキュリティは議論の余地があります。攻撃ベクトルはサーバーから、あなた、またはあなたのアカウント、またはあなたの個人用マシンに移行しました (...) - これらは、破られやすい場合とそうでない場合があります。
これを決定するときは、固定観念にとらわれずに考えてください。セキュリティの面で利益が得られるか損失が出るかは、環境の残りの部分やその他の対策によって決まります。
編集: ああ、ホームサーバーについて話しているのを今知りました。私も同じ状況でした。「パスワード」か「キーが入ったUSBスティック」を常に持っていました。私は前者を選びましたしかしSSH リスニング ポートを 22 以外のポートに変更しました。これにより、ネットワーク範囲全体をブルート フォース攻撃する下手なスクリプト キディをすべて阻止できます。
答え2
~/.ssh/authorized_keys
SSH キーを使用すると、パスワード ログインと比べて 1 つのユニークな機能があります。許可されるコマンドを指定できます。これは、サーバー上のファイルを変更することで実行できます。
例えば、
command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
特定のキーを持つコマンド「/usr/local/bin/your_backup_script.sh」のみを許可します。
キーに許可されるホストを指定することもできます。
from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
あるいは、2つを組み合わせることもできます。
from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...
キーを使用すると、特定のアカウントのパスワードを明かすことなく、あるユーザー (たとえば、コンサルタント) にサーバーへの一時的なアクセスを許可することもできます。コンサルタントが仕事を終えたら、一時的なキーを削除できます。
答え3
ネットワーク内からのパスワード認証のみを許可することで、両方の長所を活かすことができます。 の末尾に以下を追加しますsshd_config
。
PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
PasswordAuthentication yes
答え4
SSH キーは、パスワードに対する中間者攻撃を防ぎます。
キーを使用してログインしようとすると、サーバーは公開キーに基づいてチャレンジを作成し、それをクライアントに送信します。クライアントはそれを復号化し、送信する適切な応答を作成します。
あなたの秘密鍵はサーバーに送信されることはなく、傍受している人は、その単一のセッションを傍受する以外は何もできません。
パスワードがあれば、あなたの資格情報を入手することができます。
私の解決策は、USB キーの暗号化されたパーティションに適切な形式のポータブル SSH キーを用意することです。これにより、紛失した場合にキーを簡単に取り戻すことができます。
アクセスできるサーバーを制限し
ながらも、持ち歩くことができます。
マウントソフトウェアのインストールは面倒ですが(truecrypt)