所需软件包

open***所需文件:http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
 服务器软件http://down1.chinaunix.net/distfiles/open***-2.0.9.tar.gz
 Mysql认证软件:http://jaist.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz
 客户端拨号工具:http://www.open***.se/files/install_packages/open***-2.0.9-gui-1.0.3-install.exe



一、安装准备:
程序目录: /usr/local/open***
配置目录: /etc/open***

安装open***时需要安装LZO软件包

tar zxvf lzo-2.03.tar.gz
 cd lzo-2.03
 ./configure && make && make install
 cat >> /etc/ld.so.conf << EOF
 /lib
 /lib64
 /usr/lib
 /usr/lib64
 /usr/local/lib
 /usr/local/lib64
 EOF
 ldconfig


二、安装配置Open***并生成证书
1、安装Open***

tar zxvf open***-2.0.9.tar.gz
 cd open***-2.0.9
 ./configure -prefix=/usr/local/open*** && make && make install
 mkdir -p /etc/open***
 cp -R open***-2.0.9/easy-rsa /etc/open***
 cd /etc/open***/easy-rsa/2.0/



此目录下以许多程序及脚本, 以下为使用到的程序及脚本说明
vars 脚本, 是用来创建环境变量,设置所需要要的变量的脚本
clean-all 脚本,是创建生成ca证书及密钥文件所需要的文件及目录
build-ca 脚本, 生成ca证书(交互)
build-dh 脚本, 生成Diffie-Hellman文件(交互)
build-key-server 脚本, 生成服务器端密钥(交互)
build-key 脚本, 生成客户端密钥(交互)
pkitool 脚本, 直接使用vars的环境变量设置, 直接生成证书(非交互)

2、生成CA证书及密钥

chmod u+x  *
 编辑vars文件,生成环境变量, vars里的参数根据自己需要改变.
 export KEY_SIZE=2048 #生成密钥的位数
 export KEY_COUNTRY=CN #定义所在的国家编码, 2个字符
 export KEY_PROVINCE=BeiJing #定义所在的省份
 export KEY_CITY=BeiJing #定义所在的城市
 export KEY_ORG=”××× Super” #定义所在的组织
 export KEY_OU=”××× COM” #定义所在的单位
 export KEY_EMAIL=”test@gmail.com” #定义你的邮件地址
 修改好vars文件后就可以开始生成ca证书及密钥文件了!
 source vars
 初始化keys目录,创建生成ca证书及密钥文件所需要的文件和目录
 ./clean-all
 生成Root Ca证书, 用于签发Server和Client证书
 ./build-ca  可以在keys下看到已经生成了ca.crt ca.key文件
 ls keys/*
 生成Diffie-Hellman文件
 ./build_dh
 ls -l keys/dh2048.pem



生成服务器使用的××× server Ca证书
./build-key-server server
server是你为CA证书起的一个名字, 以server名字为例,生成的服务器使用的CA证书文件为: server.crt server.key
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
生成客户端CA证书及密钥,用户登陆验证;因为我们这里客户端采用auth-user-pass的验证方式,所以我们这里只是演示下
./build-key larry
将在keys目录下生成larry.crt larry.csr larry.key三个客户端证书   
将ca.crt ca.key larry.crt larry.csr larry.key五个文件打包,以备客户端***使用
生成带密码的证书文件
./build-key --pass larry
./pkitool --pass larry
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3、创建主配置文件

模板文件在open***-2.0.9/sample-config-files
 服务器端配置文件名: server.conf
 客户端配置文件名为: client.conf
 本例的配置文件 为:/etc/open***/open***.conf
 port 11994 #open***默认端口为1194
 proto tcp
 dev tun
 ca "/etc/open***/easy-rsa/2.0/keys/ca.crt"
 cert "/etc/open***/easy-rsa/2.0/keys/server.crt"
 key "/etc/open***/easy-rsa/2.0/keys/server.key"
 dh "/etc/open***/easy-rsa/2.0/keys/dh2048.pem"
 server 172.16.50.0 255.255.255.0
 push "dhcp-option DNS 219.141.148.37"
 push "dhcp-option DNS 219.151.140.10"
 push "route 172.16.50.0 255.255.255.0"
 push "route 10.0.0.0 255.0.0.0" 
 push "route 192.168.1.0 255.255.255.0" 

 comp-lzo
 ifconfig-pool-persist ipp.txt
 keepalive 10 120
 mode server
 tls-server
 client-cert-not-required
 username-as-common-name
 user nobody
 group nobody
 persist-key
 persist-tun
 status /var/log/open***-status.log
 verb 4

 max-clients 55
 ##Client 之间可以相互访问
 client-to-client
 #允许一个用户多次访问
 #duplicate-cn
 #
 log /var/log/open***.log
 log-append /var/log/open***.log
 script-security 2
 client-cert-not-required


4、创建启动脚本

cp -f open***-2.0.9/sample-scripts/open***.init /etc/init.d/open***
 因为是源码编译安装并指定了目录,所以需要修改/etc/init.d/open***的69行
 open***_locations="/usr/sbin/open*** /usr/local/sbin/open***"
 修改为:
 open***_locations="/usr/local/open***/sbin/open***"
 chkconfig –add open***
 service open*** start
 service open*** stop
 5、开启NAT转发,配置IPTABLE
 echo 1 > /proc/sys/net/ipv4/ip_forward
 /etc/sysctl.conf 配置文件增加:net.ipv4.ip_forward = 1
 iptables -t nat -A POSTROUTING -s 172.16.50.0/24 -j SNAT –to server_ipaddress



三、整合mysql,实现用户/密码登陆验证
1、安装mysql

yum -y install mysql-server mysql-devel mysql
 创建open***数据库,设置账号赋予权限
 create database open***;
 grant all privileges on open***.* to 'open***'@'localhost' identified by 'passwd123';
 FLUSH PRIVILEGES;



用open***用户登陆,执行相应sql语句,创建用户表和日志表:



1. CREATE TABLE IF NOT EXISTS `openuser` (   `username` char(32) COLLATE utf8_unicode_ci NOT NULL,   `password` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,   `active` int(10) NOT NULL DEFAULT '1',   `creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,   `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL,   `email` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,   `note` text COLLATE utf8_unicode_ci,   `quota_cycle` int(10) NOT NULL DEFAULT '30',   `quota_bytes` bigint(20) NOT NULL DEFAULT '10737418240',   `enabled` int(10) NOT NULL DEFAULT '1',   PRIMARY KEY (`username`),   KEY `idx_active` (`active`),   KEY `idx_enabled` (`enabled`) ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
2.  
3. CREATE TABLE IF NOT EXISTS `log` (   `username` varchar(32) COLLATE utf8_unicode_ci NOT NULL,   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,   `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',   `trusted_ip` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,   `trusted_port` int(10) DEFAULT NULL,   `protocol` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,   `remote_ip` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,   `remote_netmask` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,   `bytes_received` bigint(20) DEFAULT '0',   `bytes_sent` bigint(20) DEFAULT '0',   `status` int(10) NOT NULL DEFAULT '1',   KEY `idx_username` (`username`),   KEY `idx_start_time` (`start_time`),   KEY `idx_end_time` (`end_time`) ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

2、安装配置pam_mysql模块

yum -y install  pam-devel
 tar zxvf pam_mysql-0.7RC1.tar.gz
 cd pam_mysql-0.7RC1
 ./configure && make
 在此目录下有一个.libs的隐藏目录
 ls .libs/
 pam_mysql.la  pam_mysql.lai  pam_mysql.o  pam_mysql.so
 拷贝文件到64为系统指定目录下
 cp -f .libs/pam_mysql.sl /lib64/security/
 touch /etc/pam.d/open*** 创建文件内容如下
 auth            sufficient      pam_mysql.so \
 user=open*** passwd=passwd123 host=localhost db=open*** \
 table=openuser usercolumn=username passwdcolumn=password \
 where=active=1 sqllog=0 crypt=1
  
 account         required        pam_mysql.so \
 user=open*** passwd=passwd123 host=localhost db=open*** \
 table=openuser usercolumn=username passwdcolumn=password \
 where=active=1 sqllog=0 crypt=1



/etc/init.d/saslauthd start 启动系统自带服务
测试:
testsaslauthd -u test -p test -s open***
如果出现: 0: OK “Success.”, 表示测试成功
如果出现错误可以从系统日志及安全日志里看到出错信息:
系统日志: /var/log/messages
安全日志: /var/log/secure

3、修改open***主配置文件,

cd open***-2.0.9/plugin/auth-pam
 make && cp -f open***-auth-pam.so /lib64/security/
 cp -f open***-auth-pam.so /etc/open***
 主配置文件增加如下:

 # user/pass auth from mysql
 plugin /etc/open***/open***-auth-pam.so open***
 #### 记录用户登陆状态脚本 #### 
 client-connect  /etc/open***/connect.sh
 client-disconnect  /etc/open***/dis-connected.sh



connect.sh、dis-connected.sh脚本文件见附件
四、客户端安装配置
open***.se下载GUI程序,并将服务器端ca文件下载并放到config目录,设置o***文件如下

client
 dev tun0
 proto tcp
 remote serverIP port
 resolv-retry infinite
 nobind
 persist-key
 persist-tun
 ca ca.crt
 auth-user-pass
 comp-lzo
 verb 4



到此Open***已经配置完成

参考文档open***-howto.pdf

 


转载于:https://blog.51cto.com/5iqiong/1071914