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

1unzipeasy-rsa-master.zip

2cp easy-rsa-master/usr/local/openvpn/easy-rsa

3cd/usr/local/openvpn/easy-rsa/easyrsa3/

4cp vars.example vars

5vi 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"

6cd /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/   ##注意是拷贝客户端目录里的文件

 

八、为服务端编写配置文件

1cd/usr/local/openvpn/

2mkdir conf

3mkdir log

4cp/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.250openvpn服务器本机IP

(2)tls-authuser nobodygroup nobody以及倒数三行都是做mysql验证用户名+密码时用到的

(3)duplicate-cn             #如果Client使用的CACommon Name有重复了,或者说客户都使用相同的CA #keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN

(4)comp-lzo                 #对数据进行压缩,注意ServerClient一致

(5)max-clients 100          #定义最大连接数

(6)persist-key              #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys

(7)persist-tun              #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup

6vim /etc/sysctl.conf  修改net.ipv4.ip_forward = 1 然后执行sysctl -p

7cd /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)、为防止恶意攻击(如DOSUDP 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文件,内容如下,其中userpassword等参数是上面步骤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)修改客户端配置文件

注释certkey两项

增加:tls-auth ta.key 1 auth-user-pass


本文出自 “小白的小窝” 博客,请务必保留此出处http://qing429.blog.51cto.com/5781009/1589350

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。