トークンを生成できるデバイスがあります。したがって、トークンとパスワードを使用して、2要素認証を実行できます。セキュリティを強化するためにそのようなシステムを実装する多くの方法があります。私が知っている2つのうちの1つは、open-sshクライアントを変更することであり、もう1つは、PAM(Pluggable authentication module)モジュールを開発することです。
他の方法はありますか?簡単な導入を考慮した最良の方法はどれですか(注:開発の複雑さは関係ありません)?認証は、主にサーバーのsshデーモンがログインのためにユーザーを認証するために使用されます。
2.xの初期のバージョンからIPA(LDAP、Kerberos、SSSD)を使用していますが、満足できません。 2FAとOpenSSHに関して、これが私のsshd_configの関連スニペットです。
AllowGroups ipausers
GSSAPIAuthentication yes
PasswordAuthentication no
PubkeyAuthentication yes
RequiredAuthentications2 publickey,gssapi-with-mic
OpenSSH-6.2以降、RequiredAuthentications2
を実装するRed Hatパッチは、アップストリームに含まれているか、スーパーシードされています。
- sshd(8):AuthenticationMethodsオプションを介したSSHプロトコル2での複数の必要な認証のサポートが追加されました。このオプションは、認証方式名の1つ以上のコンマ区切りリストをリストします。認証を完了するには、リスト内のすべてのメソッドが正常に完了する必要があります。これにより、たとえば、ユーザーにパスワード認証を提供する前に、公開鍵またはGSSAPIを介して認証するようユーザーに要求することができます。
個人的に、私は常に2要素認証をサポートするためにRADIUSを使用することの大ファンです。どのトークンの種類を持っているのかはわかりませんが、RSAはRADIUSとかなりうまく統合されていると思います。私は以前にそのようなシステムを個人的に設定したことはありませんが、本格的なSSHサーバーと簡単に統合できる確立された標準です。
伝統的に言えば、3つの認証形式があります。
したがって、トークンsynデバイスがある場合、私は(2)について話していると想定しています。変更されたsshサーバーにログインすると、手に入力するpass-phraseが送られてきます。中央サーバーと同期し、OTPをもたらす保持デバイス/トークンデバイス。これを元のパスワードで入力してログインします。
2つのレベルでユーザーを認証するようにsshを変更し、競合状態が存在しないことを確認する際の複雑さ。
標準のネットワーク認証プロトコル、特にradiusを使用することを強くお勧めします。 radiusを使用すると、LDAPを使用してもADを使用してもディレクトリを統合でき、認証要求をサードパーティの2要素認証サーバーにプロキシできます。ここでfreeradius/openldapを使用してこれを行う方法を確認できます: http://www.wikidsystems.com/support/wikid-support-center/how-to/how-to-add-two-factor-authentication -to-openldap-and-freeradius (またはNPSの場合: http://www.wikidsystems.com/support/wikid-support-center/how-to/how-to-add-two- factor-authentication-to-nps )。
PAM、Apacheなどからradiusを介してディレクトリおよびサードパーティサーバーに2要素認証を設定する方法を確認するには、このページのeGuide to two-factor authを参照してください。 http ://www.wikidsystems.com/learn-more/white-papers (登録なし)。
システムへのSSHアクセスを保護するための多くのオプションがあります。標準の安全なプロトコルとフレームワークに基づいたものを選択すると、管理と拡張が容易になります。
PAMは良いオプションです。 LoginTCのサービスをご覧ください。試用/使用は無料です。
PAMによる2要素認証: https://www.logintc.com/docs/connectors/unix-ssh.html 。