Freeradiusと通信するSSLVPNサーバーを提供するCiscoルーターがあります。このサーバーは、pamと2つのpamモジュール(sssとyubico)を使用して、VPNに2要素認証を提供します。
すべてが世界で良好であり、それは機能します、例外これが機能するためには、ユーザーのパスワードとyubikeyトークンを1つの応答に連結する必要があります。私のユーザーは、2段階のパスワードとチャレンジレスポンスを好むでしょう(主に「混乱しすぎる」という理由で)。これはできますか?
現時点では、バックエンドとしてpamradiusモジュールを使用するように指定する1つのRADIUS認証構成セクションがあります。私はvery radiusは初めてですが、pamモジュールを2つの別々の「フェーズ」で2回使用し、毎回異なるpam_authを指定できると思います。そのため、それぞれで2つの異なるpam構成ファイルが使用されます。単一のpamモジュールにバックアップされています(一方はIPA、もう一方はyubikey)? freeradiusはyubikeyもsssout the boxもサポートしていないため、私はpamに2回依存します(ldapをサポートしていることはわかっていますが、sssにDNS SRVレコードフェイルオーバーなどを取得させたい)。
これが可能かどうかはわかりませんが、文書化されている場所を見つけることができませんでしたか?
freeradiusには明らかにたくさんの設定ファイルがありますが、知っておくことが重要な場合はそれらを投稿できます。
しばらくの間(OpenVPNではありませんが)これを行うためにyubikeyセットアップを取得しようとした後、これが機能するためには、両方をサポートする必要があるという結論に達しましたアプリケーションによるおよびPAMによる。つまり、アプリケーションは(通常の2つではなく)3つのことを要求することを知っている必要がありますそして基盤となるPAMライブラリは3つのことを期待することを知っている必要がありますそれに渡される(そしてそれらを適切に使用する)。
Yubikey PAMライブラリはそのサポートを提供していないようです。少なくとも、私がまだこの作業を試みている間は、確実にサポートされていませんでした。
代わりに、UATHモードでyubikeyを使用するように変更することにしました。適切な三相認証は、sshd
と基盤となるpam_oath
ライブラリの両方ではるかに適切に処理されることがわかりました。
私は試したことがないので、OpenVPNがこれをよりよくサポートするかどうかはわかりませんが、yubikeyモードを正しく機能させることができない場合は、オプションとして調査することをお勧めします。ユーザーのいずれかが何らかの理由でyubikeyを使用できない場合(たとえば、USBポートのないエンドポイントからのOpenVPN)、使用できる他のOATH実装がいくつかあるという追加の利点があります。スマートフォンで、2要素インフラストラクチャを完全にオーバーホールすることなく特定のユーザーを救済します。
興味がある場合は、sshd/yubikey/OATH/two-factor/three-phaseauthenticationに関する私の記事を見つけることができます ここ 。
編集:いいえ、アプリケーションではOpenVPNを意味しました。 OpenVPNは、(事実上)2つの別々のパスワードとユーザー名を要求することを知っている必要があります。バッキングPAMモジュールは、これら3つのトークンを予期し、FreeRADIUSに適した方法でそれらを組み合わせる必要があります。トークンが検証されている限り、合意された方法が何であるかはほとんど重要ではありません。重要なのは、認証エンジン全体のクライアント側が、3つの異なるトークンを要求する方法と処理する方法を知っていることです。
PAMをサブオーニングしてRADIUSプラグインを2回呼び出し、毎回異なる引数を使用して、それが何らかの形で魔法のように洗い流されることを期待して、自分自身をロールバックしようとすると、失敗する運命にあるようです(潜在的なセキュリティホールがあります)。
私の全体像のポイントは、yubikey固有のハンドラーが3トークンを好まないように思われたことを私が試したことから知っているので、yubikey固有のトークンハンドラーよりもOATHを使用して設計されたソリューションを見つける可能性が高いということでしたcatenate-password-and-OTPアプローチを優先するアプローチ(これも好きではありません)。
RADIUSは チャレンジレスポンス を提供します。つまり、最初にRADIUSサーバーにパスワードを提供すると、RADIUSサーバーがパスワードをチェックし、パスワードが正しい場合はAccess-AcceptではなくAccess-Challengeで応答します。次に、RADIUSクライアント(pam_module)が2番目の認証を要求し、OTP値をRADIUSサーバーに送信できます。2番目の部分(OTP値)が正しければRADIUSサーバーは最終的にACCESS-Acceptで応答します。
privacyIDEA いくつかのOTPトークン(HOTP、Yubikey)のチャレンジレスポンスと、チャレンジレスポンスをサポートするFreeRADIUSモジュールを提供します。
freeradius code を見ると、pam_radius_authもチャレンジレスポンスをサポートしているように見えますが、まだテストしていません。