天天看點

OPEN×××+MYSQL認證+用戶端配置

一 概念相關

1、*** 介紹

*** 虛拟專用網絡,是依靠isp和其他的nsp,在公共網絡中建立專用的資料通信網絡的技術。在***中任意兩點之間的連結并沒有傳統的專網所需的端到端的實體鍊路,而是利用公共網絡資源動态組成的,可以了解為通過私有的隧道技術在公共資料網絡上模拟出來的和專網有相同功能的點到點的專線技術,所謂虛拟是指不需要去拉實際的長途實體線路,而是借用公共的Internet網絡實作。

2、*** 作用

***可以幫助公司用的遠端使用者(出差,家裡)公司的分之機構、商業合作夥伴及供應商等公司和自己的公司内部網絡之間建立可信的安全連接配接或者區域網路連接配接,確定資料的加密安全傳輸和業務通路,對于運維工程師來說,還可以連接配接不同的機房為區域網路,處理相關的業務流。

3、常見***功能的開源産品

pptp ***  最大優勢在于無需在windows用戶端單獨安裝***用戶端軟體,windows預設就支援pptp ***撥号功能。他是屬于點對點的方式應用,比較适合遠端企業使用者撥号到企業進行辦公等應用,缺點很多小區及網絡裝置不支援pptp導緻無法通路。

SSL ×××(open***)

PPTP主要為常在外面移動或者家庭辦公的使用者考慮的,而Open***不但可以使用與PPTP的場景,還是和針對企業異地兩地總分公司之間的***不間斷按需連結,例如:ERP,OA及時通訊工具等在總分公司企業中的應用,缺點:需要單獨安裝用戶端軟體。

IPSEC ××× 

也适合針對企業異地兩地中分公司或者多個IDC機房之間的×××的不間斷按需連結,并且在部署使用上更簡單友善。IPSEC ***的開源産品openswan.

4、open***通訊原理

open***所有的通訊都基于一個單一的ip端口(預設1194),預設使用udp協定,同時也支援tcp。open***能通過大多數的代理伺服器,并且能在NAT的環境很好的工作。open***服務端具有用戶端“推送”某些網絡配置資訊的功能,這些資訊包括,ip位址,路由設定等。 OPen***提供了2個虛拟網絡接口:通過TUN/Tap驅動,通過他們,可以建立三層IP隧道,或者虛拟二層以太網,後者可以傳送任何類型的二層以太網資料。傳送的資料可通過LZO算法壓縮。open***2.0以後版本每個程序可以同時管理數個并發的隧道。

5、open***協定選擇

在選擇協定的時候,需要注意2個加密隧道支架你的網絡狀況,如果高延遲或者丢包較多的情況下,請選擇TCP協定作為底層協定,UDP協定由于存在無連接配接和重傳機制,導緻隧道上層的協定進行重傳,效率非常低下,這裡建議用tcp協定方式。

6、open***的依賴及核心技術

open***依賴Openssl,可以使用預設的私鑰,第三方證書,使用者名密碼等進行身份驗證。

OPen***的技術核心是虛拟網卡,其次是SSL協定實作。

二 伺服器端

相關軟體:

lzo壓縮子產品,可加快傳輸速度。

open*** 主程式。

1、安裝open***及相應包

安裝環境:centos6.4 x64

1、安裝lzo
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
tar zxf lzo-2.06.tar.gz
cd lzo-2.06
./configure
make 
make install
cd ../
2、安裝open***(需要先安裝openssl)
yum install -y openssl* -y
#wget http://www.open***.net/release/open***-2.2.2.tar.gz
tar zxf open***-2.2.2.tar.gz
cd open***-2.2.2
./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
make
make install
cd ../      

安裝環境:ubuntu 12.04 x64

[email protected]:~# aptitude install open***
[email protected]:~# aptitude install libpam-dev libpam-mysql libmysql++-dev sasl2-bin
           

2、檢查安裝

[email protected]:~# ls /usr/share/doc/|grep open***
open*** ##發現已經存在。      

3、生成證書

[email protected]:~#cd  /usr/share/doc/open***/examples/easy-rsa/2.0/ 
[email protected]:~# . ./vars    ##### 重成環境變量 以下生成的檔案都在/usr/share/doc/open***/examples/easy-rsa/2.0/keys 下
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# ./clean-all ###用來清除之前生成的所有的key
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# ./build-ca  ####生成ca.crt  ca.key      

4、建立給server用的certificate & key

[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0#./build-key-server server 
##“Common Name” 設成 “server”
##會産生以下檔案
01.pem
server.crt
server.csr
server.key      

5、建立給client用的certificate & key(可以建立多個client)

## “Common Name” 設成 “clinet1” 以此類推
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# ./build-key client1
##生成
client1.crt
client1.csr
client1.key
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0#  ./build-key client2
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0#  ./build-key client3
##當然,你也可以隻生成一個client,我就是這樣做的      

6、建立 Diffie Hellman parameters 和 ta.key

[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0#  ./build-dh #建立 Diffie Hellman parameters 會生成dh{n}.pem。
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# open*** --genkey --secret ta.key  #生成ta.key,防止ddos***,client和server同時存儲      

7、拷貝相關檔案至/etc/open***下。

[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# mv keys/* /etc/open***/
[email protected]:/usr/share/doc/open***/examples/easy-rsa/2.0# mv ta.key /etc/open***/ #不要遺漏      

8、建立配置檔案/etc/open***/server.conf

local 10.0.9.10 ###本機IP,這是一個内網IP,不過在路由上已經做了IP 的映射到一個外網ip
port 1194##指定端口
proto tcp       #制定協定
dev tun        
;tls-server
ca ca.crt
cert server.crt
key server.key
tls-auth ta.key 0
dh dh1024.pem
server 10.8.0.0 255.255.255.0#撥入後的ip段及網關
ifconfig-pool-persist ipp.txt
#push “redirect-gateway”   # 自動將 client 的 default gateway 設成經由 ××× server 出去
keepalive 10 120 # 保持連線,每 10 秒 ping 一次,若是 120 秒未收到封包,即認定 client 斷線
comp-lzo        #啟用壓縮
max-clients 20 # 最多同時隻能有十個 client
user nobody
group nogroup # *** daemon 執行時的身份(在非 Windows 平台中使用)
persist-key        #當***逾時後,當重新啟動***後,保持上一次使用的私鑰,而不重新讀取私鑰。
persist-tun    #通過keepalive檢測***逾時後,當重新啟動***後,保持tun或者tap裝置自動連結狀态。
status /etc/open***/easy-rsa/keys/open***-status.log #日志狀态資訊
log /var/log/open***.log #日志檔案
verb 3    ## 日志檔案備援。
# 以下二行是將 *** server 內部的虛擬 ip 機器開放給 client 使用
push "route 10.0.1.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.0.3.0 255.255.255.0"
plugin ./open***-auth-pam.so /usr/sbin/open*** ###這個是用來mysql 認證的,如不需要可注釋掉      

9、開啟作業系統的IP轉發設定。

[email protected]:~# echo 1 > /proc/sys/net/ipv4/ip_forward
[email protected]:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE      

10、建立mysql認證檔案。

[email protected]:~# vi /etc/pam.d/open***
auth sufficient pam_mysql.so user=*** passwd=***jkb host=127.0.0.1:3306 db=*** \
table=***user usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2 verbose=1
account required pam_mysql.so user=*** passwd=***jkb host=127.0.0.1:3306 db=*** \
table=***user usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2 verbose=1      

11、建立***庫、授權、建表

mysql> create database ***;##建立資料庫***。
mysql> GRANT ALL ON ***.* TO ***@localhost IDENTIFIED BY ‘***jkb‘;##授權localhost上的使用者***(密碼***123)有對資料庫***的所有操作權限。
mysql> flush privileges;##更新sql資料庫的權限設定。
mysql> use ***;##使用剛建立的的***資料庫。
mysql> CREATE TABLE ***user (
-> name char(20) NOT NULL,
-> password char(128) default NULL,
-> active int(10) NOT NULL DEFAULT 1,
-> PRIMARY KEY (name)
-> );
mysql> insert into ***user (name,password) values(’soai’,password(’soai’));
##指令解釋:
#建立***使用者,對***這個database有所有操作權限,密碼為***123
#active不為1,無權使用×××      

12、拷貝檔案

r[email protected]:~# cp /usr/lib/open***/open***-auth-pam.so /etc/open***/      

13、可選配置

#client-cert-not-required #不請求客戶的CA憑證,使用User/Pass驗證
#username-as-common-name #使用客戶提供的UserName作為Common Name
#client-to-client #如果讓Client之間可以互相看見,去掉本行的注釋掉,否則Client之間無法互相通路
#duplicate-cn #是否允許一個User同時登入多次,去掉本行注釋後可以使用同一個使用者名登入多次      

14、下載下傳相關檔案給用戶端用

##下載下傳下列檔案
client.crt  clinet.key ca.crt    ta.key      

三 用戶端

1、用戶端下載下傳位址:

http://swupdate.open***.org/community/releases/open***-2.2.2-install.exe ##windows

http://swupdate.open***.org/community/releases/open***-2.2.2.tar.gz  ##linux or mac

2、建立client.o***檔案

client
dev tun
proto tcp
remote  8.8.8.8 1194 #公網ip 和 端口
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
;comp-lzo
verb 3
auth-user-pass      

3、把client.o***加上之前client.crt  clinet.key ca.crt    ta.key 放入一個config檔案夾,并移動至***安裝的主目錄

4、啟動用戶端,輸入使用者名密碼即可。#使用者名密碼在伺服器端,mysql中添加的使用者密碼。

四 其他

1、關于auto認證相關可參考:http://b.gkp.cc/2010/08/08/setup-open***-with-mysql-auth/

2、後期維護

a、如果後期重新添加key的話

    source vars
    ./build-key      

b、後期用戶端的吊銷

source vars
./revoke-full xiaowang   #-->會生成crl.pem檔案      

檢查keys/index.txt,發現被吊銷的使用者前面有個R

怎麼使吊銷的生效呢,就是在server.conf裡面加上 #crl-verify /etc/open***/keys/crl.pem,然後重新開機open***服務生效。

轉載于:https://blog.51cto.com/qiyishi/1575758