いいえ、もちろんできません。これは、2FAの目的そのものを無効にします。サーバーにはユーザーの資格情報を検証する手段が必要です。この情報はネットワーク経由で送信しないでください(つまり、client.ovpnファイルのみを使用することはできません)。
UNIXユーザーを作成する必要はありませんが、ユーザーに確認コードをサーバーにインストールさせる必要があります。既に発行された証明書を使用する仮想ユーザーでsftp、クライアント側(相互)許可付きのhttps、CIFS(samba)、またはTLS拡張付きの古き良きftp、またはユーザーが作成した検証コードをサーバーに通知するその他の方法を使用できます。 。通信チャネルは安全でなければなりません(暗号化された||ローカル)。
当然、ユーザーが自分のファイルをアップロードする場合、openvpn-otpで使用される集約ファイルベースの認証情報を使用することはできません。幸い、Linuxの優れたセキュリティモジュールpamを使用することで、別の(そしてはるかに優れた)オプションを利用できます。
まず、上記のいずれかの方法で、google-authenticatorによって作成されたユーザーファイルをディレクトリに収集する必要があります。この例では、/ etc / google-authになります。
実際のユーザーはいないため、ここではすべてのファイルに単一のユーザーIDを適用する必要があります。それはしてみましょうopenvpnの。権限は0400(-r --------)でなければなりません。Pamは、(確かに)世界/グループが読み取り可能な資格情報を好みません。これは、samba、apache、ftp、または最悪の場合はcronタブを使用して簡単に実施できます(非推奨)。
テスト目的のために、これをしてください:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
その後、独自のgoogle認証モジュールを持つlibpamに対して認証するようにopenvpnに要求します。これをopenvpnサーバーファイルに追加します。
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
これは、pam auth id openvpnでpam認証方式を使用することを示しています。
次に、openvpnのpam設定を作成します。/etc/pam.d/openvpnを編集します。
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
ここでは、Google認証が成功しないとすぐに失敗する(必須)、デフォルトの$ HOME / .google_authenticator(secret =)の代わりに特別なシークレットファイルを使用しており、関連付けられている実際のユーザーIDがないため、ユーザーopenvpnとしてファイルにアクセスしますユーザーと。次の行では、認証が成功した後で全員に接続を許可することを示しています。もちろん、ここで独自の許可ポリシーを実装する必要があります。許可されたユーザーは、それぞれのpamモジュールを使用して、ファイル、mysql db、またはldapで制御できます。
これをopenvpnクライアントファイルに追加します
auth-user-pass
auth-nocache
reneg-sec 0
auth-user-passを使用して、openvpnクライアントがユーザー名とパスワードを要求できるようにします。キャッシングは好きではなく(「パスワード」が変更されます)、同じ理由で定期的な再ネゴシエーションは好ましくありません。
その後、openvpn-otpなしで接続できるはずです。必要に応じてPAM制御ファイルに非常に複雑なルールを実装できるため、これははるかに柔軟な方法であると考えてください。たとえば、mysqlまたはldapディレクトリに基づいて、それらの証明書に触れることなくユーザーを有効/無効にすることができます。