openvpn server 進階設定(1):使用帳號/密碼登入

接前文:openvpn server端 安裝設定

Step 1.
首先,請先安裝mysqld
然後請確定是否安裝 pam_mysql及libsasl2-2,沒有的話就安裝:

pam_mysql:
ubuntu: apt-get isntall libpam-mysql
gentoo: emerge pam_mysql
libsasl2:
ubuntu: apt-get isntall libsasl2-2
gentoo: emerge cyrus-sasl


Step 2.
安裝好以後,我們先要建立一個DB供openvpn登入用;這個DB至少要有三個欄位:帳號、密碼、active。
active這個欄位是用來標記帳號是否啟用,有這欄位的話你隨時可以啟用/停用特定帳號,在管理上的彈性會更大。
以下就先來進行資料庫部份的工作:

DB Server:localhost
DB名稱:openvpn
Table名稱:vpmauth
欄位名稱:account,password,active
DBUSER: vpnadm
DBPASSWORD: 093nVPN

以上部份都可以隨個人喜好自訂

CREATE DATABASE openvpn;
use openvpn;
CREATE TABLE `vpnauth` (
`account` char(20) NOT NULL,
`password` char(41) default NULL,
`active` int(10) NOT NULL default '1',
PRIMARY KEY  (`account`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
GRANT all ON openvpn.* TO vpnadm@'localhost' IDENTIFIED BY '093nVPN';
flush privileges;

將以上部份複製存檔後,直接匯入mysqld就會建立資料庫及新增vpnadm這個DB帳號了。不要忘了要建立帳號以後才能用......

Step 3.
再來設定pam.d,建立一個openvpn 的 pam 對應檔:
vi /etc/pam.d/openvpn

然後輸入以下內容,記得紅字部份一樣要依你的設定進行修改:

auth sufficient pam_mysql.so user=vpnadm passwd=093nVPN host=localhost db=openvpn table=vpnauth usercolumn=account passwdcolumn=password where=active=1 sqllog=0 crypt=2
account required pam_mysql.so user=vpnadm passwd=093nVPN host=localhost db=openvpn table=vpnauth usercolumn=account passwdcolumn=password where=active=1 sqllog=0 crypt=2
註:crypt=2代表密碼是使用 mysqld的 password函式加密,所以建帳號時密碼欄位也請記得加密

Step 4.
最後,在openvpn.conf中加入以下兩行:

plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn
username-as-common-name

接下來,就可以進行client端測試了;當需要登入時自己會跳出登入訊息,要求輸入帳號跟密碼。

最後有兩點:
1. 帳號/密碼登入跟使用user key本身不衝突,可以兩者都開啟
2. 如果crypt=2無法登入,又確定DB資料無誤的話,可以把它改成crypt=1;關掉密密碼加密來試試。
==下一篇是 client-config-dir和learn-address的用法 ==

本篇發表於 VPN。將永久鏈結加入書籤。

openvpn server 進階設定(1):使用帳號/密碼登入 有 8 則回應

  1. scorpio 說道:

    hi~看了你的openvpn的相關文章
    但我安裝依然失敗,不曉得能不能加個msn幫幫忙

  2. acman 說道:

    先說一下你失敗的log 吧~~

  3. 匿名訪客 說道:

    :O: :O~: :~~: :sigh: :shake: :pop: :photo: :stealthy: :orz: :orz: 😳 :muyu: :loser: :laugh: :hot: :fight: 😥 😎 :cookacman: :clap: :addoil: :PP :O~: :O: ❓ 😡

  4. Andrew 說道:

    想請問一下,OPenVPN client 端要登入 Server 會問要求輸入 Username & Password 每次登入都要敲一次,有沒有辦法先設定好存在 openvpn.ovpn 內?或有其它方式設定? 謝謝!

  5. acman 說道:

    to Andrew:

    如果你是使用 ip/password 的話, openvpn client 端應該是沒有辦法自動登入
    除非你使用其它可以連接 openvpn server 的 client端

    或是認證方式捨棄 id/password, 改用 key
    這樣就不會問你了

  6. 冬季的過客 說道:

    請教一下OPENVPN連線成功後Client端是否能透過網路芳鄰存取Server端...
    目前連線成功建立通道,兩端都是使用winxp,但是我不知道該如何傳遞資料
    不好意思再問一
    64位元的安裝路徑一樣是C:\Program Files(x86)\Openvpn
    還是C:\Program Files\Openvpn?

  7. acman 說道:

    連線建立後的網芳是否能通.....
    理論上當vpn server的那台可以使用網芳的話,vpn client應該就可以

    64位元安裝路徑應該就沒有x86了
    windows我已經不熟很久了,主要要注意的有兩點:
    1. 請抓新版的程式,且64位元就裝64位元的
    2. 需要 administrator 權限

  8. 冬季的過客 說道:

    感謝大大回覆
    目前打算考取RHCE.如果遇到瓶頸
    透過E-mail提問請教可以嗎 😳

發佈留言

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

*