web-dev-qa-db-ja.com

どのSSHセキュリティがより強力ですか? 2要素または公開鍵

SSH認証の場合、どちらがより安全ですか?
USBトークンを使用した2要素認証/ Google認証システム(時間ベース)
[〜#〜]または[〜#〜]
公開鍵/秘密鍵とパスワード

または、両方を同時に使用できますか?可能であれば、このような多要素認証を使用することの欠点はありますか?

また、可能であれば、誰でも例やリンクを投稿して、公開鍵と2ファクターの両方を一緒に実装する方法を示すこともできます。ありがとうございました!

25

これは「一方が他方より優れている」問題ではありません。どちらも、システムに侵入する攻撃者の負担を増やします。

  • キーを使用(および強制)すると、「パスワードの品質」が向上します(「mypassword123」対「long_binary_asymetric_keypair_here」)。人間は、エントロピーの良い長いパスフレーズを覚えるのが非常に苦手です。

  • 2Factor authを使用すると、攻撃者は2つのプロパティを取得する必要があります。1つはパスワードのメカニズム(通常のパスワード、PK)で、もう1つは(通常)最初の物理的な場所とは異なるものです。 2Factorモードでは、認証しようとしているシステムは、最初のチャレンジで成功した後、もう一度チャレンジします。しかし、両方の課題がばかげている/単純である/ 2Factor全体を簡単に破るのは無意味です。

したがって、両方のメカニズムが互いに補完し合います。

2Factorパートの良いチュートリアル:

http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/

これを、sshキーの使用方法を説明する他のチュートリアルと組み合わせます(インターネットにはたくさんあります)。認証の流れは次のとおりです。

  1. クライアントは、自分のマシンの秘密sshキー(パスワード)のロックを解除するメカニズムをトリガーします
  2. クライアントはサーバーに接続して、公開鍵と秘密鍵の一致を確認します。ここからは、ssh-serverは基本的に認証に関与しなくなります。
  3. サーバーはクライアントを2番目のチャレンジにルーティングします
  4. クライアントは2番目のチャレンジに正しく応答します
  5. クライアントはサーバー上のシェルにアクセスできます
27
akira

他の回答に加えて、秘密鍵がスマートカード(OpenPGPカードなど)にある場合、pubkeyベースの認証自体が2要素になることも追加できます。私の経験では、sshレベルでgoogle-authenticatorを追加すると、管理者の作業が煩雑になりすぎてしまいます。状況を把握する必要があるたびにコードを入力する必要があります。私の推奨するアプローチは、Sudoを実行するときのOpenPGPカードのsshキーとgoogle-authenticatorです。

これらの2つのリンクはあなたに役立ちます:

  1. ssh認証を処理するためのOpenPGPカードの設定
  2. 集中型google-authenticatorインフラストラクチャのセットアップ
6
mricon