web-dev-qa-db-ja.com

Ubuntu 12.04でOpenVPNサーバーでGoogle認証システムを使用する方法

Ubuntu 12.04で動作するOpenVPNシステムがあり、セキュリティを強化するためにGoogle Authenticatorを追加したいと思います。

これは私の現在のopenvpn設定です:

 dev tun 
 proto udp 
 port 1096 
 ca ubuserv04-ca.crt 
 cert ubuserv04.crt 
 key ubuserv04.key 
 dh dh1024.pem 
 server 10.10.0.0 255.255.255.0 
 "redirect-gateway def1" 
 "route 192.168.0.0 255.255.255.0" 
 Push "dhcp-option DNS 8.8.8.8" 
 Push "dhcp-option DNS 8.8.4.4" 
 float 
 log-append/var/log/openvpn-otp -1096-status.log 

(これは単なるテストのセットアップであり、特定の側面を変更する必要があることはわかっていますが、今のところ機能します。)

クライアントには次のものがあります。

 dev tun 
 client 
 proto udp 
 remote my.server.fqdn 1096 
 resolv-retry infinite 
 ca ubuserv04-ca .crt 
 cert user1.crt 
 key user1.key 
動詞3 

上記の設定は正常に機能します。エラーがなく、高速で安定しています。

Google Authenticatorを実行するための方法をいくつか試しましたが、毎回これらの記事で副次的な問題のトラブルシューティングを行っています。サーバーのローカルユーザー/パスワードデータベースに対して認証するのではなく、既に配置されているシステムとGoogle認証システムだけを認証します。

Google認証システムを実行しています。 apt-get install libpam-google-authenticatorを使用してインストールし、sshセッションの認証に使用したことがあります。これは正常に機能しましたが、テストサーバーに過ぎず、特定のテストが終了したため、無効にしました。

具体的にご記入ください。サーバーのovpn構成にプラグインを追加する必要があること、およびsomethingを/etc/pam.d/openvpnに追加する必要があることを知っていますが、正確には何ですか?

どんな助けも大歓迎です!

/追加情報

この記事をフォローしました: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubunt ソースIからコンパイルする代わりに'apt-get install libpam-google-authenticatorを使用してGoogle Authenticatorをインストールしました。私もこれらの記事を読みましたが、この場合は使用していません: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor- authentication / および http://zcentric.com/2012/10/09/google-authenticator-with-openvpn-for-2-factor-auth/ 。そして、提案されているように、私はPAMについて調べました;)

さて、ここにいくつかの興味深い開発者がいます。

/etc/pam.d/openvpnには次のものがあります。

 account [success = 2 new_authtok_reqd = done default = ignore] pam_unix.so 
 account [success = 1 new_authtok_reqd = done default = ignore] pam_winbind.so 
 account requisite pam_deny.so 
アカウントが必要pam_permit.so 
 authが必要pam_google_authenticator.so 

方法に従って、オリジナルを/etc/pam.d/common-accountからコピーし、最後の行を追加しました。最後の行をコメントアウトすると、OpenVPN接続が成功します。ただし、最後の行がコメントアウトされていない場合、/ var/log/auth.logはこれを記録します。

 PAMがdlopen(pam_google_authenticator.so)できません:/lib/security/pam_google_authenticator.so:未定義のシンボル:pam_get_item 
 PAM追加障害モジュール:pam_google_authenticator.so 

/var/log/openvpn-otp-1096.logはこれを記録します:

 PLUGIN_CALL:プラグイン関数PLUGIN_AUTH_USER_PASS_VERIFYはステータス1で失敗しました:/usr/lib/openvpn/openvpn-auth-pam.so
TLS認証エラー:ピアの認証ユーザー名/パスワードの検証に失敗しました
 e-using SSL/TLSコンテキスト
 AUTH-PAM:背景:ユーザー 'martin'は認証に失敗しました:モジュールは不明です

問題は、PAMとGoogle認証システムの間にあるようです。

Googleは他のプラグインの問題をリストしていますが、Google Authenticatorに関する情報は特に見つけることができません。

8
Forkbeard

OK、Googleは私の友人です。

これは私がしました:

#apt-get purge libpam-google-authenticator 
#ダウンロードhttps://code.google.com/p/google-authenticator/downloads/list
# apt-get libpam-dev 
をインストールします

ライセンスの直後に、これをMakefileに追加します。

 LDFLAGS = "-lpam" 

それから

#make 
#make install 
#service openvpn restart 

また、/ home/username/.google_authenticatorに、使用するユーザーの読み取り権限以外の権限がまったくないことを確認してください。

次に、サーバー上のローカルユーザー名(シェルアカウント)であるユーザー名をOpenVPNユーザー名として入力し、パスワードとしてGoogle Authenticator 6桁のコードを入力する必要があります。

今では動作します。

お時間をありがとうございました:)

(この投稿を解決済みとしてマークするにはどうすればよいですか?トピックのタイトルを編集するだけですか?)

2
Forkbeard

OpenVPNのOTP認証が必要な場合は、ネイティブOTP OpenVPNプラグインが利用可能です。 Google Authenticatorシークレットキーと互換性があります。すべてのシークレットは単一のテキストファイルに保存され、PAMを構成したり、ユーザーディレクトリを作成したりする必要はありません。

チェックしてください: https://github.com/evgeny-gridasov/openvpn-otp

2
egridasov