Centos7.2 + Open×××
一、Open××× 介绍×××直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,Open×××无疑是Linux下开源×××的先锋,提供了良好的性能和友好的用户GUI。
它大量使用了OpenSSL加密库中的SSLv3/TSv1协议函数库。
目前Open×××能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X 与Microsoft Windows 以及Android 和iOS上运行,并包含了许多安全性的功能。它并不是一个基于Web的×××软件,也不与IPSec及其他×××软件包兼容。
1、Open××× 简介
Open×××是一个基于OpenSSL库的应用层×××实现。和传统相比,它的优点是简单易用。
Open×××允许参与建立×××的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协议函式库。
Open×××2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密。 Open×××所有的通信都基于一个单一的IP端口, 默认且推荐使用UDP协议通讯,同时TCP也被支持。Open×××连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客 户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。Open×××提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们, 可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。
2、Open×××原理
Open×××的技术核心是虚拟网卡,其次是SSL协议实现。
(1) SSL协议
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL协议提供的服务:(1)认证用户和服务器,确保数据发送到正确的客户机和服务器;(2)加密数据以防止数据中途被窃取;(3)维护数据的完整性,确保数据在传输过程中不被改变。
工作流程,主要分为两个认证阶段:服务器认证阶段和用户认证阶段。(1)服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。 (2)用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
SSL协议提供的安全通道的特性:1)机密性:SSL洗衣使用密钥加密通信数据。2)可靠性:服务器和客户端都会被认证,客户的认证是可选的。3)完整性:SSL协议会对传送的数据进行完整性检查。
(2)虚拟网卡
虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其他网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接受到。虚拟网卡在很多操作系统下都有相应的实现,这也是Open×××能够跨越平台一个很重要的因素。
在Open***中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。
3、Open×××网络原理
Open×××所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。Open×××连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。Open×××提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给Open×××的官方端口为1194。Open××× 2.0以后版本每个进程可以同时管理数个并发的隧道。
Open×××使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定×××协议的情况下。
二、环境准备
生产环境物理机:Centos7.2
Open×××版本:open***-2.4.4
easy-rsa版本:easy-rsa-3.0
服务器内网信息:
IP:172.28.1.189 Netmask:255.255.255.0 Gateway:172.28.1.1
Open×××网络信息:
IP:10.8.0.0 Netmask:255.255.255.0
三、生产环境物理机安装
在此安装的是 Centos7.2版本的操作系统。
cat /etc/system-release # 查看系统版本
http://s1.运维网.com/images/20180909/1536475846717982.png
uname -r
uname -m
http://s1.运维网.com/images/20180909/1536476031173636.png
ip addr #查看物理服务器的IP地址信息
http://s1.运维网.com/images/20180909/1536476134298153.png
四、服务器配置时钟同步
yum -y install ntpdate
http://s1.运维网.com/images/20180909/1536476260917429.png
/usr/sbin/ntpdate pool.ntp.org
http://s1.运维网.com/images/20180909/1536476472414558.png
echo '#time sync' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
http://s1.运维网.com/images/20180909/1536477018742143.png
注:服务器时钟同步比较重要,如果×××服务器和拨号的计算机客户端不一样,可能会导致***连接失败。
五、Open××× 服务端安装
1、安装epel-release安装包
yum install epel-release
http://s1.运维网.com/images/20180909/1536477683413446.png
2、安装lsb_release
lsb_release -a
http://s1.运维网.com/images/20180909/1536477835526638.png
提示没有找到lsb_release ,需要安装lsb_release:
yum -y install redhat-lsb
http://s1.运维网.com/images/20180909/1536478216264401.png
再次运行lsb_release:
lsb_release -a
http://s1.运维网.com/images/20180909/1536478286621156.png
3、安装Open××× 服务端等需要的其他服务
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig makecache
http://s1.运维网.com/images/20180909/1536478469140883.png
4、安装Open×××服务
yum install -y open***
http://s1.运维网.com/images/20180909/1536478549625821.png
5、安装easy-rsa服务
yum install -y easy-rsa
http://s1.运维网.com/images/20180909/1536478676746283.png
6、验证Open×××用户及组
groupadd open***
useradd -g open*** -M -s /sbin/nologin open***
http://s1.运维网.com/images/20180909/1536478833535213.png
7、创建Open×××的存放位置
mkdir /etc/open***
http://s1.运维网.com/images/20180909/1536479050454129.png
8、复制相关文件至Open×××目录
cp -R /usr/share/easy-rsa/ /etc/open***/
cp /usr/share/doc/open***-2.4.6/sample/sample-config-files/server.conf /etc/open***/
http://s1.运维网.com/images/20180909/1536479395230483.png
9、配置Open××× 配置文件
vim /etc/open***/server.conf
http://s1.运维网.com/images/20180909/1536479569783479.png
提示找不到 vim,需要安装vim
yum install -y vim
http://s1.运维网.com/images/20180909/1536479627885808.png
vim /etc/open***/server.conf
具体配置如下:
port1194 #端口:1194
proto udp #协议使用:UDP
dev tun
ca /etc/open***/easy-rsa/3.0/pki/ca.crt #此处配置的是绝对路径
cert /etc/open***/easy-rsa/3.0/pki/issued/wwwserver.crt
key /etc/open***/easy-rsa/3.0/pki/private/wwwserver.key # This file should be kept secret
dh /etc/open***/easy-rsa/3.0/pki/dh.pem
tls-auth /etc/open***/ta.key 0
server 10.8.0.0 255.255.255.0 #内网服务器地址
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 202.101.172.35" #配置DNS
push "dhcp-option DNS 8.8.8.8" #配置DNS
keepalive 10 120
cipher AES-256-CBC
comp-lzo
max-clients 100 # 最大客户端连接数量
user open***
group open***
persist-key
persist-tun
status open***-status.log # 状态日志
log-appendopen***.log # Open×××日志
verb 3
mute 20
10、配置vars配置文件
vim /etc/open***/easy-rsa/3.0/vars
修改第 45、65、76、 84-89、 97、 105、 113、 117、 134、 139、 171、 180、 192行:
具体配置信息如下:
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "BEIJING"
set_var EASYRSA_REQ_CITY "BEIJING"
set_var EASYRSA_REQ_ORG "Open××× CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL "215234105@qq.com"
set_var EASYRSA_REQ_OU "Open*** EASY CA"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7000
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "Open××× CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST "sha256"
11、创建CA,并设置密码:
cd /etc/open***/easy-rsa/3.0
./easyrsa init-pki
http://s1.运维网.com/images/20180909/1536484866256074.png
./easyrsa build-ca
http://s1.运维网.com/images/20180909/1536485051431985.png
在此要输入ca的密码:(ca.com),需要输入两次。
http://s1.运维网.com/images/20180909/1536485105832893.png
此处要输入组织:(Open××× CERTIFICATE AUTHORITY)
http://s1.运维网.com/images/20180909/1536485579230146.png
12、创建服务端证书,生成请求,使用gen-req来生成req
./easyrsa gen-dh
http://s1.运维网.com/images/20180909/1536485814367922.png
open*** --genkey --secret ta.key
cp -r ta.key /etc/open***/
http://s1.运维网.com/images/20180909/1536485934704676.png
13、创建服务端证书、密码为:openserver.com
./easyrsagen-req wwwserver
http://s1.运维网.com/images/20180909/1536486199253287.png
14、签发证书,签约服务端证书
./easyrsa sign-req server wwwserver
http://s1.运维网.com/images/20180909/1536486420664350.png
15、生成Windows客户端用户
在此生成用户的,名字为www001(此名字可自主定义)
./easyrsa build-client-full www001
http://s1.运维网.com/images/20180909/1536486722462610.png
注:生成客户端用户的时候会提示设置密码,可以直接回车密码为空,也可以输入密码,待客户端连接时需要输入密码。
16、查看客户端证书存放路径
ls -l /etc/open***/easy-rsa/3.0/pki/issued/www001.crt
ls -l /etc/open***/easy-rsa/3.0/pki/private/www001.key
http://s1.运维网.com/images/20180909/1536486908567435.png
17、配置sysctl.com文件
vim /etc/sysctl.conf
在末尾加入:net.ipv4.ip_forward=1
http://s1.运维网.com/images/20180909/1536487088582686.png
保存后执行:sysctl -p
sysctl -p
http://s1.运维网.com/images/20180909/1536487132288872.png
18、防火墙配置
firewall-cmd --list-all 查看目前的防火墙列表
http://s1.运维网.com/images/20180909/1536487396201581.png
防火墙配置详细信息如下:
systemctl start firewalld.service
firewall-cmd --state
firewall-cmd --zone=public --list-all
http://s1.运维网.com/images/20180909/1536487561493773.png
firewall-cmd --add-service=open*** --permanent
firewall-cmd --add-port=1194/udp --permanent
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --add-source=10.8.0.0 --permanent
firewall-cmd --query-source=10.8.0.0 --permanent
firewall-cmd --add-masquerade --permanent
firewall-cmd --query-masquerade --permanent
firewall-cmd --reload
http://s1.运维网.com/images/20180909/1536487854355523.png
19、启动Open×××
systemctl start open***@server
http://s1.运维网.com/images/20180909/1536488026824577.png
注:第一次启动的时候可能会提示,重新执行systemctl start open***@server,然后再输入服务端证书密码:(openserver.com)
20、查看Open×××进程
ps -aux | grep open***
http://s1.运维网.com/images/20180909/1536488174158288.png
21、查看安装Open×××后的网卡信息
ip addr
http://s1.运维网.com/images/20180909/1536488353203507.png
六、客户端open***安装配置
windows 64 位的open***版本为:2.4.5 可以从官网上下载,也可以从网盘下载:
链接: https://pan.baidu.com/s/12Bsx3D2RQMSJfo33n-fUxA 密码: 3e6t
1、客户端需要的证书文件:
www001.crt www001.key ca.crt ta.key
创建一个存放客户端证书的文件夹,然后将客户端的证书下载到本地电脑
mkdir -p /etc/open***/client
cp -r /etc/open***/easy-rsa/3.0/pki/issued/www001.crt /etc/open***/client/
cp -r /etc/open***/easy-rsa/3.0/pki/private/www001.key /etc/open***/client/
cp -r /etc/open***/easy-rsa/3.0/pki/ca.crt /etc/open***/client/
cp -r /etc/open***/ta.key /etc/open***/client/
ls /etc/open***/client/
http://s1.运维网.com/images/20180909/1536489037482556.png
2、复制完成后,将客户端正在下载到本地电脑,在此不详细描述。
然后需要在本地电脑上创建客户端配置文件:www001.o*** ,具体配置信息如下:
client
dev tun
proto udp
resolv-retry infinite
nobind
remote 115.236.66.185 1194 #此处要更换成出口的公网IP地址
ns-cert-type server
comp-lzo
ca ca.crt
cert www001.crt
key www001.key
tls-auth ta.key 1
keepalive 10 120
persist-key
persist-tun
verb 5
redirect-gateway
route-method exe
route-delay 2
status www001-status.log
log-append www001.log
3、windows 10操作系统安装客户端
右击客户端安装包,已管理员身份运行,然后点击“Next”:
http://s1.运维网.com/images/20180909/1536489533217776.png
点击“I Agree”:
http://s1.运维网.com/images/20180909/1536489579891021.png
选择安装项,在此选择默认安装项,然后点击“Next”:
http://s1.运维网.com/images/20180909/1536489621549491.png
选择安装路径,在此选择安装在D盘,然后点击“Install”
http://s1.运维网.com/images/20180909/1536489675304196.png
正在安装中:
http://s1.运维网.com/images/20180909/1536489699727757.png
询问是否安装虚拟网络适配器,在此选择“安装”:
http://s1.运维网.com/images/20180909/1536489751377416.png
安装完成,选择“Next”:
http://s1.运维网.com/images/20180909/1536489792109817.png
点击“Finish”,完成安装:
http://s1.运维网.com/images/20180909/1536489822649467.png
3、复制客户端证书
安装Open××× 2.4.5 x86_64后,需要找到客户端安装目录下的config文件夹,清空config文件夹,然后将客户端证书和客户端配置文件复制到config文件夹下
http://s1.运维网.com/images/20180909/1536489980982307.png
http://s1.运维网.com/images/20180909/1536490007415704.png
七、客户端登录验证
1、右击Open××× 客户端图标,以管理员身份运行
http://s1.运维网.com/images/20180909/1536490216309069.png
2、Open×××客户端已启动,在任务栏右下角,找到Open×××图标,然后右击:
http://s1.运维网.com/images/20180909/1536490296584141.png
3、右击Open×××图标,然后点击“connect”:
http://s1.运维网.com/images/20180909/1536490332297576.png
4、点击“connect”后,会提示输入连接密码:(passw0rd)
http://s1.运维网.com/images/20180909/1536490417302555.png
5、输入密码后,需要登录Open×××连接,连接成功后,对话框消失,任务栏右下角的Open×××图标变成绿色,则证明连接成功:
http://s1.运维网.com/images/20180909/1536490683825511.png
6、使用cmd命令行进行验证,能否ping通Open×××服务器IP地址:
查看客户端IP地址信息
ipconfig
http://s1.运维网.com/images/20180909/1536490810155183.png
测试能否Ping通Open×××服务器IP地址:(172.28.1.189)
http://s1.运维网.com/images/20180909/1536490874773422.png
能够ping通,则证明Open×××服务搭建成功
八、其他
1、如果生成证书时输错密码了(如www002用户),报出如下错误:
http://s1.运维网.com/images/20180909/1536491092673401.png
需要删除以为文件后,可继续创建
rm -rf /etc/open***/easy-rsa/3.0/pki/reqs/www002.req
rm -rf /etc/open***/easy-rsa/3.0/pki/private/www002.key
2、撤销证书(www001为例)
撤销命令:revoke
cd /etc/open***/easy-rsa/3.0
./easyrsa revoke www001
生成CRL文件(撤销证书的列表)
./easyrsa gen-crl
重启Open×××服务生效
systemctl stop open***@server
systemctl start open***@server
页:
[1]