「SSHサーバーを保護する方法」に関するいくつかのガイドを読みましたが、ServerKeyBits
をデフォルトの768から2048に増やすのは良いことです。
これらのガイドのほとんどは、エントリレベル/初心者のサーバー管理者(私)がスクリプト化されたブルートフォースroot sshログイン試行などから身を守るためのものであり、各セキュリティ対策のポイントを理解しようとしています。
公開鍵ベースの認証が、特にSSH v2でどのように機能するかについて読んでいます。クライアント認証のプロセスで使用されているSSHサーバーのホストキーについては何も見ていません。つまり、クライアントが信頼されていることを証明しているのです。
これは、クライアントが接続しているホストが過去に接続されていたホストと同じであることを確認するためにのみ使用されているようです-詐称者ではありません。
実際には、ホストキーを2048に増やすのはなぜそんなに大きなことなのでしょうか。攻撃者が何らかの方法でプライベートホストキーをブルートフォースで攻撃することを難しくしていますか?攻撃者が秘密のホストキーを見つけてクライアントまたは管理者が偽のホストにログインできるようになったとしても、それは攻撃者にどのような影響を及ぼしますか?
これらのガイドには、設定も含まれています
PasswordAuthentication no
したがって、ユーザーはとにかくパスワードの入力を期待するべきではありません。普段パスワードを入力する必要がないときに、パスワードを入力する必要がないことに気付いていれば、とにかく別のホストキーを盲目的に受け入れるだけではないでしょうか。次に、攻撃者がパスワードを持っている場合、何をしますか?いずれにしても、サーバーではパスワード認証が無効になっているため、ログインできません。私が読んだ内容から、クライアントがクライアントを信頼している場合でも、認証プロセスで攻撃者はクライアントから有用な情報を入手することはできません。サーバーID。
SSH公開鍵認証の仕組みについて、何か重要なことを見逃しているような気がします。長いホスト鍵を持つことがなぜそれほど重要であると思われるのか理解できないためです。どういうわけか、クライアントの資格情報が危険にさらされるのを難しくしていますか?プライベートホストキーが危険にさらされた場合、実際にはどうなりますか?
ありがとう
あなたの質問には重大な混乱がありますが、ここでの回答は指摘していません:ServerKeyBitsはホストキーとは何の関係もありません。実際、SSHプロトコルバージョン1にのみ適用されるため、長年にわたって廃止されており、今後は使用するべきではないため、今日はほとんど関係ありません。
OpenSSHサーバーの設定に精通している場合は、sshd構成設定だけではディスク上のファイルにあるホストキー(例:/ etc/ssh/ssh_Host_rsa_key { .pub})であり、一度だけ生成されます。
プロトコル1の「サーバーキー」は、ホストキーとは異なる2番目のRSAキーであり、転送秘密を実現するために使用されます。これは一時的なものであり、起動時にサーバーによって生成され、定期的に(デフォルトでは1時間に1回)交換され、ディスクに書き込まれることはありません。クライアントはサーバーセッションキーを使用して対称セッションキーを暗号化し、サーバーに送信します。このメッセージは、ホストキーで署名することにより認証されます。プロトコル2では、代わりにDiffie-Hellmanを使用して転送秘密が実装されています。
したがって、攻撃者がキーを回復できる場合、記録されたSSHセッションを読み取るか、現在のセッションを改ざんできるため(セッションの暗号化とMACキーがあるため)、十分に強力なサーバーキーが重要です。そして、以前の回答が指摘したように、RSAキーの768ビットは、今日の標準では非常に短すぎます。
短い回答:ホストキーはサーバーの公開キーであり、このキーは共有シークレット(対称暗号化キー)を確立するために使用されるため、それはブルートフォース攻撃に対抗するのに十分強いことが重要です。
詳細:最初に、非対称暗号化または公開鍵と秘密鍵の暗号化の仕組みを理解する必要があります。各システムには、秘密鍵と公開鍵で構成される鍵ペアがあります。名前が示すように、公開鍵は公開されることを意味します。つまり、セキュリティに影響を与えることなく世界中に配布できます。一方、秘密鍵は秘密にされ、システムのみが使用できるようにすることを意図しています。この設定の基本的な数学的概念は、メッセージが公開鍵で暗号化されている場合、対応する秘密鍵でのみ復号化でき、その逆も同様です。
この非対称暗号化は、対称暗号化を使用するセキュアセッションを確立するためにSSHの場合に使用されます。この対称暗号化の鍵(K_sys
)は、公開鍵と秘密鍵の暗号を使用して交換されます。さらに、クライアントサーバー間のすべての通信は、このK_sysを使用して暗号化されます。
通信のすべての機密性はK_sys
の機密性に依存するため、公開鍵と秘密鍵の暗号化は秘密鍵の共有に使用されるため、安全であることが最も重要です。また、十分な機密性を確保するために、鍵の強度は考慮すべき重要なパラメータの1つです。持つことによって
追加情報:768ビットのRSA鍵は2010年に ブルートフォースに成功 であり、計算の進歩により1024ビットが弱くなることが予測されました今後10年間で。したがって、近い将来、キーの強度を2048に増やすことをお勧めします。
これらのガイドには、設定も含まれています
PasswordAuthentication no
したがって、ユーザーはとにかくパスワードの入力を期待するべきではありません。普段パスワードを入力する必要がないときにパスワードを入力する必要があることに気付いていない場合は、とにかく別のホストキーを盲目的に受け入れるだけではないでしょうか。次に、攻撃者がパスワードを持っている場合、何をしますか?いずれにしても、サーバーでパスワード認証が無効になっているため、ログインできません。
これがまさにパスワード認証を無効にするポイントです。つまり、ユーザーのパスワードを持っている場合、攻撃者はログインできません。特に、安全でないパスワードを持つユーザーアカウントを介してマシンへのアクセスを許可しないようにしようとしています。テストアカウント。