***直譯就是虛擬專用通道,是提供給企業之間或者個人與公司之間安全數據傳輸的隧道,open***無疑是linux開源***的先鋒,提供了良好的性能和友好的用戶GUI。
Open***是一個基於OpenSSL庫的應用層***實現。傳統***相比,它的優點是簡單易用。Open***允許參與建立***的單點使用共享金鑰,電子證書,或者用戶名/密碼來進行身份認證。
原理:
Open***的技術核心是虛擬網卡,其次是SSL協議實現,由於SSL協議在其他的詞條中介紹的比較清楚了,這裏重點對虛擬網卡及其在Open***中的工作原理進行介紹:
虛擬網卡是使用網絡底層編程技術實現的一個驅動軟件,安裝後在主機上多出現一個網卡,可以像其它網卡一樣進行配置。服務程序可以在應用層打開虛擬網卡,如果應用軟件(如IE)向虛擬網卡發送數據,則服務程序可以讀取到該數據,如果服務程序寫合適的數據到虛擬網卡,應用軟件也可以接受得到。虛擬網卡在很多操作系統下都有相應的實現,這也是Open***能夠跨平臺一個很重要的理由。
在Open***中,如果訪問一個遠程的虛擬地址(屬於虛擬網卡配用的地址系列,區別於真實地址),則操作系統會通過路由機制將數據包TUN模式或數據幀(TAP模式)發送到虛擬網卡上,服務程序接受該數據並進行相應的處理後,通過socket從外網上發送出去,遠程服務程序通過SOCKET從外網上接收數據,並進行相應的處理後,發送給虛擬網卡
演示環境:
三臺主機:node1: eth0 :172.16.23.2(模擬內網地址,網關指向172.16.23.1)
Node2:eth0:192.168.162.131(模擬外網地址)
eth1:172.16.23.1(模擬內網地址)
node3:eth0:192.168.162.130(模擬外網地址)
本次實驗想實現的功能:把node2比作公司的公網地址,node1比作公司的內網。Node3比較家庭的地址。使員工在家能訪問公司的內網,使node3能訪問node1.
1. 基礎環境配置
1) 開啓node2核心轉發功能;
2) 爲了便於測試,清空三個節點的防火牆規則關閉selinux;
3) 配置各個節點ip地址
2. 安裝程序包;
1) 配置epel源倉庫;
2) 安裝open***
#yum install open*** –y
3) 安裝easy-rsa,用來製作ca證書,服務端證書,客戶端證書;
#wget https://github.com/Open***/easy-rsa/archive/master.zip
#unzip master.zip
#mv easy-rsa-mater/ easy-rsa/ (將解壓後的文件夾重命名)
#cp -R easy-rsa/ /etc/open***/ (將重命名的文件夾複製到/etc/open***目錄下)
4) 編輯服務器端vars文件
# cd /etc/open***/easy-rsa/easyrsa3/
# cp vars.example vars
# vim vars
5) 創建根證書
# ./easyrsa init-pki (初始化)
# ./easyrsa build-ca (創建根證書)
Note:這一步會需要輸入PEM密碼,輸入兩次,請記住此密碼,否則後面不能爲證書籤名。還需要輸入common name通用名,隨便起一個便可;
6) 創建服務器端證書
# ./easyrsa gen-req server nopass (創建服務器端證書,note:在此過程中也要輸入common name,不跟之前的根證書的common name一樣即可)
# ./easyrsa sign server server (簽約服務端證書,此過程需要你確認yes,還需要你創建ca時的密碼。)
7) 創建Diffie-Hellman
# ./easyrsa gen-dh (創建Diffie-Hellman,確保key穿越不安全網絡的命令)
8) 創建ta祕鑰文件
# open*** --genkey --secret ta.key (創建ta祕鑰文件)
9) 創建客戶端證書;
# mkdir /root/client && cd /root/client
# cp –R /root/easy-rsa/ ./
# cd easy-rsa/easyrsa3/
# ./easyrsa init-pki (初始化)
# ./easyrsa gen-req yourname (生成證書,yourname爲自定的名字)
# cd /etc/open***/easy-rsa/easyrsa3/
# ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/yourname.req yourname (導入證書)
# ./easyrsa sign client yourname (簽約證書,note:這裏生成client所以必須爲client,qingliu要與之前導入名字一致)
10) 拷貝文件到相應位置;
拷貝服務器端所需文件;
]# cp pki/ca.crt /etc/open***/
]# cp pki/private/server.key /etc/open***/
]# cp pki/issued/server.crt /etc/open***/
]# cp pki/dh.pem /etc/open***/
]# cp /etc/open***/easy-rsa/ta.key /etc/open***/
拷貝客戶端所需文件;
]# cp pki/ca.crt /root/client/
]# cp pki/issued/yourname.crt /root/client/
]# cp /root/client/pki/private/yourname.key /root/client/
]# cp /etc/open***/easy-rsa/ta.key /root/client/
11) 修改open***的配置文件;
# cp /usr/share/doc/open***-2.4.5/sample/sample-config-files/server.conf /etc/open***
啓動服務:
而且多了一個虛擬網卡;
3. 安裝linux客戶端連接;
1) 安裝open***,與服務器端一樣;
2) 將服務器端的ca.crt,yourname.crt,yourname.key, ta.key文件轉到/etc/open***目錄下;
3) 創建client.conf;
4) 遠程撥入***,測試;
觀察客戶端也多了張虛擬網卡;
測試ping內網地址;
以上表明,本次實驗已經成功,以下我們將配置mysql方式認證登錄***連接;
4. 配置mysql認證登錄***;
1) 安裝mysql;
2) 登錄mysql,創建表及字段等;
3) 創建登錄表;
4) 插入用戶數據
5) 配置pam_mysql模塊;
使用testsaslauthd驗證登錄情況;
6) 安裝open***服務器的auth-pam插件;
Node2上安裝的open***有自帶的模塊open***-auth-pam.so,但是好像2.1版本以上的open***自帶的open***-auth-pam.so驗證會出現驗證失敗的問題,這裏需要重新編譯安裝;
下載源碼包http://pkgs.fedoraproject.org/repo/pkgs/open***/open***-2.0.7.tar.gz,注意不要使用wget,可能解壓會出現問題;
# cp ./open***-auth-pam.so /etc/open***/
7) 配置***配置文件server.conf,添加三行配置;
8) 編輯客戶端配置文件client.conf;
9) 啓動open***服務端服務,並從客戶端連接,從客戶端連接輸入username和password。跟上一樣測試;