リモートユーザーは、SSHを使用してインターネット経由で本社のいくつかのサービスに接続します。 SSHパスワードは、LAN A/Dアカウントと同期されます。
ユーザーがCDや紙などを使用してSSHキーのコピーを持ち帰ることは、ユーザーにパスワードを入力させるよりも安全でしょうか?それとも両方必要ですか?
私の質問はおそらく次のように再定式化される可能性があります:SSHのパスワード認証プロトコルに脆弱性はありますか?
私を疑わせるのはこのメッセージです:
The authenticity of Host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
表示されているメッセージは別の問題です。接続しているホストが実際に想定しているホストであることを確認するように求められます。サーバーから、ssh-keygen -l -f /etc/ssh/ssh_Host_rsa_key.pub
を実行してフィンガープリントを取得できます。次に、初めてリモート接続するときに、指紋が一致していることを確認できます。
ここで実際に動作しているホストキーは、 中間者 攻撃の問題に対処します。おそらくDNSが破壊されており、自分のマシンではなく競合他社のマシンに接続しています。そのマシンはあなたの資格情報を収集し、あなたの接続を実サーバーに透過的に転送し、あなたが知らないうちにあなたの情報を盗みます。ホストキーが一致していることを確認することで、攻撃者が実際にサーバーの公開キーを盗んだ場合を除き、これが発生するのを防ぎます。
ただし、問題は残っています。どのキーが正しいかをどうやって知るのですか最初の接続後、公開鍵は~/.ssh/known_hosts
ファイルに保存されるため、それ以降の接続は問題ありません。ただし、初めて、指紋を取得するための帯域外の方法が必要になるか、「TOFU」モデル(trust-on-first-use)に従います。
しかし、これはパスワードとキーの関係はありませんが、キーとパスワードの両方がこの攻撃によって盗まれる可能性があることを除いて、ある意味で、それはあなたが求めている脆弱性です。
パスワードがキーよりも悪い理由は(少なくとも)3つあります。
さらに、sshキーは、ssh-agent
のようなものと一緒に使用すると便利です。適度なセキュリティを維持しながら、毎回再認証することなく接続するという手間のかからない操作が可能です。
秘密鍵を盗むのに十分なアクセス権を持つユーザーは、ユーザーのパスワードもかなり簡単に盗むことができるため、両方を要求しても大きなメリットはありません。これ以上のセキュリティが必要な場合は、RSA SecurIDや WiKID などの2要素認証システムを検討することを検討してください。
あなたが本当に求めているのは、「他の要素よりも1つの要素が優れている」ということです。トピックは多要素認証であり、実際にはトピックを調べることをお勧めします。
通常、「要因」とは、あなたが知っているもの(パスワード)、持っているもの(sshファイルまたはキースワイプカード)、またはあなたが持っているもの(指紋)です。
1つはそれ自体よりも優れているわけではなく、無料です。キーファイルでCDを失うことは、それが必要なすべての場合にパスワードを漏らすのと同じくらい悪いことです。安全な環境では、2要素認証が一般的です。