SSHホストキーをロールオーバーする方法は?


17

推奨は2048ビットキーをすぐに段階的に廃止することなので、sshサーバーを2048ビットRSAキーからより大きなキーにアップグレードしようとしています。

次のように、新しいキーを生成し、それをsshd構成に追加しました。

HostKey / etc / ssh / ssh_host_rsa_key             (古い2kビットのキーが最初) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (新しい大きなキー2番目

再起動後sshd、ホストにsshしますが、IDが変更されたという警告は表示されませんが、新しいものはにキャッシュされません~/.ssh/known_hosts。行を逆の順序で配置すると、IDが変更されたという警告が表示されます。同様に、ed25519キーを追加するとき、どの順序で入力しても、クライアントは既知のホストファイルに新しいキーを追加しません。

これにより、SSHホストキーのロールオーバーが不可能になっているようです。しかし、セキュリティを考慮すると、キーのアップグレードが定期的に必要になるため、実際にはそうではないと考えるのは困難です。

キーを交換するだけで、すべてのクライアントを実行ssh-keygen -Rして古いキーを削除し、新しいキーを手動で確認して受け入れる必要があることはわかっています。しかし、特に多くのクライアントが接続している場合や管理していない場合すべてのクライアント。言うまでもなく、クライアントを管理しない場合、実際にホストキーを確認せず、代わりに単にYを押す可能性が非常に高いので、セキュリティを改善しようとすると、実際にman-in-代わりに中間攻撃。

SSHホストキーのアップグレードを機能させる方法はありますか?つまり、クライアントは新しいより安全なキーを学習する必要があります(また、できれば古いキーを学習しないでください)。また、ホストキーを変更せずに、中間者警告を変更しました。


これを見てください。現在必要なものに対するソリューションを提供するものではありませんが、将来の最終目標を達成するのに役立つ場合があります。
rda

回答:


14

ホストキーのローテーションはOpenSSH 6.8以降でサポートされています(このバージョンではクライアントとサーバーの両方がサポートを追加します)。

したがって、プロセスは次のように動作するはずです。

  • HostKey newkey(既存のキーの後に)オプションで新しいキーを生成して追加します/etc/ssh/sshd_config
  • 再起動 sshd
  • クライアントはUpdateHostKeys yes、構成でセットアップする必要があります(グローバルまたはホストごと)
  • 接続しているクライアントはすべての新しいキーを取得します
  • しばらくしてから(数か月?)、古いキーを削除してsshd_config再起動できますsshd
  • クライアント(移行期間中に接続したクライアント)には既に新しいキーがあり(古いキーは削除されません。これはここでの唯一の問題です)、MitM攻撃の警告は表示されません。

新しい十分なクライアントは、新しいキーを取得できます。この機能はデフォルトでは有効になっていません。これはおそらく非常に新しく、すぐにセキュリティ上の考慮事項がいくつか示されたためです。しかし、最近では、それを使用しても問題ないはずです。


-4

sshdは常に最初の行を使用するため、削除してからsshdを再起動します。


1
...その結果、怖いホストキーが警告を変更しました。クライアントに新しいキーを学習させる(および古いキーを段階的に廃止する)ことで、それを回避しようとします。
デロバート

あなたが正しいです。一度に2つの異なるキーを使用することはできません。sslはtlsではありません。変更するだけの重要な追加機能はありません。
IPOR Sircer

4
SSLでもTLSでもありません。このプロトコルは複数のホストキーをサポートしています。たとえば、以前はすべてのユーザーがRSAキーとDSAキーの両方を持っていました。現在、通常はED25519、ECDSA、およびRSAキーです。
デロバート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.