使用Open***搭建Linux下的***服务

     常在项目中遇到外地的客户碰到问题,但无法在电话中解决,需要在机器上进行分析和处理。第一个想到的就是远程登陆,但对方没有公网IP,怎么办?此时,如果有个***通道该多好。所以,我决定搭建一台***服务器以方便今后的维护,顺便也再熟悉一下相关的配置。
  ***硬件是不用考虑的,费用太高。而且既然已经熟悉了Linux环境,当然还是在该环境下寻找了。考虑两点:
1、安全性第一,配置方便;
2、支持多平台连接,毕竟使用Windows桌面的用户还是很多的。
  考虑再三,决定使用Open***来实现。
一、原理
  Open***是基于SSL的***,其使用工业标准的SSL/TLS协议实现第2层和第3层的安全数据链路***。最新版本是2.0.7,其优点包括:
1、基于SSL协议,安全,并使用单一TCP或UDP端口即可实现;
2、使用双向验证,服务器只需保存自己的证书和密钥;
3、服务器只接受那些由主CA证书签名的客户端,并有撤回机制,而不需要重建整个PKI;
4、可以实现基于Common Name的权限控制。
官方网站:这里
rpm下载:点击
依赖的lzo包:点击
※注意,Open***是基于SSL/TLS协议的,所以是不兼容IPSec和PPTP,在Windows也需要安装客户端

二、网络架构
  Open***可以实现多点对单点,以及点对点的***功能。今天我们先以一个简单的案例来说明,后续再详细描述更深入的配置。
架构如下:

网络拓扑

 

 

说明:
1、远程客户端通过Internet网络连接到公司网络(模拟成192.168.1.0网段),并建立10.8.0.0的***通道;
2、公司内部网络为192.168.100.0网段,假设只有一台主机;
3、目标是客户端和后台主机可以双向互通。

三、安装配置

 1、首先下载相关的安装包

     wget http://open***.net/release/open***-2.0.9.tar.gz

     wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz

2、开始安装

 tar zxvf  lzo-2.03.tar.gz  -C /usr/src/

 cd   lzo-2.03&&  make  && make install

 tar  zxvf  open***-2.0.9.tar.gz   -C /usr/src/

cd  open***-2.0.9  && ./configure &&make  && make install

3、配置环境变量以及配置服务器端

 cd  /usr/src/open***-2.0.9/easy-rsa

此目录下以许多程序及脚本, 以下为使用到的程序及脚本说明

          vars                      脚本, 是用来创建环境变量,设置所需要要的变量的脚本

          clean-all                脚本,是创建生成 ca 证书及密钥文件所需要的文件及目录            build-ca                脚本, 生成 ca 证书(交互)

          build-dh                脚本, 生成 Diffie-Hellman文件(交互)

          build-key-server    脚本, 生成服务器端密钥(交互)

          build-key               脚本, 生成客户端密钥(交互)

          pkitool                   脚本, 直接使用 vars 的环境变量设置, 直接生成证书(非交互)

 初始化keys 目录,创建生成ca 证书及密钥文件所需要的文件和目录

         ./clean-all

编辑 vars 文件,生成环境变量, vars 里的参数根据自己需要改变.

         export KEY_SIZE=1024                           #生成密钥的位数

         export KEY_COUNTRY=CN                    #定义所在的国家编码, 2 个字符

         export KEY_PROVINCE=BeiJing             #定义所在的省份

         export KEY_CITY=BeiJing                       #定义所在的城市

         export KEY_ORG=”*** Test org”       #定义所在的组织

         export KEY_OU=”*** COM”              #定义所在的单位

         export KEY_EMAIL=”[email protected]”  #定义你的邮件地址

 修改好vars 文件后就可以开始生成ca 证书及密钥文件了! 

        source ./vars

生成Root Ca证书,  用于签发Server 和 Client 证书

       ./build-ca

        ls keys

        可以看到已经生成了ca.crt ca.key 文件

生成Diffie-Hellman文件

         ./build_dh

          ls -l keys/dh2048.pem

         可以看到生成了2048 位的 Diffie-Hellman 文件

生成服务器使用的 *** server Ca证书

         ./build-key-server server

          server是你为CA 证书起的一个名字, 以 server名字为例,生成的服务器使用的 CA证书文件为: server.crt server.key,将生成的CA 证书及密钥拷贝到/etc/open***下

           cp keys/{ca.crt,ca.key,server.crt, server.key, dh2048.pem} /etc/open***/    3.3 生成客户端 CA 证书及密钥

4、 防止恶意***

          如果想让open*** 防止恶意***如DOS、UDP port flooding,生成一个"HMAC firewall", 这个功能可以不启用,减少麻烦。    

      /usr/local/sbin/open*** --genkey --secret /usr/src/open***-2.0.9/easy-rsa/keys/ta.key

          这个时候,在keys 目录下,产生一个ta.key,同时也需要在open***.conf 文件里添加一行

          open***.conf

          tls-auth /usr/src/open***-2.0.9/easy-rsa/keys/ta.key 0

5、  生成客户端 CA证书及密钥使用:build-key 程序即可

          ./build-key guorui

          将在keys 目录下生成 guorui.crt guorui.csr guorui.key 三个客户端证书

          将ca.crt ca.key guorui.crt guorui.csr guorui.key 五个文件打包,以备客户端***使用

          tar zcvf guorui.***.key.tar.gz keys/{ca.crt ca.key guorui.crt guorui.csr guorui.key}

6、配置服务器端的配置文件

port 2194 

proto udp 

dev tun 

server 10.1.0.0 255.255.255.0 

push "route 192.168.100.0 255.255.255.0" 

push "dhcp-option DNS 192.168.1.1" 

push "dhcp-option DNS 202.96.128.86" 

ifconfig-pool-persist  /usr/local/etc/ipp.txt 

ca /usr/local/etc/keys/ca.crt 

cert /usr/local/etc/keys/server.crt 

key /usr/local/etc/keys/server.key 

dh /usr/local/etc/keys/dh1024.pem 

tls-auth /usr/local/etc/keys/ta.key 0 

keepalive 10 120 

comp-lzo 

status /var/log/open***-status.log

log /var/log/open***.log

verb 4  

client-to-client

persist-key 

persist-tun

启动open***服务

 /usr/local/sbin/open*** --daemon --config /usr/local/etc/server.conf

lsof -i :2194   查看该服务是否正常启动

7、启用ip 转发,并且配置iptables, 实现 NAT功能

        如果实现在拨到 *** 上后能够使用open*** server上网的话, 需要配置NAT 功能, 修改open*** 的管理脚本.在管理脚本的 start 功能里

        添加以下命令(在管理脚本的 119 行)

        echo 1 > /proc/sys/net/ipv4/ip_forward

        iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT –to 192.168.100.1

       iptables -A INPUT -i tun+ -j ACCEPT

       iptables -A FORWARD -i tun+ -j ACCEPT

       iptables -A INPUT -i tap+ -j ACCEPT

       iptables -A FORWARD -i tap+ -j ACCEPT

         

8、安装open***-2.0.1ms1-gui-1.0.3-nonadmin-install.exe

   8.1、修改客户端的配置文件client.conf

client  

dev tun 

proto udp  

remote 192.168.1.1 2194  

persist-key  

persist-tun  

ca ca.crt  

cert client1.crt  

key client1.key  

ns-cert-type server  comp-lzo  

verb 3  

redirect-gateway def1  

tls-auth ta.key 1 

comp-lzo

nobind

9、测试连接是否成功

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章