web-dev-qa-db-ja.com

プライベートSSHキーのパスフレーズの有効期限/強制変更

好奇心から、そしてこれがまったく可能かどうかをチェックする:

標準ツールを使用して、ssh秘密鍵のパスフレーズに有効期限[のみ]を割り当てる方法、または秘密鍵自体を変更せずにパスフレーズの有効期限と変更を強制する方法はありますか? (私はキーペアの[a、c、m]時間などをチェックするスクリプトについて話しているのではありません...)

または、キーベース認証のパスフレーズの定期的な変更を強制/保証するという、同様の結果を達成する標準的なソリューションはありますか?

質問しないでください[〜#〜]なぜ[〜#〜]やりたいのですが、追加のセキュリティ/不便/セキュリティが提供する可能性があることについて、自由にコメントしてください。

大まかに関連しているのは、ssh-keygenでキーペアを作成するときに指定できる有効期間だけです。ただし、これを正しく理解していれば、鍵ペアの署名に使用された署名証明書が期限切れになるため、鍵自体が有効期限切れになります。

9
doktor5000

簡単な答えです。 SSH鍵は単純な暗号鍵であり、有効期間を追加したい場合は、最終的にPKIテリトリーになります。

Ubuntu Stack Exchangeサイトに answer があり、SSHキーを自動的に期限切れにする方法を尋ねていますが、これは_ssh-agent_ツールを使用するためです。

または、サーバーにインストールされているサードパーティアプリを使用して、カスタム設定に基づいてSSHキーを自動的に期限切れにすることもできます。この良い例の1つは [〜#〜] sshark [〜#〜] ツールで、カスタムDNSレコードを使用してキーの有効性を記録し、_command=_機能を_authorized_keys_ファイル。

8
StampyCode

公開鍵のみから、秘密鍵にパスフレーズが関連付けられているかどうかを通知するno wayがあり、パスフレーズが何であるか、または最後にいつ変更されたかを知る方法がないことに注意してください秘密鍵へのアクセス権があります(ただし、秘密鍵が最初に生成されてから最後に変更されたタイムスタンプに従って書き換えられた場合は、鍵のパスフレーズを変更することになると思われます)。

秘密鍵へのアクセスを必要としないアプローチは、次のようになります。

  • ポリシーにより、公開鍵を配布するための外部ツールの使用を要求し、
  • 公開鍵が送信されたときにそのツールに記録し、そして
  • 有効期限日または明示的に取り消されたときに、すべてのシステムから公開鍵を積極的に削除します。

集中化された公開鍵リポジトリは、再利用を防ぐために必要な限り、理想的には永久に期限切れの鍵を保持する必要がありますが、その仕組みは誰もが知っています。

6
Mike McManus

SSHユーザーCAを使用すると、署名したキーに有効期間を設定できます。鍵の署名に使用した自動化が90日を超えると、署名を拒否できます。次に、ユーザーCAの公開鍵を/ etc/ssh/sshd_configのTrustedUserCAKeysに追加し、AuthorizedKeysFileをnoneに設定します。

あなたが言及する有効期間はSSH CAシステムの一部であり、AFAIKはSSH CAにのみ適用されます。

3
Mark