| OpenVPN sqlite認証プラグイン |
|
|
この記事は「yamata::memo - OpenVPN sqlite認証プラグイン」からの転載です。ソースコード、サンプルファイルは転載元をご参照ください。
OpenVPNでsqliteをデータベースとして使用し、ID/パスワードを使って認証するためのプラグインです。pythonで書かれていますので、必要に応じて変更してお使いください。 このプラグインは無保証で提供されています。ご利用の環境によっては正しく動作しない可能性があります。また、このプラグインの使用によって生じた損害(直接、間接を問わず)の責任を作者は一切負いません。
使用方法ユーザーデータベースの準備認証に使用するユーザーIDとパスワードを保持するsqliteデータベースファイルを用意します。サンプルデータベースではデータベースのテーブル名は「Users」、IDを「UserId」フィールド、パスワードを「Password」フィールド、有効/無効フラグを「Active」フィールドに設定していますが、
プラグインファイルの配置
OpenVPNサーバー設定ファイルの編集OpenVPNサーバー設定ファイルに以下の記述を追加します。 script-security 2 client-cert-not-required username-as-common-name setenv auth_sqlite_db /etc/openvpn/vpnusers.db auth-user-pass-verify /etc/openvpn/auth-sqlite.py via-file
OpenVPNクライアントから接続!OpenVPNクライアントから接続を試してみましょう。 サーバーのログOpenVPNサーバーのログには認証結果が以下のように記録されています。まずは認証に成功した場合。最後から2番目の行の数字は、データベースを検索した結果、IDとパスワードでの検索でヒットした行数です(つまり「1」なら認証OKということですね)。 [auth-sqlite] sqlite_file : /etc/openvpn/vpnusers.db [auth-sqlite] filename : /tmp/openvpn_up_a4f9bc76dbe81514ae0628285c328616.tmp [auth-sqlite] username : hide [auth-sqlite] password : monkey%55! [auth-sqlite] hashedPassword : f5d003945021de1e376559db7fc13b227ae1792d 1 [auth-sqlite] Authentication succeed. そして認証に失敗した場合です。 [auth-sqlite] sqlite_file : /etc/openvpn/vpnusers.db [auth-sqlite] filename : /tmp/openvpn_up_ebd6f2c1fa0662a4cf2b160f50b835a7.tmp [auth-sqlite] username : hide [auth-sqlite] password : damedame*password [auth-sqlite] hashedPassword : a6f144628d9619d725397e8cce709288d5ad81e1 0 [auth-sqlite] Authentication failed. 認証に成功した場合は終了コード 0で、認証に失敗した場合は終了コード 1で終了させると、その終了コードを受け取ったOpenVPNサーバーが認証結果をクライアントに送信します。
この記事は「yamata::memo - OpenVPN sqlite認証プラグイン」からの転載です。ソースコード、サンプルファイルは転載元をご参照ください。
|

