OpenVPN

在 OpenVPN 2.0 版本以上,它允許 Client 端使用帳號密碼來作連線驗證方式,不只是只有 kEY 而已,

使用 Linux PAM 、LDAP、RADIUS 等驗證皆可。

Client 端在 conf 檔案加入

auth-user-pass

而 Server 端呢,提供的概念即是使用外掛方式 (如下三種)

  1. script
  2. shared object
  3. DLL

當每次 Client 端連線時,Server 就會啟動這個外掛的驗證機制 (0=success、1=failure)

Server 端的 conf 檔加入

1, 使用 script 方式

auth-user-pass-verify auth-pam.pl via-file
  1. auth-user-pass-verify 是參數名
  2. auth-pam.pl 在 RPM 安裝套件裡就有的範本,用 Linux 的 PAM,不過這個用來 DEMO 測試就好,真的要用 PAM,還是用 shared object 方式 (如下)
  3. via-file

2, 使用 shared object 或 DLL 方式

plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
  1. 雖然是使用 PAM,不過使用者權限是 nobody 的
  2. 比 via-file 或 via-env  安全,因為是透過 virtual memory (我目前尚不太懂)
  3. 用 C 寫的,跑的比較快

這時就可以連線了,

在 Client 端 會出現要輸入帳密的框框

2013-03-30_224018

你可能會想,不是還有 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

最後修改日期: 2013 年 03 月 30 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。