open*** ipsec做机房回来,适合功能上的的应用,如果是大数据传输,还是专线好
#环境搭建:
#[root@×××_S ~]# uname -a
#Linux ×××_S 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
#[root@×××_S ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
#open*** server
#eth0:10.0.0.3 外网(网关,DNS等和平时一样)
#eth1:172.16.1.2 内网 (网关,DNS,都不设置)
#linux open*** client
#eth0 :172.16.1.200
#客户端的网关可以配置为open***内网的172.16.1.2
#也可以安装平时的正常配置。但是如果按照平时正常配置的话,如果在open***不做NAT转换的情况下,需要写一条静态如有指向open***服务器
#############################################################################
#部署前准备
#配置***时间同步
/usr/sbin/ntpdate pool.ntp.org
echo '#time sync by lvnian at 2010-2-1'>>/var/spool/cron/root
echo '*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1'>>/var/spool/cron/root
crontab -l
#############################################################################
#安装lzo依赖包
#mkdir -p /home/lvnian/tools/
#cd /home/lvnian/tools/
[ ! -d /home/lvnian/tools/ ] && mkdir -p /home/lvnian/tools/ ; cd /home/lvnian/tools/
wget http:/down1.chinaunix.net/distfiles/lzo-2.06.tar.gz
tar zxf lzo-2.06.tar.gz
cd lzo-2.06
./configure
make && make install
#############################################################################
#安装openssl依赖包
yum install openssl* -y
rpm -qa openssl*
#############################################################################
#安装open***
mkdir -p /home/lvnian/tools/
cd /home/lvnian/tools/
wget http:/down1.chinaunix.net/distfiles/open***-2.0.6.tar.gz
tar xf open***-2.0.6.tar.gz
cd open***-2.0.6
./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
make
make install
#############################################################################
#配置open***证书
cd /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/
cp vars vars.bak
sed -i '51,55d' vars
=========================
#echo -e "export KEY_COUNTRY="CN"\nexport KEY_PROVINCE="BJ"\nexport KEY_CITY="BEIJING"\nexport KEY_ORG="lvnian"\nexport KEY_EMAIL="759685538@qq.com"\n">> vars
或者
sed -i '50aexport KEY_COUNTRY="CN"\nexport KEY_PROVINCE="BJ"\nexport KEY_CITY="BEIJING"\nexport KEY_ORG="lvnian"\nexport KEY_EMAIL="759685538@qq.com"\n' vars
也就是添加下面内容
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BEIJING"
export KEY_ORG="lvnian"
export KEY_EMAIL="759685538@qq.com"
或者
=========================
sed -i "s/export KEY_COUNTRY="US"/export KEY_COUNTRY="CN"/g" vars
sed -i "s/export KEY_PROVINCE="CA"/export KEY_PROVINCE="BJ"/g" vars
sed -i "s/export KEY_CITY="SanFrancisco"/export KEY_CITY="Beijing"/g" vars
sed -i "s/export KEY_ORG="Fort-Funston"/export KEY_ORG="lvnian"/g" vars
sed -i "s/export KEY_EMAIL="me@myhost.mydomain"/export KEY_EMAIL="574172278@qq.com"/g" vars
#############################################################################
###让刚才修改的配置文件生效
source vars
./clean-all
######=======================
#生成ca证书
./build-ca
ll keys/
#生成服务端key密钥和证书
##./build-key-server servername
./build-key-server server
ll keys/
#生成客户端key密钥和证书(不用输入密码直接登录)
./build-key lvnian
##工作中一般用员工的名称替代lvnian,这个是员工的密钥文件
ll keys/
#生成客户端key密钥和证书(需要输入密码登录)
./build-key-pass guo
# 密码是回车之后首先输入的:Enter PEM pass phrase:密码
#生成传输进行密钥交换是用到的交换密钥协议文件,生成dh1024.pem这个文件
./build-dh
ll keys/dh1024.pem
#生成防止恶意***文件,生成ta.key这个文件
open*** --genkey --secret keys/ta.key
ll keys/ta.key
#############################################################################
##生成才证书说明
##[root@×××_S 2.0]# ll keys/
##total 88
##-------- 01.pem
##-------- 02.pem
##-------- 03.pem
##-------- ca.crt 《== 服务端和所有客户端都需要,这是CA证书
##-------- ca.key 《== 只有服务需要的 CA的key
##-------- dh1024.pem 《==加密算法,只在服务端有
##-------- guo.crt 《==客户端证书,仅在客户端有
##-------- guo.csr
##-------- guo.key 《==客户端KEY,仅在客户端有
##-------- index.txt
##-------- index.txt.attr
##-------- index.txt.attr.old
##-------- index.txt.old
##-------- lvnian.crt 《==客户端KEY,仅在客户端有
##-------- lvnian.csr
##-------- lvnian.key 《==客户端KEY,仅在客户端有
##-------- serial
##-------- serial.old
##-------- server.crt 《== 这个是服务端证书,只在服务端有
##-------- server.csr
##-------- server.key 《== 这个是服务端key,只在服务端有
##-------- ta.key
#vars 脚本是用来穿件环境变量的,设置所需要的变量的脚本
#clean-all 脚本是创建生成ca证书及密钥文件所需要的文件和目录
#build-ca 脚本是生成ca证书的(交互)
#build-dh 脚本是生成Difie-Hellman文件的(交互)
#build-key-server 脚本是生成服务端密钥(交互)
#build-key 脚本是生成客户端密钥(交互)
#build-key-pass 脚本是生成额外还需要密码登录的客户端密钥文件(交互)
#pkitool 脚本直接使用vars的环境变量设置,直接生成证书,非交互式
################################################
#把证书,key,配置文件拷贝到/etc/open***/目录下
mkdir -p /etc/open***/
cd /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/
/bin/cp -ap keys /etc/open***/
cd /home/lvnian/tools/open***-2.0.6/sample-config-files/
/bin/cp server.conf client.conf /etc/open***/
#############################################################################
cd /etc/open***/
cp server.conf server.conf.ori
cp client.conf client.conf.ori
#配置server.conf
cat >server.conf<<eof
local 10.0.0.3
port 52115
proto tcp
dev tun
ca /etc/open***/keys/ca.crt
cert /etc/open***/keys/server.crt
key /etc/open***/keys/server.key
dh /etc/open***/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 172.16.1.0 255.255.255.0"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /etc/open***/open***-status.log
verb 3
log /etc/open***/open***.log
eof
#############################################################################
#########配置文件说明
##local 10.0.0.3 #哪一个本地地址被你×××进行监听
##port 52115 #申明使用的端口,默认1194
##proto tcp #申明使用的协议,默认使用UDP,这里建议使用tcp
##dev tun #申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议。
##ca /etc/open***/keys/ca.crt #Open×××使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法
##cert /etc/open***/keys/server.crt
##key /etc/open***/keys/server.key
##dh /etc/open***/keys/dh1024.pem
##server 10.8.0.0 255.255.255.0 #这个是*** server动态分配给***client的地址,一般不需要更改,这个段不要和网络地址段冲突
##ifconfig-pool-persist ipp.txt
##push "route 172.16.1.0 255.255.255.0" #这个是*** server所在内网的网段,如果有多个内网网段,可以用多个push。此命令的作用是,在***客户端生成这样一台路由指向***服务器
##client-to-client #运行拨号的多个*** 客户端客户端通信。可以ping客户端原理的ip地址
##duplicate-cn 允许多客户端使用一个账号连接,否则一个账号只允许一个客户端连接×××
##keepalive 10 120 #每隔10秒ping一次客户端,如果120秒内没收到客户端的回包,就任务客户端下线了
##comp-lzo #开启压缩功能
##persist-key #当***超时后,重新启动***后,保存上一次使用的私钥,而不重新读取私钥
##persist-tun #通过keepalived检测***超时后,当重启***后,保存tun或者tap设备自带连接状态
##status open***-status.log #open***的日志状态信息
##verb 3 ##指定日志文件的冗余
##log /etc/open***/open***.log #日志文件
##############################################################
##如果有防火墙,那就需要让本机接受外网对open***的端口范围
-A INPUT -p tcp --dport 52115 -j ACCEPT
#############################################################################
重点:开启转发功能
#打开内核转发
echo 1 >/proc/sys/net/ipv4/ip_forward
或者
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl -p
#############################################################################
#启动***
/usr/local/sbin/open*** --config /etc/open***/server.conf &
#############################################################################
##检测open***启动是否成功
lsof -i :52115
netstat -lntup
#############################################################################
#设置开机自启动
echo "#startup open*** service by gao " >>/etc/rc.local
echo "/usr/local/sbin/open*** --config /etc/open***/server.conf & " >>/etc/rc.local
#############################################################################
修改为常用启动方式:
cp /home/lvnian/tools/open***-2.0.6/sample-scripts/open***.init /etc/init.d/open***d
chmod 700 /etc/init.d/open***d
pkill open***
修改/etc/init.d/open***d 148行。改为下面内容
for c in `/bin/ls server.conf 2>/dev/null`; do
#############################################################################
设置常规开机自启动
chkconfig --add open***d
chkconfig --list open***d
chkconfig open***d on
chkconfig --list open***d
======================
[root@×××_S open***]# chkconfig --add open***d
[root@×××_S open***]# chkconfig --list open***d
open***d 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@×××_S open***]# chkconfig open***d on
[root@×××_S open***]# chkconfig --list open***d
open***d 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@×××_S open***]#
#############################################################################
##***正常启动会出现下面一个虚拟网卡
[root@×××_S open***]# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@×××_S open***]#
########################服务端安装成功#####################################################################
#让客户端可以和***内部的服务器相连
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j SNAT --to-source=172.16.1.100
##################################################################
##################################################################
##################################################################
##################################################################
##################################################################
##################################################################
open***日常应用
1、为客户创建证书
方法1
重新进入/home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/目录
运行 . ./vars 导出build-key 运行所需要的环境:
操作如下:
[root@×××_S ~]# cd /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/
[root@×××_S 2.0]#
[root@×××_S 2.0]#source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/keys
注意。这个时候一定不能运行clean-all
[root@×××_S 2.0]# ./build-key CLIENTNAME ( 或者 ./build-key-pass CLIENTNAME)
之后输入相应的信息后,便在key目录下生产了性的客户证书文件了。
注意,生成证书之后也不需要执行./build-dh 等操作了
生成的证书文件 目录:
/home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/keys
下载现有ca.crt 用户名.* 已经配置好client.o***文件发送给用户即可。
方法2、
在服务端的server.conf配置文件中添加下面配置
duplicate-cn
这个配置可以让多个客户端通过一个证书连接*** server。
之后你就把之前的证书,发给他即可
#############################################################################
2、open*** server 如何验证客户端是否登录。
如下:
[root@×××_S open***]# cat open***-status.log
Open××× CLIENT LIST
Updated,Fri Oct 30 13:11:36 2015
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
lvnian,10.0.0.1:52400,11665,7503,Fri Oct 30 13:05:23 2015
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,lvnian,10.0.0.1:52400,Fri Oct 30 13:05:24 2015
GLOBAL STATS
Max bcast/mcast queue length,0
END
[root@×××_S open***]#
下面就可以用处用户lvnian已经登录上open***了
#############################################################################
3、open***客户端单个及多个证书撤销
如果某同事离职,那么需要取消其×××的拨入权限,可以通过在服务器端吊销该客户端的证书来实现,官方给出3个吊销证书的可能情况
a、证书丢失,或者无法使用
b、忘记密码l
c、不让其访问
#####################
撤销单个证书的方法:
1.初始化配置文件,修改openssl配置文件
root@×××_S /]# cd /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/
[root@×××_S 2.0]# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/keys
[root@×××_S 2.0]#
备用建议,在回收授权注释openssl的结尾7行(centos6.X open***-2.2.2不做下面操作也可,不同版本有差别 )
#[pkcsll_section]
#engine_id = pkcsll
#dynamic_path = /usr/lib/engines/engine_pkccsll.so
#MODULE_PATH = $ENV::PKCS11_MOUDLE_PATH
#PIN = $ENV::PKCS11_PID
#init = 0
一般情况下不用上面操作。在撤销不成功的情况下,再考虑这个问题。
#############################################################################
用下面命令撤销用户
命令: ./revoke-full lvnian01
/home/lvnian/tools/open***-2.0.6/easy-rsa/2.0
[root@×××_S 2.0]#
[root@×××_S 2.0]# ./revoke-full lvnian01
Using configuration from /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/openssl.cnf
Revoking Certificate 04.
Data Base Updated
Using configuration from /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/openssl.cnf
lvnian01.crt: C = CN, ST = BJ, L = BEIJING, O = lvnian, OU = lvnian, CN = lvnian01, emailAddress = 759685538@qq.com
error 23 at 0 depth lookup:certificate revoked
[root@×××_S 2.0]#
===========================
吊销完之后,会在keys中生成一个crl.pem文件,这个文件里面有证书的内容
[root@×××_S 2.0]# cat keys/crl.pem
-----BEGIN X509 CRL-----
MIIBXzCByTANBgkqhkiG9w0BAQQFADCBgzELMAkGA1UEBhMCQ04xCzAJBgNVBAgT
AkJKMRAwDgYDVQQHEwdCRUlKSU5HMQ8wDQYDVQQKEwZsdm5pYW4xDzANBgNVBAsT
Bmx2bmlhbjESMBAGA1UEAxMJbHZuaWFuIENBMR8wHQYJKoZIhvcNAQkBFhA3NTk2
ODU1MzhAcXEuY29tFw0xNTEwMzAwNTQ1NDdaFw0xNTExMjkwNTQ1NDdaMBQwEgIB
BBcNMTUxMDMwMDU0NTQ3WjANBgkqhkiG9w0BAQQFAAOBgQAEskt57RD5iDl4B3U5
l64niPgHpikeFcKQL5+jUaiCH01LVnrAuBeuKcbaORa/dR4yc/okhFbXk95/9FLv
wJTLdaAGznFpHs+oy1pgqgPt2x60/kkaCoqNNMcjtsW0k69iiWN3hPISF9LP0XHq
FzyeE5+ZuWMihsQaVKFWiVUYtQ==
-----END X509 CRL-----
[root@×××_S 2.0]#
===========================
同时在index.txt中有的用户信息中被吊销用户首信息会显示为R
[root@×××_S 2.0]# cat keys/index.txt
V 251026022728Z 01 unknown /C=CN/ST=BJ/L=BEIJING/O=lvnian/OU=lvnian/CN=server/emailAddress=759685538@qq.com
V 251026022751Z 02 unknown /C=CN/ST=BJ/L=BEIJING/O=lvnian/CN=lvnian/emailAddress=759685538@qq.com
V 251026022826Z 03 unknown /C=CN/ST=BJ/L=BEIJING/O=lvnian/CN=guo/emailAddress=759685538@qq.com
R 251027050244Z 151030054547Z 04 unknown /C=CN/ST=BJ/L=BEIJING/O=lvnian/OU=lvnian/CN=lvnian01/emailAddress=759685538@qq.com
[root@×××_S 2.0]#
===========================
把吊销的crl.pem 文件复制到/etc/open***/keys目录下。
在到open***的配置文件中加载下面一行内容才算吊销成功
crl-verify /etc/open***/keys/crl.pem
命令操作如下:
cp /home/lvnian/tools/open***-2.0.6/easy-rsa/2.0/keys/crl.pem /etc/open***/keys/
sed -i '$acrl-verify /etc/open***/keys/crl.pem ' /etc/open***/server.conf
之后重启open***。之后这个账号就无法再登录了
客户端登录的时候,会出现下面问题:
Fri Oct 30 13:59:57 2015 Re-using SSL/TLS context
Fri Oct 30 13:59:57 2015 LZO compression initialized
Fri Oct 30 13:59:57 2015 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
Fri Oct 30 13:59:57 2015 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
Fri Oct 30 13:59:57 2015 Local Options hash (VER=V4): '69109d17'
Fri Oct 30 13:59:57 2015 Expected Remote Options hash (VER=V4): 'c0103fa8'
Fri Oct 30 13:59:57 2015 Attempting to establish TCP connection with 10.0.0.3:52115
Fri Oct 30 13:59:57 2015 TCP connection established with 10.0.0.3:52115
Fri Oct 30 13:59:57 2015 TCPv4_CLIENT link local: [undef]
Fri Oct 30 13:59:57 2015 TCPv4_CLIENT link remote: 10.0.0.3:52115
Fri Oct 30 13:59:57 2015 TLS: Initial packet from 10.0.0.3:52115, sid=7bf18f19 5a70c3c0
Fri Oct 30 13:59:57 2015 VERIFY OK: depth=1, /C=CN/ST=BJ/L=BEIJING/O=lvnian/OU=lvnian/CN=lvnian_CA/emailAddress=759685538@qq.com
Fri Oct 30 13:59:57 2015 VERIFY OK: depth=0, /C=CN/ST=BJ/L=BEIJING/O=lvnian/OU=lvnian/CN=server/emailAddress=759685538@qq.com
Fri Oct 30 13:59:57 2015 Connection reset, restarting [0]
Fri Oct 30 13:59:57 2015 TCP/UDP: Closing socket
Fri Oct 30 13:59:57 2015 SIGUSR1[soft,connection-reset] received, process restarting
Fri Oct 30 13:59:57 2015 Restart pause, 5 second(s)
小结:将生产的crl.pem吊销文件复制到/etc/open***/keys/.并在server.conf中添加如下一行内容,重启×××服务,当用户拨入时,Open***就会读取吊销列表中的客户端。
并禁止其拨入。当被撤销的客户端尝试新的连接的时候,***服务会检查加载crl.prm文件,匹配时,阻止连接。当再次revoke其他证书时,这个crl.pem这个文件会被修改。
这个时候可以把/etc/open***/keys/crl.pem 文件改为前缀为用户名。再到server.conf中把配置文件中的注销名称修改为修改后的文件名称即可。
如上面的lvnian01用户,我可以这样修改
mv /etc/open***/keys/crl.pem /etc/open***/keys/lvnian01.pem
sed -i 's#crl-verify /etc/open***/keys/crl.pem #crl-verify /etc/open***/keys/lvnian01.pem #g' /etc/open***/server.conf
如果要吊销多个用户,可以通过上面修改前缀的方式,来吊销多个用户的。
######################################################################
######################################################################
######################################################################
如果不小心吊销错用户了,如何修改回来。
直接把server.conf里面的下面内容注销就可以了
crl-verify /etc/open***/keys/crl.pem
之后重启即可
小结:
open***一般用于功能性的使用,如果是大数据的传输,还是用光纤或者专线比较好。
open***用于读写分离的数据库中,一般用open***远程写,写完之后,远程数据同步到本地,读本地,一般不会读远程