web-dev-qa-db-ja.com

クラウドでの多くのSSHキーの管理と保存

SSHを使用して他の多くのリモートクラウドサーバー(約4000)と通信する必要があるクラウドサーバーのプール(約50)があります。各リモートサーバーには独自のSSHキーがあるため、これらすべてのリモートサーバーのSSHキーを安全に保存する場所が必要です。これらのキーをすべて保存せずに保存する方法を教えてください。

多数のSSHキーを1か所に安全に保存し、サーバーが実行時にそれらを要求するようにする最良の方法は何ですか?

13
iCode

重要な区別をする必要があります:公開鍵秘密鍵があります。 「安全に保管」される場合、彼らは「安全に」の異なる概念を要求します。

各SSHサーバーは、公開鍵と秘密鍵のペアを所有しています。各サーバーは独自のキーペアを生成し、秘密キーはneverサーバー自体に残す必要があります。公開鍵はpublicです。つまり、誰でもそれを学ぶことができます。サーバーに接続すると、それはサーバーが最初に通知することの1つ、つまり公開鍵です。それshoutsネットワーク全体。 SSH公開鍵とそのストレージを処理する場合、問題は本当にintegrityの問題です。特定のSSHクライアントはremember通信したいすべてのサーバーの公開鍵($HOME/.ssh/known_hosts通常のLinux SSHクライアントを含むファイル);攻撃者は、偽のサーバーを実行するために、偽の公開鍵をそこに含めることを望みます。

各SSHクライアントmayは、公開/秘密鍵ペアを所有します。このような鍵ペアは、サーバーによるクライアント認証に使用されます。パスワードベースのクライアント認証を使用する場合、クライアントにはそのようなキーペアはありません。鍵ベースのクライアント認証を使用する場合、各サーバーは「許可されたクライアント」の公開鍵($HOME/.ssh/authorized_keys(Linux SSH実装の場合)。

あなたのケースでは、4000のSSHサーバーと通信する50のSSHクライアントがあります。したがって、通常のSSHモデルを使用して、次のことを確認する必要があります。

  • 50のクライアントのそれぞれは、4000台すべてのサーバーの公開鍵のコピーを知っています。
  • キーベースのクライアント認証を使用する場合、各4000サーバーは50のクライアント公開キーのコピーを知っている必要があります。

これらの数値を考えると、関連ファイルはかさばり、キー管理が問題になります(新しいクライアントを追加する場合、新しいクライアントの公開キーは、整合性が保護された4000サーバーにインポートする必要があります)。 公開鍵インフラストラクチャ は、その問題を解決するために発明されました。生の「公式」 OpenSSH インスタンスは、X.509証明書の使用方法を認識していません。ただし、 変更されたバージョン が存在します( その前の質問 も参照)。 X.509対応のSSHコードベースを使用すると、独自のCertification Authorityを実行できます(例:オープンソース [〜#〜] ejbca [〜#〜] ) 、クライアントとサーバーの証明書を発行します。そうすることで、SSHクライアントとサーバーは、必要に応じて動的に相互に証明書を送信します。各マシンは、独自の秘密鍵と証明書を保存するだけで、CA証明書を(関連する「トラストストア」に)「知っている」必要があります。新しいクライアントまたは新しいサーバーをミックスに追加すると、証明書が発行され、管理の問題は解決されます(または、移動済み:処理するPKIがあります)。

18
Thomas Pornin

これは、PuppetやChefなどの構成管理ソフトウェアの仕事です。この種の問題を正確に処理するために作成されました。サーバーが非常に多い場合は、構成管理ソフトウェアを使用することを強くお勧めします。

3
Matrix

鍵を安全に保管することに関して、1つのオプションは秘密鍵をHSM(ハードウェアセキュリティモジュール)に保管することです。これらを提供している有名なベンダーがいくつかありますが、代替手段があります。たとえば Cryptostick を参照してください。

HSMを使用する利点は、秘密鍵を使用できるのは、ハードウェアデバイスがシステム上に存在する間だけであり、秘密鍵を他の場所にコピーできないことです。

このタイプのソリューションでは、SSHサーバー上の承認済みSSHキーの適切な監査と管理も必要になります。それ以外の場合、侵入者が独自のキーのセットを生成してSSHサーバーに配置することを妨げるものはありません。

ただし、これらのキーの管理は問題です。 SSHキーを管理するための商用製品は世の中にありますが、私は良いオープンソースソリューションを知りません。

Thomasが言ったように、1つのオプションはPKIベースのアプローチに移行していますが、これにはすべてのSSHクライアントとサーバーを更新する必要があります。

免責事項:私は商用SSHキー管理製品を販売する会社で働いています。

3
Roman