SSHキー認証がパスワード認証よりも優れているのはなぜですか?


45

これは概念的なものであり、技術的な問題ではありません。SSHキーで使用される暗号化は通常のパスワードよりもはるかに強力であることは理解していますが、なぜそれがより安全であると考えられるのかはわかりません。

私が読んだほとんどのチュートリアルでは、パスワード認証ではなくSSHキー認証を使用することをお勧めします。しかし、私の理解では、事前に承認されたクライアントマシンにアクセスできる人は誰でもサーバーに接続できるということです。つまり、SSHキーによって提供されるセキュリティレベルは、物理的なセキュリティレベルと同じくらい強いということです。クライアントマシン。

たとえば、電話機にSSHキーを設定して自宅のマシンに接続した場合、電話機を紛失して誰かがロックを解除できた場合、自宅のマシンに接続できます。自宅のマシンから電話機のキーを削除できることは知っていますが、クライアントデバイスが紛失/侵害されたことに気付くまで脆弱です。

私は何かを誤解しましたか、またはそれらの有効な懸念はありますか?


10
両方を行う-パスワードが必要なキー。この方法では、1つだけでなく2つのものを識別する必要があります。また、紛失したキーを非常に簡単に無効にし、複数の認証キーを使用してそれをさらに制御できます。
フォシ

2
これはおそらくセキュリティに移行する必要があります。

10
@DKGasser:いいえ、そうすべきではありません。ここで完全に有効な質問です。何かを別のSEサイトに移動できるからといって、それがそうであること意味しません。
ワッファー

4
@DKGasser:それそのサイトに行くことができます、それは完全に有効な質問です。しかし、ここでも有効な質問なので、移行する理由はありません。この質問がトピックから外れている場合、はい、そこに移行できます。ただし、このサイトでは完全にトピックになっているため、移行しないでください。
ワッファー

3
そして、忘れないでください、SSHキーはネットワーク上を決して行きません。リモートサーバーは、パスワードとは異なり、ネットワーク経由で送信されるだけでなく、リモートサーバーに送信されるキーを取得しません。次回使用するパスワードがわからない場合は、他のアカウントで使用されている可能性のあるパスワードをいくつか試してみてください!そのサーバーに送信したパスワードは?
9mjb 14年

回答:


40

SSHサービスでパスワードベースの認証が許可されている場合、インターネットに接続されたSSHサーバーは、ボットネットがユーザー名とパスワードを推測しようとするため、昼夜を問われます。ボットネットは情報を必要とせず、一般的な名前と一般的なパスワードを試すだけです。パスワードがqwerty123であるjohnという名前の人が非常に多くいます。他のものとは別に、これはログを詰まらせます。

SSHサービスで公開キー認証のみが許可されている場合、攻撃者はサーバーに保存されている公開キーに対応する秘密キーのコピーを必要とします。ランダムな攻撃を行うだけでなく、ユーザーの事前知識が必要であり、SSHサーバーの許可ユーザーのPCから秘密鍵を盗むことができなければなりません。

秘密鍵が長いパスフレーズで保護されることが多いという事実は、二次的な意味があります。

更新:

コメントが指摘しているように、そして私が経験したように、SSHサービスをポート22から大きい番号のポートに移動すると、ログに表示される不正なログイン試行の数に劇的な違いが生じます。これはやりがいがありますが、私はそれをあいまいさによるセキュリティの一形態(セキュリティの誤った感覚)と見なしています-遅かれ早かれボットネットは遅いステルスポートスキャンを実装するか、意図的に標的にされるでしょう。準備する方が良い。

私は常に秘密鍵を保護するために長いパスフレーズを使用します。これは、紛失または盗難されやすいモバイルデバイスでは特に重要だと思います。

また、http://xkcd.com/538/

セキュリティ


7
+1。ただし、公開キー認証は、接続しようとするボットでログが詰まることに対して何もしません。それを停止するには、SSHサーバーを高いポート(22ではなく9876)で実行します。そして、彼らは彼らが最初にあなたをポートスキャンする必要がある、とボットは、一般的にその多くの時間を無駄にしないあなたを打つしたい場合は... SSHサーバの多くが22である
例Umbris

3
あなたはログサイズをからかっていません-私の/ var / log / secureはメガバイトのログイン試行からキロバイトになりました(私のログインレコードだけで)。
ジョンC

2
+1興味深いことに、私はパスワードベースの認証で実行しました。..10年後.. lol ..確かに、公開されているsshポートは決してポート22ではありません。彼らができるポート??良い情報、ありがとう。
ジェームズTスネル

2
@ExUmbrisは、ポートを変更するのではなく、fwknopの使用を検討する必要があります:シングルパケット認証とポートノッキング。ここでの利点は明らかです。SPAでノックしてポートへのアクセスを許可されていない限り、ポートがどこでも開いていることを誰にも見られないようにすると、nmapやそれを悪用します。これは、あいまいさによる単純なセキュリティよりもはるかに優れています。
-aculich

@aculichポートを変更することは、「あいまいさによるセキュリティ」ではありません。私がやっていることは、ログが警告でいっぱいになるのを防ぐことだけです。ただし、SPAを使用したセキュリティの改善については、有効なポイントがあります。
Ex Umbris

8

ロジックは、パスワードよりもSSHキーの組み合わせがはるかに多いため、推測するのがはるかに難しいということです。SSHキーを使用すると、パスワード認証を無効にすることもできます。つまり、インターネット上で行われる自動化された攻撃のほとんどは役に立たなくなります。

物理的なセキュリティに関しては、パスワードを保存することと、デバイスが紛失または盗難にあった場合に暗号化されていないSSHキーを保持することとの間に違いはありません。唯一の利点は、誰もパスワードを持っていないことであり、理論的にはすべてのデバイスが異なるSSH証明書を持っていることを確認できるので、電話用に無効にすることができます。

SSHキーをパスワードで保護することも可能だと思います。


ただし、sshdに対するパスワードの総当たり攻撃を検出して保護することができます(たとえば、fail2banによって)一方で、秘密キーを盗んだユーザーは、コンピューター(またはクラスター)ができる限り速くパスワードを試すことができることに注意してくださいそれら。これはまだ大した攻撃はありませんが、合理的なfail2banポリシーと比べてオッズを劇的に改善しました。
Xiong Chiamiov 16


1

また、キーボードは「肩越しに」監視されているため、パスワードが危険にさらされる可能性があります。さらに、多くの場所で同様のパスワードを使用することは、特に潜在的なキーロガーを備えた安全性の低いコンピューターでパスワードを使用する場合には弱点です。

コンピューターが盗まれた場合、暗号化されていないキーがハードディスクから読み取られる可能性があるので、パスワードで暗号化してください。

お使いのコンピューターがマルウェアに感染した場合、あなたは関係なく詰め込まれます。-誰かが暗号化されたキーを取得し、パスワードをキーログできます。


1
注:ただし、プログラムで(つまり、スクリプトで)使用する場合、パスワードでキーを暗号化することはできません。
TheStoryCoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.