web-dev-qa-db-ja.com

ベストプラクティス:「ホストとユーザーごとに別々のsshキー」と「すべてのホストに1つのsshキー」

ホストとユーザーごとに個別のSSHキーを作成するか、id_rsaすべてのホストが認証するためのキー?一つできましたid_rsaプライバシー/匿名性ポリシーの不正行為ですか?

更新:

すべてのホストに1つのssh-keyがあります:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

個別のsshキーと比較して:

~/.ssh/user1_Host1
~/.ssh/user1_Host1.pub
~/.ssh/user2_Host1
~/.ssh/user2_Host1.pub
~/.ssh/user3_Host2
~/.ssh/user3_Host2.pub
~/.ssh/user4_Host3
~/.ssh/user4_Host3.pub
... etc.
155
static

秘密鍵は、あなたにとって何であれ、特定のユーザーの単一の「アイデンティティ」に対応します。あなたにとって「アイデンティティ」とは、1人の人、または1人のマシンの1人の人、あるいは1台のマシンで実行されているアプリケーションの1つのインスタンスの場合です。粒度のレベルはあなた次第です。

セキュリティに関する限り、マシンにログインするためにそれを使用してキーを決して妥協しないでください(パスワード)、したがって、別の宛先に別のキーを設定しても、認証/セキュリティの観点からは安全ではありません。

複数のマシンに対して同じキーが承認されていても、同じキー所有者がフォレンジックの観点から両方のマシンにアクセスできることが証明されます。通常それは問題ではありませんが、指摘する価値があります。

また、1つのキーが許可される場所が多いほど、そのキーの価値が高くなります。そのキーが危険にさらされると、より多くのターゲットが危険にさらされます。

また、privateキーが保存されている場所(たとえば、仕事用コンピューター、ラップトップ、バックアップストレージなど)が多いほど、場所が多くなります。攻撃者がコピーを入手するために行くことがあります。そのため、同様に検討する価値があります。

セキュリティの実行方法に関する普遍的に適用可能なガイドラインについては、何もありません。セキュリティを追加すればするほど、使い勝手がよくなります。私がアドバイスする1つのことcan断定的にこれは次のとおりです:秘密鍵を暗号化しておく追加されたセキュリティはかなり重要です。

171
tylerl

この質問は2つの異なる角度から考えることができると思います:セキュリティおよび便利

SSH鍵ペアを作成するときは、次のように、秘密鍵を保護するためのレイヤーを追加するためのパスフレーズを提供するよう求められます。

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

パスフレーズを要求する明示的なプロンプトがありますが、一部(または多く)の人は、括弧内の情報にさらに焦点を合わせています:(パスフレーズがない場合は空で、その提案に従います。

複数のSSHキーペアを使用するかどうかかどうか追加のpasswdを入力しないでください。少なくとも4つの方法があります。そして、すべてのキーペアとconfigファイルが~/.ssh/に格納されていると仮定しましょう。

ではまずsecurityについて考えてみましょう。

次の表は、セキュリティに関する簡単なランクを示しています(数値が大きいほど安全性が高くなります)。

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

passwdを使用しない場合、システムが誰かに侵入された場合、ブレーカーはすべての秘密鍵と設定を取得でき、リモートサーバーの認証も取得できます。したがって、この状況では、1つのキーペアと複数のキーペアは同じです。最も安全な方法は、異なるSSHキーペアに異なるパスワードを使用することです。

次にconvenienceについて考えてみましょう。

しかし、より多くのキーペアとより多くのpasswdsも私たちの生活を不便にします、次の表はセキュリティに関する単純なランクを示します(数値が大きいほどより安全です):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

したがって、一般的な状況では、securityconvenienceを同時にトレードオフする必要がある場合、2つのスコアを乗算できます。おそらく1つのSSH鍵ペア(passwd付き)を選択するのが適切です。

20
YaOzI

キーはユーザーに属しているため、必要なキーは1つだけです。

ホストごとに1つのキーを使用する必要はありません(セキュリティも向上しません)。

秘密鍵が秘密に保たれている限り、この単一の鍵を使用して、複数のホストに対して自分自身を認証するために使用できます。

4
Uwe Plonus

ベストプラクティスは何ですか:ホストごとに個別のsshキーとユーザーVSすべてのホストに対して1つのsshキー?

私はあなたの質問が正しいかどうかは知りませんが、「キー」とはどういう意味ですか?非対称暗号を参照していますか?

非対称暗号を使用する場合、秘密鍵と公開鍵のペアがあります。各ユーザーの公開鍵はssh-server(ホスト)に保存されます。これにより、ユーザーの認証が可能になります。これは、公開鍵ごとに1つの秘密鍵しか必要ないためです。

enter image description here

すべてのホストに対して1つのssh-keyを持つことはどういう意味ですか?

2
enigma

個別の鍵の主な利点は、最悪のシナリオで何が起こるかです:誰かがあなたの秘密鍵を取得します。

  1. すべてのホストで同じキー:悪意のあるユーザーがすべてにアクセスできるようになりました。
  2. 各ホストの異なるキー:悪者は1つのものにしかアクセスできません。

では、最も安全ですか?各ホストの一意のキー。

2
James

経験則として、私は他の回答にも同意します。ユーザーごとに1つのキーを使用するのが最も現実的な方法です。ただし、万能のアプローチとしては適していません。

次に、いくつかの追加の考慮事項を示します。

  • SSHエージェントを使用している場合、サーバーに接続するときに、SSHクライアントが格納されているキーのいずれかを順番に試す可能性があるため、3つまたは4つを超えるキーが問題になります。これにより、サーバー側でいくつかのログオンに失敗する可能性があり、実際には、SSHが正しいキーを試す前にアカウントがロックアウトされていることに気付く場合があります。この側面は、ユーザーごとに1つのキーを使用するアプローチを支持します。

  • 複数の独立したエンティティ(複数のクライアントにサービスを提供するコンサルタントなど)にサービスを提供する場合は、クライアントごとに個別のSSHキーを検討してください。関係が終了すると、クライアントはすべてのパスワードとSSHキーの引き渡しを要求する可能性があります。時々、それが良いアイデアではない理由を説明することはうまくいきますが、クライアントが裁判所命令のようなものを受け取った場合、問題が発生する可能性があります。

  • SSH秘密鍵が危険にさらされている場合は、多くのシステムでそれを変更する必要があるかもしれません。あなたは覚えている過去10年間に、SSHキーを使用してセットアップしたすべての単一のシステムですか?侵害されたSSHキーをGithubから削除することを覚えていますか?または、オフィスのクローゼットにあるルーターから、離れた場所で管理しているとカップルに言われましたか?その特定のクライアントのためにもう働かなくなったためにもう触れることができないシステムについてはどうですか?

最後に、2つのアプローチの意味を理解し、それらを状況の特定の懸念事項とバランスさせることになります。

2
Kevin Keane

これは少し遅くなるかもしれませんが、言及する価値があると思います。セキュリティと利便性の観点から、人間のユーザーを管理する場合は、ユーザーごとに1つのキーを持つことが望ましいです。

利点は、単一のユーザーへのアクセスを取り消す必要がある場合です。

すべてのユーザーに対して1つのキーを使用していて、パスワードがない(または同じパスワードを使用している)とします。サーバー(「アカウント」)でユーザーを無効にすることもできますが、人間のニーズはすべて、ユーザーとアクセス権を取得するためのキーです。彼/彼女はそれがファイルであるのですでにキーを持っています、あなたはこれを制御することができません、そしてそれから彼はユーザー名が必要です(おそらくユーザー(アカウント)は標準のアルゴリズム(例:名前の最初の文字+姓)で作られています)別のユーザーとしてアクセスします。次に、セキュリティ上の理由から、新しいキーペアを作成して(そしてユーザーに配信して)、古いキーペアを無効にする必要があります。

ユーザー(および必要な場合はキー)を無効にするだけなので、ユーザーごとに1つのキーがある場合ははるかに簡単です。

機密データを処理するシステムまたはサーバーを管理する場合、ユーザープールは変動します(ほとんどの場合、変動するのはローテーション速度です)。これは、セキュリティと利便性の観点から良い習慣になります。

1
Manuel Herrera

質問されて以来、状況は大きく変化しました。現在、すべてのホストで単一のSSHキーを使用することには、2つのポイントがあります。

  • ハードウェアキーの人気が高まっています。少なくとも間違いなく最も人気のあるブランドであるYubikeyは、単一のSSHキーのみをサポートしています。
  • 認証にLDAPサーバーを使用している場合は、各ホストに個別に追加する代わりに、LDAPスキーマを追加して、SSH公開鍵をLDAPに格納できます。他のいくつかのIDMソリューションも同様の機能を提供する場合があります。

もちろん、これは以前の回答で述べた他の考慮事項を無効にするものではありません。

0
Kevin Keane