`

OpenVPN以用户名、密码方式登录

阅读更多

1、建立数据库:

以管理员身份登录数据库:
mysql>; create database vpn;
mysql>; GRANT ALL ON vpn.* TO vpn@localhost IDENTIFIED BY 'vpn123';
mysql>; flush privileges;
mysql>; use vpn;
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('elm',password('elm'));
#创建vpn用户,对vpn这个database有所有操作权限,密码为vpn123
#active不为1,无权使用VPN
#增加用户 用户名:elm 密码:elm

2、配置pam_mysql模块
创建/etc/pam.d/openvpn文件,文件内容如下:
===================CUT Here================
auth    sufficient      pam_mysql.so                    user=vpn passwd=vpn123 host=localhost db=vpn \
        table=vpnuser usercolumn=name passwdcolumn=password \
        where=active=1 sqllog=0 crypt=2
account required        pam_mysql.so                    user=vpn passwd=vpn123 host=localhost db=vpn \
        table=vpnuser usercolumn=name passwdcolumn=password \
        where=active=1 sqllog=0 crypt=2
==================Cut Here=================
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

3、编辑OpenVPN参数,修改如下内容:

plugin ./openvpn-auth-pam.so openvpn
client-cert-not-required
username-as-common-name

plugin ./openvpn-auth-pam.so openvpn #说明使用的插件,openvpn为插件的参数,使用pam的servicesname
client-cert-not-required #不请求客户的CA证书,使用User/Pass验证
username-as-common-name #使用客户提供的UserName作为Common Name

4、其他与用Key文件验证相同

注意:openvpn-auth-pam.so位于/usr/lib/openvpn里面

del.icio.us 标记: OpenVPN, VPN, Pam
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics