使用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、測試連接是否成功

 

 

 

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