设为首页 收藏本站
查看: 838|回复: 0

[经验分享] Centos7.2 + Open×××

[复制链接]

尚未签到

发表于 2019-1-27 09:53:36 | 显示全部楼层 |阅读模式
  一、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          # 查看系统版本

  uname -r
  uname -m


  ip addr      #查看物理服务器的IP地址信息


  四、服务器配置时钟同步
  yum -y install ntpdate


  /usr/sbin/ntpdate pool.ntp.org


  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

  注:服务器时钟同步比较重要,如果×××服务器和拨号的计算机客户端不一样,可能会导致***连接失败。

  五、Open××× 服务端安装
  1、安装epel-release安装包
  yum install epel-release


  2、安装lsb_release
  lsb_release -a


  提示没有找到lsb_release ,需要安装lsb_release:

  yum -y install redhat-lsb


  再次运行lsb_release:

  lsb_release -a


  3、安装Open××× 服务端等需要的其他服务

  yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig makecache

  4、安装Open×××服务

  yum install -y open***


  5、安装easy-rsa服务

  yum install -y easy-rsa


  6、验证Open×××用户及组

  groupadd open***

  useradd -g open*** -M -s /sbin/nologin open***


  7、创建Open×××的存放位置

  mkdir /etc/open***


  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***/

  9、配置Open××× 配置文件
  vim /etc/open***/server.conf


  提示找不到 vim,需要安装vim

  yum install -y vim


  vim /etc/open***/server.conf
  具体配置如下:
  port  1194       #端口: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-append  open***.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

  ./easyrsa build-ca

  在此要输入ca的密码:(ca.com),需要输入两次。


  此处要输入组织:(Open××× CERTIFICATE AUTHORITY)


  12、创建服务端证书,生成请求,使用gen-req来生成req

  ./easyrsa gen-dh

  open*** --genkey --secret ta.key
  cp -r ta.key /etc/open***/

  13、创建服务端证书、密码为:openserver.com

  ./easyrsa  gen-req wwwserver

  14、签发证书,签约服务端证书

  ./easyrsa sign-req server wwwserver

  15、生成Windows客户端用户
  在此生成用户的,名字为www001(此名字可自主定义)
  ./easyrsa build-client-full www001

  注:生成客户端用户的时候会提示设置密码,可以直接回车密码为空,也可以输入密码,待客户端连接时需要输入密码。
  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

  17、配置sysctl.com文件

  vim /etc/sysctl.conf
  在末尾加入:net.ipv4.ip_forward=1


  保存后执行:sysctl -p

  sysctl -p


  18、防火墙配置

  firewall-cmd --list-all   查看目前的防火墙列表

  防火墙配置详细信息如下:

  systemctl start firewalld.service
  firewall-cmd --state
  firewall-cmd --zone=public --list-all

  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

  19、启动Open×××

  systemctl start open***@server

  注:第一次启动的时候可能会提示,重新执行systemctl start open***@server,然后再输入服务端证书密码:(openserver.com)

  20、查看Open×××进程

  ps -aux | grep open***


  21、查看安装Open×××后的网卡信息

  ip addr


  六、客户端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/
          
          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”:
        
          点击“I Agree”:
          
  选择安装项,在此选择默认安装项,然后点击“Next”:

  选择安装路径,在此选择安装在D盘,然后点击“Install”


          正在安装中:

          
          询问是否安装虚拟网络适配器,在此选择“安装”:

          
  安装完成,选择“Next”:


  点击“Finish”,完成安装:


  3、复制客户端证书

  安装Open××× 2.4.5 x86_64后,需要找到客户端安装目录下的config文件夹,清空config文件夹,然后将客户端证书和客户端配置文件复制到config文件夹下



  七、客户端登录验证
  1、右击Open××× 客户端图标,以管理员身份运行


  2、Open×××客户端已启动,在任务栏右下角,找到Open×××图标,然后右击:


  3、右击Open×××图标,然后点击“connect”:


  4、点击“connect”后,会提示输入连接密码:(passw0rd)


  5、输入密码后,需要登录Open×××连接,连接成功后,对话框消失,任务栏右下角的Open×××图标变成绿色,则证明连接成功:


  6、使用cmd命令行进行验证,能否ping通Open×××服务器IP地址:
  查看客户端IP地址信息

  ipconfig


  测试能否Ping通Open×××服务器IP地址:(172.28.1.189)


  能够ping通,则证明Open×××服务搭建成功

  

  八、其他

  1、如果生成证书时输错密码了(如www002用户),报出如下错误:


  需要删除以为文件后,可继续创建

  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668119-1-1.html 上篇帖子: python open 文件操作 下篇帖子: OPEN RESETLOGS ,报ORA
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表