ms133 发表于 2019-1-27 09:53:36

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]
查看完整版本: Centos7.2 + Open×××