openvpn2.3.4 安装配置
一、安装lzo
[root@vpn ~]# tarxf lzo-2.08.tar.gz
[root@vpn ~]# cdlzo-2.08
[[email protected]]# ./configure && make && make install
二、安装openvpn
[root@vpn ~]# tar xzvfopenvpn-2.3.4.tar.gz
[root@vpn ~]# cdopenvpn-2.3.4
[[email protected]]# ./configure --prefix=/usr/local/openvpn--with-lzo-headers=/usr/local/include/ --with-lzo-lib=/usr/local/lib
[[email protected]]# make && make install
三、配置easyrsa服务端
在https://github.com/OpenVPN/easy-rsa下载easy-rsa-master.zip
1、unzipeasy-rsa-master.zip
2、cp easy-rsa-master/usr/local/openvpn/easy-rsa
3、cd/usr/local/openvpn/easy-rsa/easyrsa3/
4、cp vars.example vars
5、vi vars 修改下边配置:
set_varEASYRSA_REQ_COUNTRY"CN"
set_varEASYRSA_REQ_PROVINCE "SH"
set_var EASYRSA_REQ_CITY"SH"
set_varEASYRSA_REQ_ORG "LY"
set_varEASYRSA_REQ_EMAIL "[email protected]"
set_varEASYRSA_REQ_OU "LY OPENVPN"
6、cd /etc/openvpn/easy-rsa/easyrsa3/执行. ./vars
四、创建服务端证书及key
(1).初始化: ./easyrsa init-pki
(2).创建根证书: ./easyrsa build-ca
(3).创建服务器端证书: ./easyrsa gen-req server nopass
(4).签约服务器端证书: ./easyrsa sign server server
(5).创建Diffie-Hellman,确保key穿越不安全网络的命令:./easyrsa gen-dh
五、创建客户端证书
1、在/etc/下创建openvpn_client目录
mkdir -p/etc/openvpnClient
cd /etc/openvpnClient/
unzipeasy-rsa-master.zip
mv easy-rsa-mastereasy-rsa
cd easy-rsa/easyrsa3
2、初始化:./easyrsainit-pki
3、创建客户端key及生成证书: ./easyrsa gen-req lingyu ###lingyu为创建根证书是输入的Common Name
4、将得到的lingyu.req导入并签约证书
cd/usr/local/openvpn/easy-rsa/easyrsa3
导入req: ./easyrsaimport-req /etc/openvpnClient/easy-rsa/easyrsa3/pki/reqs/lingyu.req lingyu
5、签约证书: ./easyrsa sign client lingyu
六、检查服务端及客户端生成的文件
1、服务端:
/usr/local/openvpn/easy-rsa/easyrsa3/pki/ca.crt
/usr/local/openvpn/easy-rsa/easyrsa3/pki/dh.pem
/usr/local/openvpn/easy-rsa/easyrsa3/pki/reqs/LY.req
/usr/local/openvpn/easy-rsa/easyrsa3/pki/reqs/server.req
/usr/local/openvpn/easy-rsa/easyrsa3/pki/private/ca.key
/usr/local/openvpn/easy-rsa/easyrsa3/pki/private/server.key
/usr/local/openvpn/easy-rsa/easyrsa3/pki/issued/LY.crt
/usr/local/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt
2、客户端:
/etc/openvpnClient/easy-rsa/easyrsa3/pki/private/LY.key
/etc/openvpnClient/easy-rsa/easyrsa3/pki/reqs/LY.req ###这个文件被我们导入到了服务端文件,所以那里也有
七、拷贝文件
1、拷贝服务器密钥及证书等到openvpn目录
cp/usr/local/openvpn/easy-rsa/easyrsa3/pki/ca.crt /usr/local/openvpn/
cp /usr/local/openvpn/easy-rsa/easyrsa3/pki/private/server.key/usr/local/openvpn/
cp/usr/local/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /usr/local/openvpn/
cp/usr/local/openvpn/easy-rsa/easyrsa3/pki/dh.pem /usr/local/openvpn/
2、拷贝客户端密钥及证书等到client目录
cp /usr/local/openvpn/easy-rsa/easyrsa3/pki/ca.crt/etc/openvpn_client/
cp/usr/local/openvpn/easy-rsa/easyrsa3/pki/issued/lingyu.crt /etc/openvpn_client/
cp/etc/openvpnClient/easy-rsa/easyrsa3/pki/private/lingyu.key/etc/openvpn_client/ ##注意是拷贝客户端目录里的文件
八、为服务端编写配置文件
1、cd/usr/local/openvpn/
2、mkdir conf
3、mkdir log
4、cp/root/openvpn/openvpn-2.3.6/sample/sample-config-files/server.conf/usr/local/openvpn/conf/server.conf
vi server.conf
5、编辑server.conf内容如下:
注意:
(1)、local 192.168.1.250是openvpn服务器本机IP
(2)、tls-auth、user nobody、group nobody以及倒数三行都是做mysql验证用户名+密码时用到的
(3)、duplicate-cn #如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA #和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN
(4)、comp-lzo #对数据进行压缩,注意Server和Client一致
(5)、max-clients 100 #定义最大连接数
(6)、persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
(7)、persist-tun #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
6、vim /etc/sysctl.conf 修改net.ipv4.ip_forward = 1 然后执行sysctl -p
7、cd /etc/openvpnClient 将ca.crt lingyu.crt lingyu.key #带后缀的这三个下载到本地,供客户端使用,如果通过用户名+密码方式认证,可以只拷贝ca.crt到本地
九、配置iptables
iptables-t nat -F #清除NAT表
iptables-t nat -A POSTROUTING -s 172.24.100.0/255.255.255.0 -o em1 -j MASQUERADE
iptables-t nat -A POSTROUTING -s 172.24.100.0/255.255.255.0 -o tun0 -j MASQUERADE
iptables-t nat -A POSTROUTING -s 172.24.100.0/255.255.255.0 -d 192.168.0.0/16 -o em1 -jMASQUERADE
十、配置客户端
1、安装openvpn-gui工具,将步骤11下载的三个文件拷贝到C:\Program Files (x86)\OpenVPN\config 下
2、将C:\Program Files (x86)\OpenVPN\sample-config\client.ovpn复制到C:\Program Files (x86)\OpenVPN\config
编辑client.ovpn
client
devtap
protoudp
remote openvpn_server_ip 1194 #如果在外网,就改成对应的公网IP
resolv-retryinfinite
nobind
persist-key
persist-tun
caca.crt
certnmshuishui.crt
keynmshuishui.key
comp-lzo
verb3
注释ns-cert-typeserver ,否则有可能会报VERIFY nsCertTypeERROR: /CN=... require nsCertType=SERVER 之类的错误
3、在服务器上重启openvpn服务:
/usr/local/openvpn/sbin/openvpn--daemon --config /usr/local/openvpn/conf/server.conf
4、用客户端直接连接,查看是否配置成功
十一、配置OPENVPN登陆认证方式:
1、使用脚本+密码文件控制方式:
(1)、在服务器端server.conf里增加
script-security3 ###--加入脚本处理,如用密码验证
auth-user-pass-verify/etc/openvpn/checkpsw.sh via-env ###指定只用的认证脚本
client-cert-not-required#####不请求客户的CA证书,使用User/Pass验证,如果同时启用证书和密码认证,注释掉该行
username-as-common-name### 使用客户提供的UserName作为Common Name
(2)、下载checkpsw.sh按脚本要求存放,下载地址:http://openvpn.se/files/other/checkpsw.sh
(3)、服务器密码存放方式:在psw-file 里按:用户名[空格或者tab]密码这种规则方式存放
(4)、在客户端配置文件增加:auth-user-pass
2、使用mysql控制控制账户密码
(1)、为防止恶意攻击(如DOS、UDP port flooding),我们生成一个"HMACfirewall"
/usr/local/openvpn/sbin/openvpn--genkey --secret /usr/local/openvpn/easy-rsa/easyrsa3/pki/ta.key
cp /usr/local/openvpn/easy-rsa/easyrsa3/pki/ta.key/usr/local/openvpn/
(2)、安装mysql 5.1以上版本
(3)、登陆mysql
mysql>createdatabase vpn;
mysql>grant allon vpn.* to vpn@‘localhost‘ identified by ‘123.com‘; ##注意增加的mysql账户:vpn 以及密码: 123.com 在/etc/pam.d/openvpn文件中会用到
mysql>flushprivileges;
mysql>use vpn;
mysql>createtable vpnuser(
->name char(20) NOT NULL,
->password char(128) default NULL,
->active int(10) NOT NULL DEFAULT1,
->PRIMARY KEY(name)
->);
mysql>insertinto vpnuser(name,password) values(‘test‘,md5(‘test‘)); ##后边使用testsaslauthd 测试时使用
(4)、下载pam_mysql-0.7RC1.tar.gz
wget http://internap.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure-with-openssl
make
cp.libs/pam_mysql.so /lib/security/
(5)、编辑/etc/pam.d/openvpn文件,内容如下,其中user、password等参数是上面步骤3创建,注意host一定要与步骤3创建的账户匹配:
auth sufficientpam_mysql.so user=vpn passwd=123.com host=localhost db=vpn table=vpnuserusercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2 verbose=1
account requiredpam_mysql.so user=vpn passwd=123.com host=localhost db=vpn table=vpnuserusercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2 verbose=1
crypt(0) -- Used todecide to use MySQL‘s PASSWORD() function or crypt()
0 = No encryption.Passwords in database in plaintext. NOT recommended!
1 = Use crypt
2 = Use MySQLPASSWORD() function
(6)、检查需要用到的组件是否安装
rpm -qa|grep sasl 检查是否安装cyrus-sas1-2.1.22
rpm -qa | grepmysql 检查是否安装mysql-devel
rpm -qa | grep pam 检查是否安装pam-devel
(7)、启动saslauthd:/etc/rc.d/init.d/saslauthdstart 并加入/etc/rc.d/rc.local中自动启动
(8)、测试saslauthd配置是否成功
[root@vpnserver ~]#/usr/sbin/testsaslauthd -u test -p test -s openvpn
0: OK"Success."
(9)、生成openvpn-auth-pam.so,使用openvpn-2.0.*.tar.gz源码,否则会报错:AUTH-PAM:BACKGROUND: user ‘tester‘ failed to authenticate: Permission denied
tar -xzvfopenvpn-2.0.*.tar.gz
cd openvpn-2.0.*
./configure
cd plugin/auth-pamh
make
cpopenvpn-auth-pam.so /usr/local/openvpn/etc/openvpn-auth-pam.so
(10)、修改服务端openvpn配置文件,新增配置项:
tls-auth /usr/local/openvpn/etc/ta.key 0 #注意:最后的参数在服务器端配置为0,客户端配置为1
plugin /usr/local/openvpn/etc/openvpn-auth-pam.so openvpn
client-cert-not-required
username-as-common-name
取消下边配置项的注释:
user nobody
group nobody
修改:verb 3 为verb 4
(11)修改客户端配置文件
注释cert、key两项
增加:tls-auth ta.key 1 、auth-user-pass
本文出自 “小白的小窝” 博客,请务必保留此出处http://qing429.blog.51cto.com/5781009/1589350
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。