在 OpenVPN 2.0 版本以上,它允許 Client 端使用帳號密碼來作連線驗證方式,不只是只有 kEY 而已,
使用 Linux PAM 、LDAP、RADIUS 等驗證皆可。
Client 端在 conf 檔案加入
auth-user-pass
而 Server 端呢,提供的概念即是使用外掛方式 (如下三種)
- script
- shared object
- DLL
當每次 Client 端連線時,Server 就會啟動這個外掛的驗證機制 (0=success、1=failure)
Server 端的 conf 檔加入
1, 使用 script 方式
auth-user-pass-verify auth-pam.pl via-file
- auth-user-pass-verify 是參數名
- auth-pam.pl 在 RPM 安裝套件裡就有的範本,用 Linux 的 PAM,不過這個用來 DEMO 測試就好,真的要用 PAM,還是用 shared object 方式 (如下)
- via-file
2, 使用 shared object 或 DLL 方式
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
- 雖然是使用 PAM,不過使用者權限是 nobody 的
- 比 via-file 或 via-env 安全,因為是透過 virtual memory (我目前尚不太懂)
- 用 C 寫的,跑的比較快
這時就可以連線了,
在 Client 端 會出現要輸入帳密的框框
你可能會想,不是還有 key 嗎,OpenVPN 支援雙認證機制,是可以同時存在的
但如果只是單純要帳密驗證的話
在 Server 端設定 (如下),就可以讓 Client 不需一定要有 key 設定 (cert 與 key 可以拿掉,但 ca 還是要保留)
client-cert-not-required # 不需 key username-as-common-name # 登入名就是 common name
參考 : http://openvpn.net/index.php/open-source/documentation/howto.html#auth
留言