web-dev-qa-db-ja.com

SSHホストキーが予期せず変更されているようです

Ubuntu 12.04テストサーバーにPuppetを含む新しい/etc/ssh/sshd_configを公開しました。構成は、次の行を削除したことを除いて、前の構成とまったく同じです。

HostKey /etc/ssh/ssh_Host_ecdsa_key

そのときから、ボックスに接続しようとして多くの同様のエラーが発生していることに気づきました。「RSAホストキー%hostname%が変更され、対応するIPのキーが変更されましたアドレス%ipaddress%は変更されていません。 "

これは、私のコンピューターが以前はデフォルトでECDSAキーを使用していて、現在は使用できないためであると考えました。そこで、その行をsshd_configに追加して、SSHを再起動しました。

問題を完全に解決することはできず、それ以来、私は常に問題に直面しています。サーバーに何回かうまく接続できます。おそらく数日続けて接続できます。その後、突然、ホストキーが変更され、サーバーが認証用の公開キーの受け入れを停止するというエラーが発生し始めます。

しばらくいじって別の場所から接続すると、突然、再び公開鍵に接続できるようになり、中間者の可能性に関するエラーが発生しなくなります攻撃。

数日前に3つのホストキーをすべて再生成してみました(それらを削除してdpkg-reconfigure openssh-serverを実行し、再生成しました)。予想通り、接続する前に古いキーを削除して新しいキーを受け入れる必要がありました。多分それはそれで直ったと思ったが、問題は今戻ってきた。

最後に再生成して以来、/etc/ssh/のホストキーは何も変更されていません。そのため、接続できなくなったり、公開キーが機能しなくなったり、最終的に新しいキーを受け入れて、しばらくの間、正常に機能し始めますか?

動作しない場合(ホストキーの変更に関するエラーが発生し、サーバーが公開キーの受け入れを停止した場合)、サーバーの/var/log/auth.logには何も書き込まれません。これは、おそらく別のマシンに時々当たっているのではないかと思いますが、DNSエントリが正しく、常に同じIPアドレスを返すため、それがどのように可能かはわかりません。

7
Ben

このメッセージが表示される一般的な理由は3つあります。
確率の大まかな順序は次のとおりです。

  1. ホストキーを自分で変更し、クライアントマシンでそれらをクリアまたは更新しませんでした。
    これは最も一般的な状況です。キーファイルをチェックサムし、それらが変更されていないことを完全に確認します。

  2. SSH構成を変更して、以前とは異なる鍵タイプを提示(または要求)しました。
    例えば。以前はRSAまたはDSA鍵が必要でしたが、今はECDSAを使用します。これは「鍵の変更」です。
    その場合は、新しいキーを確認して受け入れます(または、これが希望どおりでない場合は、変更を元に戻します)。
    (状況#2のようです-変更を元に戻し、sshdを再起動して、期待どおりに機能することを確認してください。新しいキーを受け入れていない場合は、変更を元に戻すとエラーが発生しますどこかに行って。)

  3. 誰かIS何か厄介なことをしている
    中間者攻撃SSHは、醜い頭を飼育したことを警告します。誰かが積極的に通信を傍受して秘密鍵を盗んだり、他のことをしたりして、ほぼ確実に彼らに望まれないようにしている。


1を削除し、2を実行しなかったことが確実である場合、そうでないことを証明できるまで、3を想定する必要があります。つまり、ログインしないでください。 -ユーザーが大きな巨大な警告バナーを無視してキーを攻撃者に渡すと、世界中のすべてのSSHセキュリティが役に立たなくなります。

あなたとサーバーの間のチャネルを調査し、ログインの試行中にサーバーの接続ログ(既知の正常な端末から)を確認するなど-ここで攻撃を実行するには多くの方法があり、すべてを列挙することはできません。可能な対策と検出戦略、しかし IT Security の人々は確かにいくつかのアイデアを持っているでしょう。

6
voretaq7

可能であれば/テスト/デバッグ:

  • ホスト名の代わりにIPを使用する(念のため)
  • ネット上に同じIP(DHCPが、固定IPを持つ別のホストが使用するIPを提供した)を持つ複数のマシンはありますか?
  • マシンがDHCPを使用している場合、それらのIPはランダムに変わる可能性があります(ブートアップの順序など)。別のホストに接続しようとしている可能性があります。パスワード認証を有効にして、どこに着地するかを確認してください。
  • クライアントcat /home/username/.ssh/known_hostsで、重複するキーを持つがips/hostnamesが異なる行を探します

例えば:

192.168.56.3 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=
192.168.56.4 ecdsa-sha2-nistp256 AAAAE2...fPfFAyoGSVAvs=
0
canoodle