返回列表 回复 发帖

[其它] OpenVPN 用戶端使用帳號/密碼的驗證方式

OpenVPN 是屬於 SSL VPN 應用的類型,用戶端需有經由主機簽署的憑證才可以連線,這樣雖然安全但對一些可能會隨時更換機器的用戶而言,卻不是很方便。

這篇文章是以帳號/密碼為主要的登入方式,用戶不需在更換機器後還要向主機重新申請憑證的往返程序。

如果還不了解什麼是 OpenVPN,請參考這篇文章 [轉]OpenVPN中文概述 。

在繼續下述的安裝說明,請先閱讀這篇文章 Install OpenVPN on CentOS 4.4 ,因為以下步驟是延續該文章的進階設定。

作者:A-Lang (alang[dot]hsu[at]gmail[dot]com)

1. 檢查包含的套件有 mysql, mysql-devel, pam_mysql, 如尚未安裝請利用 yum 或網站 rpm.pbone.net 搜尋.
因為找不到相應 CentOS 4 的 pam_mysql 版本, 用 Google 搜尋到最新版的 source rpm , 再進行編譯安裝.
# wget http://www.lfarkas.org/linux/pac ... ql-0.7RC1-0.src.rpm
# rpmbuild --rebuild pam_mysql-0.7RC1-0.src.rpm
# rpm -Uvh /usr/src/redhat/RPMS/i386/pam_mysql-*.rpm

2. 建立資料庫管理 VPN 的登入帳號
# mysql -u root -p
mysql> create database vpndb;
mysql> use vpndb;
mysql> CREATE TABLE vpnuser (
    -> name char(20) NOT NULL,
    -> password char(128) default NULL,
    -> active int(10) NOT NULL DEFAULT 1,
    -> PRIMARY KEY (name)
    -> );
mysql> insert into vpnuser (name,password) values('vpn','vpn');

3. 新增一個檔案 /etc/pam.d/openvpn, 內容如下。
auth    sufficient      pam_mysql.so                    user=dbuser passwd=dbpass host=localhost db=vpndb
        table=vpnuser usercolumn=name passwdcolumn=password
        where=active=1 sqllog=0 crypt=0
account required        pam_mysql.so                    user=dbuser passwd=dbpass host=localhost db=vpndb
        table=vpnuser usercolumn=name passwdcolumn=password
        where=active=1 sqllog=0 crypt=0
說明:
dbuser -- 可存取 vpndb 的帳戶
dbpass -- 同上的密碼
crypt(0) -- Used to decide to use MySQL's PASSWORD() function or crypt()
            0 = No encryption. Passwords in database in plaintext. NOT recommended!
            1 = Use crypt
            2 = Use MySQL PASSWORD() function

4. 測試 pam_mysql 是否正常運作
# saslauthd -a pam
# testsaslauthd -u vpn -p vpn -s openvpn
0: OK "Success."

5. 防止 Dos 的惡意攻擊, 請建立 "HMAC firewall"。
# cd /etc/openvpn/easy-rsa
# openvpn --genkey --secret keys/ta.key
# cd /etc/openvpn
# cp easy-rsa/keys/ta.key ./

6. 修改 OpenVPN 設定檔
# vi /etc/openvpn/server.conf
   # For authentication by user/pass
   tls-auth ta.key 0
   plugin ./openvpn-auth-pam.so openvpn
   client-cert-not-required
   username-as-common-name

以上是依據這篇 Install OpenVPN on CentOS 4.4 所提及 server.conf 的內容,為使能以 user/pass 方式登入,需再補充的項目。

# cd /etc/openvpn
# cp /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so ./

7. 啟動或重啟 OpenVPN 服務
# service openvpn start

8. 製作用戶端的安裝套件
基本上將用戶端需要的設定檔及 ca.crt,ta.key 憑證檔打包進安裝檔, 用戶在安裝後即可連線。
請參考文件 http://openvpn.se/files/howto/op ... package-Rev1.1.html


<Tips>
Error: Failed build dependencies:
cyrus-sasl-devel is needed by pam_mysql-0.7RC1-0.i386
Answer:
yum install cyrus-sasl-devel

Error:
0: NO "authentication failed"
Answer: crypt 請改用 0, 編者使用 2 也就是 MySQL 的加密函數 password() 但始終無法驗證成功。


參考連結:
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1
成都成都Linux维护,代维。FreeBSD维护,代维,维护各种服务器。
返回列表
开源邮件服务器 开源邮件服务器 web 开源邮件 开源 mail 开源 邮件服务器 邮件技术 mail技术 反垃圾邮件 反垃圾mail mail投递
邮件服务器 mail服务器 开源软件 mail软件 mail服务新品牌 开源邮件服务新品牌
开源mail服务新网站 邮件服务新品牌 mail tmail mailserver 163邮件 sendmail |Linux维护|Linux代维|成都Linux维护|成都Linux代维