web-dev-qa-db-ja.com

SSHサーバーホストキーの重複は問題ですか?

かなりの仮想化を使用している小規模ネットワークの評価を行っています。 SSHサーバーのホストキーを生成した後、一部のLinuxマシンのクローンを作成しました。したがって、サーバーはすべて同じホストキーを持っています。これは悪いことだと確信していますが、理由は説明できません。これがなぜであるか、またはこれが悪用されるシナリオの例を説明できますか?それとも、単なる悪習の例ですか?

20
user896117

秘密鍵が共有されるほど、秘密性は低くなります。これは単なる一般的な評価です。状況によっては、これは無害な場合があります。 SSHサーバーの特定のケースでの手段は、これら3つのサーバーのセキュリティがオールオアナッシングシステムになることです。

  • 各サーバーは、他のサーバーを偽装するのに十分な情報を持っています。
  • サーバーのoneがハッキングされると、攻撃者は共有秘密鍵を学習し、他のサーバーになりすますことができます。

一方、秘密鍵を共有することには、実際の利点があります。

  • あなたが観察するように、それはVMクローニングのいくつかのケースで「自然に」起こります。
  • ルーティングが何らかの方法で動的である場合(たとえば、負荷分散がある場合)、特定のクライアントシステムが同じ名前の同じマシン上に常にあるとは限りません。その場合、関連するノードが同じ秘密鍵を共有するしない場合、クライアントは叫び、叫び、不平を言います。
  • クライアントが特定のサーバーに接続するとき初めての場合、そのクライアントにはまだそのサーバーの公開鍵が保存されていないため、人間のユーザーは信頼できるソース(例: sysadminへの電話)。すべてのサーバーが同じ秘密鍵を共有している場合、単一の指紋を大きな文字で印刷して、オフィスの壁に貼り付けることができます。多くのサーバーがあり、各サーバーに独自のキーがある場合、これはあまり実用的ではありません。

したがって、セキュリティに関してマシンが互いに同等であることが意図されていない場合、秘密鍵の共有は明確な「方法」ではありません。ただし、areが同等の場合、秘密鍵を共有すると、一部の操作が簡単になります。何らかの形のロードバランシングが採用されている場合は、プライベートキーの共有を行う必要があります(ただし、ロードバランシングとSSHがめったに合わない場合)すべてのシステムが大規模なコンピューティングクラスタの要素である場合、秘密キーの共有は「許容可能な方法」と見なすことができます。

22
Thomas Pornin

1台のマシンが危険にさらされており、攻撃者がキーを盗むことができる場合、これは悪いことです。その後、ユーザーが次に悪意のあるホストにログインしようとしたときに、ホストキーの変更警告をユーザーに知らせずに、他のマシンになりすますことができます。ネットワーク上に他のセキュリティメカニズムが配置されている場合、この脅威は大幅に軽減される可能性があります。

7
Richard Salts

はい、これは悪いです。以前に述べたように、1つのホストが危険にさらされた場合、同じ秘密鍵を持つ他のホストをローテーションしてMITM攻撃を防ぐ必要があります。

より良い戦略は、ホストが立ち上がった後にキーを作成するか、イメージング後に新しいキーを生成することです。多くの異なるVMを安全にプロビジョニングする方法のアイデアについては、大手の何人か(AWS、linodeなど)が何をしているのかを見てください。

2
bobmagoo

私は違う答えをするつもりです。

作成するものが「単一のシステムイメージ」である場合、共有サーバーキーを持つことがそれを効果的に行う唯一の方法です。すべてのサーバーのすべてのネットワークインスタンスが1つのサーバーである必要があります。

その意味は、他の回答が述べたとおりであり、「単一システムイメージ」の概念とも一致します。サーバーに4つのネットワークインターフェイスがあり、そのうちの1つが侵害された場合、サーバー全体が(もちろん)侵害されます。あなたが持っているのは、いくつかのネットワークインターフェースではなく、いくつかの物理または仮想インスタンスです。

これを行うことには「誤り」はありませんが、これを行うには[〜#〜] need [〜#〜]が必要であり、単に怠惰なだけではありません(単に怠惰になる...)[〜#〜] and [〜#〜]システムがこの種の連鎖的な妥協から自分自身を確実に保護するようにします。

TL; DR-これを行う必要がない場合は、行わないでください。

1
Julie in Austin

秘密鍵へのアクセスがなくても(他の答えはうまくカバーしています)、公開鍵へのアクセスだけが問題になる可能性があります。たとえば、Shodan.ioを使用して公開鍵を検索できるため、一連のIOTデバイスでホストキーペアを共有し、デフォルトのパスワードをオンのままにするなど、ばかげた操作を行うと、公開されているすべてのデバイスを見つけるのは簡単になります。 。

0
rsaxvc