一、安装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
1、unzipeasy-rsa-master.zip
2、cp easy-rsa-master/usr/local/open***/easy-rsa
3、cd/usr/local/open***/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 "ttt@ttt.com"
set_varEASYRSA_REQ_OU "LY OPEN×××"
6、cd /etc/open***/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/下创建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
3、创建客户端key及生成证书: ./easyrsa gen-req lingyu ###lingyu为创建根证书是输入的Common Name
4、将得到的lingyu.req导入并签约证书
cd/usr/local/open***/easy-rsa/easyrsa3
导入req: ./easyrsaimport-req /etc/open***Client/easy-rsa/easyrsa3/pki/reqs/lingyu.req lingyu
5、签约证书: ./easyrsa sign client lingyu
六、检查服务端及客户端生成的文件
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/ ##注意是拷贝客户端目录里的文件
八、为服务端编写配置文件
1、cd/usr/local/open***/
2、mkdir conf
3、mkdir log
4、cp/root/open***/open***-2.3.6/sample/sample-config-files/server.conf/usr/local/open***/conf/server.conf
vi server.conf
5、编辑server.conf内容如下:
注意:
(1)、local 192.168.1.250是open***服务器本机IP
(2)、tls-auth、user nobody、group nobody以及倒数三行都是做mysql验证用户名+密码时用到的
(3)、duplicate-cn #如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA #和keys连接×××,一定要打开这个选项,否则只允许一个人连接×××
(4)、comp-lzo #对数据进行压缩,注意Server和Client一致
(5)、max-clients 100 #定义最大连接数
(6)、persist-key #通过keepalive检测超时后,重新启动×××,不重新读取keys,保留第一次使用的keys
(7)、persist-tun #通过keepalive检测超时后,重新启动×××,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
6、vim /etc/sysctl.conf 修改net.ipv4.ip_forward = 1 然后执行sysctl -p
7、cd /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)、为防止恶意***(如DOS、UDP 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***文件,内容如下,其中user、password等参数是上面步骤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)修改客户端配置文件
注释cert、key两项
增加:tls-auth ta.key 1 、auth-user-pass
转载于:https://blog.51cto.com/qing429/1589350