SSHホストキーをローリングする方法は?

SSHホストキーをローリングする方法は?

できるだけ早く2048ビットキーを段階的に廃止することをお勧めしますので、SSHサーバーを2048ビットRSAキーからより大きなキーにアップグレードしたいと思います。

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

ホストキー /etc/ssh/ssh_host_rsa_key            (以前の2kビットキーが優先されます)
ホストキー /etc/ssh/ssh_host_rsa4096_key        (新しいより大きなキー秒)

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

これはSSHホストのキーロールオーバーを不可能にするように見えますが、セキュリティのためにキーのアップグレードがしばしば必要であることを考慮すると、これが真であるとは信じられません。

鍵を交換できることを認識しており、各クライアントは古い鍵をssh-keygen -R削除するために実行し、新しい鍵を手動で確認して受け入れる必要があります。しかし、これは特に多くのクライアントが接続されているか管理されていない場合は本当に痛いです。すべての顧客です。言うまでもなく、クライアントを管理しないと、クライアントが実際にホストキーを確認せずにただYを押す可能性が高くなります。したがって、セキュリティを強化しようとすると、実際に中間者攻撃にさらされる可能性があります。 - 中間者攻撃と反対です。

SSHホストキーをアップグレードする方法はありますか?つまり、クライアントはより安全な新しいキーを学ぶ必要があります(そして古いキーは学ばないことを願っています)。そして、ホストキーを提供せずに中間子警告が変更されました。

ベストアンサー1

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

したがって、プロセスは次のようになります。

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

十分に新しい顧客が新しいキーを得ることができます。この機能はデフォルトで有効になっていません。それはおそらく非常に新機能であり、非常に迅速に明らかになったいくつかのセキュリティ問題があるからです。でも今は使っても大丈夫そうです。

おすすめ記事