SSHの2要素認証

「セキュアシェル」SSHは、ホスト間のセキュアな接続を確立するためのネットワークプロトコルであり、標準ではポート22(変更する方が適切です)です。 SSHクライアントとSSHサーバーは、ほとんどのオペレーティングシステムで使用できます。 他のほとんどのネットワークプロトコルはSSH内で機能します。つまり、リモートで別のコンピューターで作業したり、暗号化されたチャネルを介してオーディオストリームやビデオを送信したりできます。 さらに、リモートホスト上のSOCKSプロキシを介して、このリモートホストに代わって他のホストに接続できます。

認証はパスワードを使用して行われますが、開発者とシステム管理者は伝統的にSSHキーを使用します。 問題は、秘密鍵が盗まれる可能性があることです。 パスフレーズを追加すると、理論的には秘密鍵の盗難から保護されますが、実際には、鍵を転送およびキャッシュするときに確認なしで使用できます。 二要素認証はこの問題を解決します。

二要素認証を実装する方法


ハニカム開発者は最近、クライアントとサーバーに適切なインフラストラクチャを実装する方法に関する詳細な手順を公​​開しました。

この手順では、インターネット上で開いている特定のベースホストがあることを前提としています(要塞)。 インターネット経由でラップトップまたはコンピューターからこのホストに接続し、そのホストの背後にある他のすべてのデバイスにアクセスしたい場合。 2FAは、マルウェアをインストールするなどして、攻撃者がラップトップにアクセスしても同じことをできないようにします。

最初のオプションはOTPです


OTP-ワンタイムデジタルパスワード。この場合、キーを使用したSSH認証に使用されます。 開発者は、これは理想的な選択肢ではないと書いています。なぜなら、攻撃者は偽の砦を手に入れ、OTPを傍受して使用できるからです。 しかし、これは何もないよりはましです。

この場合、次の行がサーバー側のChef構成に書き込まれます。


すべてのOTPアプリケーションがクライアント側にインストールされます:Google認証システム、Authy、Duo、Lastpass、 brew install oath-toolkitまたはapt install oathtool openssl 、その後、ランダムなbase16文字列(キー)が生成されます。 これは、モバイル認証システムで使用されるBase32形式に変換され、アプリケーションに直接インポートされます。

その結果、要塞に接続して、パスフレーズだけでなく認証用のOTPコードも必要になるようになりました。

 ➜ ssh -A bastion Enter passphrase for key '[snip]': One-time password (OATH) for '[user]': Welcome to Ubuntu 18.04.1 LTS... 

オプション2-ハードウェア認証


この場合、2番目の要素はハードウェアデバイスまたは生体認証であるため、ユーザーは毎回OTPコードを入力する必要はありません。

ここで、Chefの構成はもう少し複雑で、クライアントの構成はOSに依存します。 しかし、すべての手順を完了した後、MacOSのクライアントはパスフレーズを使用してSSHで認証を確認し、センサーに指を当てることができます(2番目の要素)。

iOSとAndroidの所有者は、スマートフォンの1つのボタンを押すことでエントリを確認します 。 これはKrypt.coの特別なテクノロジーであり、OTPよりも安全です。

Linux / ChromeOSでは、YubiKey USBトークンを操作するオプションがあります。 もちろん、攻撃者はトークンを盗むことができますが、パスフレーズはまだわかりません。

Source: https://habr.com/ru/post/J448970/


All Articles