間違ったサーバーに接続しようとすると、SSHパスワードが公開されますか?

間違ったサーバーに接続しようとすると、SSHパスワードが公開されますか?

誤ってパスワード認証情報を使用して間違ったサーバーに接続しようとすると、管理者が使用するパスワードを読み書きできますか?

答え1

簡単に言うと:はい

詳しくは...

ssh私のコンピュータに接続すると、私は通常のサーバーを実行しているのか、それとも転送されるパスワードを記録するように変更されたサーバーを実行しているのかわかりません。

また、必ずしも変更する必要はありませんが、パスワードを渡すsshdPAMモジュール(たとえばを使用して)を作成できます。pam_script

そうですね。 いいえ信頼できないサーバーにパスワードを送信してください。マシンの所有者は、試行されたすべてのパスワードを記録するように簡単に設定できます。

(実際、これは情報セキュリティの世界では珍しいことではありません。試みたパスワードを記録するようにハニーポットサーバーを設定してください。)

答え2

はい。

暗号化された接続が確立された後にパスワードが送信されますが、リモートサーバーはパスワードをプレーンテキストで取得します。

これが心配な場合は、最良かつ簡単な解決策はSSHキーを使用することです。

sshpassコンピュータがキーを受け入れられない場合は、パスワードを安全に保存し、接続しているサーバーに応じて常に正しいパスワードを送信するツールを作成することが1つあります。


パスワードがプレーンテキストで送信される理由は、パスワードの処理と保存に関するすべての決定をリモート側に任せ、クライアントが完全に愚かなことができるからです。過去10年間、LinuxおよびBSDシステムでは、さまざまなパスワードハッシュ(保存)形式が使用されてきました(クリプト(3))、どちらもクライアントサポートを必要としません。

これの一部は歴史的ですが(つまり、常にこのようなものでした)。パスワードを使用することができるより良い試行 - 応答認証プロトコルがあります。例えば推奨袖、認証中にすべての当事者に共有秘密を提供します。一部のSSHサーバーにはすでに実装されていますが、OpenSSHには(非常に)古いバージョンのパッチがあります。

答え3

Stephen Harrisの回答に基づいて、SSHを介してボックス(一種のハニーポット)に接続すると、修正されたPAM認証スクリプトがキャプチャできたことを示すライブビューがあります。私はPAMライブラリlib-storepwの修正版を使用します。

https://livesshattack.net

https://livesshattack.net/about

答え4

SSHは相互信頼が必要なプロトコルです。これが、OpenSSH クライアントが初めて使用するときに信頼スキームを実装するために Known_hosts ファイルを維持する理由です。

ソフトウェアを提供した人が誰であるか、ソフトウェアがどのデータを記録するように構成したかに関係なく、SSHサーバーにログインしようとすると、一部の認証プロセスに参加します。パスワード認証を使用すると、パスワードがサーバーに送信されます。これが非対称暗号化(公開鍵、証明書)を使用することが推奨される理由の1つです。公開鍵暗号化は、資格情報が損なわれるリスクを大幅に削減します。 (ただし、SSHプロキシ配信や同様の方法を使用している場合、MitM攻撃から保護されない可能性があります。)

関連情報