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的用法 ==

This entry was posted in VPN. Bookmark the permalink.

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

  1. scorpio says:

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

  2. acman says:

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

發表迴響

您的電子郵件位址並不會被公開。

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

:~~: :stealthy: :sigh: :shake: :pop: :photo: :orz: :oops: :muyu: :loser: :laugh: :hot: :fight: :eat: :cry: :cool: :cookacman: :clap: :addoil: :PP :O~: :O: :?: :-x