一、安装lzo

[root@*** ~]# tarxf lzo-2.08.tar.gz

[root@*** ~]# cdlzo-2.08

[root@***lzo-2.08]# ./configure && make && make install

 

二、安装open***

[root@*** ~]# tar xzvfopen***-2.3.4.tar.gz

[root@*** ~]# cdopen***-2.3.4

[root@***open***-2.3.4]# ./configure --prefix=/usr/local/open***--with-lzo-headers=/usr/local/include/ --with-lzo-lib=/usr/local/lib

[root@***open***-2.3.4]# make && make install

 

三、配置easyrsa服务端

https://github.com/Open×××/easy-rsa下载easy-rsa-master.zip

1unzipeasy-rsa-master.zip

2cp easy-rsa-master/usr/local/open***/easy-rsa

3cd/usr/local/open***/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       "ttt@ttt.com"

set_varEASYRSA_REQ_OU            "LY OPEN×××"

6cd /etc/open***/easy-rsa/easyrsa3/执行. ./vars

 

四、创建服务端证书及key

(1).初始化: ./easyrsa init-pki

001q4rSqty6OkaqiSX2f4&690


(2).创建根证书:  ./easyrsa build-ca

001q4rSqty6Okardu4Ea0&690


(3).创建服务器端证书:  ./easyrsa gen-req server nopass

001q4rSqty6Okau7eTv11&690

 

(4).签约服务器端证书: ./easyrsa sign server server

001q4rSqty6Okavcwi32f&690

 

(5).创建Diffie-Hellman,确保key穿越不安全网络的命令:./easyrsa gen-dh

001q4rSqty6OkavYRss88&690

 

五、创建客户端证书

1、在/etc/下创建open***_client目录

mkdir -p/etc/open***Client

cd /etc/open***Client/

unzipeasy-rsa-master.zip

mv easy-rsa-mastereasy-rsa

cd  easy-rsa/easyrsa3

2、初始化:./easyrsainit-pki

001q4rSqty6OkazJJKL8f&690


3、创建客户端key及生成证书:  ./easyrsa gen-req lingyu    ###lingyu为创建根证书是输入的Common Name

001q4rSqty6OkaAmWDjbd&690

 

4、将得到的lingyu.req导入并签约证书

cd/usr/local/open***/easy-rsa/easyrsa3

导入req:    ./easyrsaimport-req /etc/open***Client/easy-rsa/easyrsa3/pki/reqs/lingyu.req lingyu

001q4rSqty6OkaB6E6R29&690

 

5、签约证书: ./easyrsa sign client lingyu

001q4rSqty6OkaBLKpY9a&690


六、检查服务端及客户端生成的文件

1、服务端:

/usr/local/open***/easy-rsa/easyrsa3/pki/ca.crt

/usr/local/open***/easy-rsa/easyrsa3/pki/dh.pem

/usr/local/open***/easy-rsa/easyrsa3/pki/reqs/LY.req

/usr/local/open***/easy-rsa/easyrsa3/pki/reqs/server.req

/usr/local/open***/easy-rsa/easyrsa3/pki/private/ca.key

/usr/local/open***/easy-rsa/easyrsa3/pki/private/server.key

/usr/local/open***/easy-rsa/easyrsa3/pki/issued/LY.crt

/usr/local/open***/easy-rsa/easyrsa3/pki/issued/server.crt

2、客户端:

/etc/open***Client/easy-rsa/easyrsa3/pki/private/LY.key

/etc/open***Client/easy-rsa/easyrsa3/pki/reqs/LY.req    ###这个文件被我们导入到了服务端文件,所以那里也有

 

七、拷贝文件

1、拷贝服务器密钥及证书等到open***目录

cp/usr/local/open***/easy-rsa/easyrsa3/pki/ca.crt /usr/local/open***/

cp /usr/local/open***/easy-rsa/easyrsa3/pki/private/server.key/usr/local/open***/

cp/usr/local/open***/easy-rsa/easyrsa3/pki/issued/server.crt /usr/local/open***/

cp/usr/local/open***/easy-rsa/easyrsa3/pki/dh.pem /usr/local/open***/

 

2、拷贝客户端密钥及证书等到client目录

cp /usr/local/open***/easy-rsa/easyrsa3/pki/ca.crt/etc/open***_client/

cp/usr/local/open***/easy-rsa/easyrsa3/pki/issued/lingyu.crt /etc/open***_client/

cp/etc/open***Client/easy-rsa/easyrsa3/pki/private/lingyu.key/etc/open***_client/   ##注意是拷贝客户端目录里的文件

 

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

1cd/usr/local/open***/

2mkdir conf

3mkdir log

4cp/root/open***/open***-2.3.6/sample/sample-config-files/server.conf/usr/local/open***/conf/server.conf

vi server.conf

5、编辑server.conf内容如下:

001q4rSqty6OkaD25FK50&690

注意:

(1)local 192.168.1.250open***服务器本机IP

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

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

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

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

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

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

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

7cd /etc/open***Client 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、安装open***-gui工具,将步骤11下载的三个文件拷贝到C:\Program Files (x86)\Open×××\config

2、将C:\Program Files (x86)\Open×××\sample-config\client.o***复制到C:\Program Files (x86)\Open×××\config

编辑client.o***

client

devtap

protoudp

remote open***_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、在服务器上重启open***服务:

/usr/local/open***/sbin/open***--daemon --config /usr/local/open***/conf/server.conf

4、用客户端直接连接,查看是否配置成功

 

十一、配置OPEN×××登陆认证方式:

1、使用脚本+密码文件控制方式:

(1)、在服务器端server.conf里增加

script-security3 ###--加入脚本处理,如用密码验证

auth-user-pass-verify/etc/open***/checkpsw.sh via-env ###指定只用的认证脚本

client-cert-not-required#####不请求客户的CA证书,使用User/Pass验证,如果同时启用证书和密码认证,注释掉该行

username-as-common-name### 使用客户提供的UserName作为Common Name

(2)下载checkpsw.sh按脚本要求存放,下载地址:http://open***.se/files/other/checkpsw.sh

(3)服务器密码存放方式:在psw-file 里按:用户名[空格或者tab]密码这种规则方式存放

(4)、在客户端配置文件增加:auth-user-pass

2、使用mysql控制控制账户密码

(1)、为防止恶意***(如DOSUDP port flooding),我们生成一个"HMACfirewall"

/usr/local/open***/sbin/open***--genkey --secret /usr/local/open***/easy-rsa/easyrsa3/pki/ta.key

cp /usr/local/open***/easy-rsa/easyrsa3/pki/ta.key/usr/local/open***/

(2)安装mysql 5.1以上版本

(3)、登陆mysql

mysql>createdatabase ***;

mysql>grant allon ***.* to ***@'localhost' identified by '123.com';   ##注意增加的mysql账户:*** 以及密码: 123.com /etc/pam.d/open***文件中会用到

mysql>flushprivileges;

mysql>use ***;

mysql>createtable ***user(

         ->name char(20) NOT NULL,

         ->password char(128) default NULL,

         ->active int(10) NOT NULL DEFAULT1,

         ->PRIMARY KEY(name)

         ->);

mysql>insertinto ***user(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/open***文件,内容如下,其中userpassword等参数是上面步骤3创建,注意host一定要与步骤3创建的账户匹配:

auth sufficientpam_mysql.so user=*** passwd=123.com host=localhost db=*** table=***userusercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2 verbose=1

account requiredpam_mysql.so user=*** passwd=123.com host=localhost db=*** table=***userusercolumn=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@***server ~]#/usr/sbin/testsaslauthd -u test -p test -s open***

0: OK"Success."

(9)、生成open***-auth-pam.so,使用open***-2.0.*.tar.gz源码,否则会报错:AUTH-PAM:BACKGROUND: user 'tester' failed to authenticate: Permission denied

tar -xzvfopen***-2.0.*.tar.gz

cd open***-2.0.*

./configure

cd plugin/auth-pamh

make

cpopen***-auth-pam.so /usr/local/open***/etc/open***-auth-pam.so

(10)、修改服务端open***配置文件,新增配置项:

tls-auth /usr/local/open***/etc/ta.key 0  #注意:最后的参数在服务器端配置为0,客户端配置为1

plugin /usr/local/open***/etc/open***-auth-pam.so open***

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