open*** 證書祕鑰結合用戶密碼雙重認證(1)服務器端設置

Open***

環境:

拓撲圖:

wKiom1dopHmRdyUjAAI188ALTwU816.png-wh_50


                                                           

                     出差人員win7 client    

                                                                                     115.16.1.8/30

                                                                   |

              鄭州站點------------互聯網-------上海站點

              內網:192.168.20.0   |         內網:192.168.10.0.24

                            |                                                    

                      eth0 :   1.1.1.1/30            

                      北京Open ***(iptables)

                      eth1:  192.168.0.1/2                                                     |

                      eth0:  192.168.0.100/24

                        公司內網網絡

希望屏幕前的你,能看懂O(∩_∩)O~

以下內容可能有錯誤的地方,發現了還行給予提示,發送到郵箱:[email protected]

在此謝過!!!


系統版本:CentOS release 6.6 (Final)---64位

內核版本:CentOS release 6.6 (Final)

軟件版本:open***-2.3.11-1.el6.x86_64

                    easy-rsa-2.2.2-1.el6.noarch

一、安裝前的準備

1.關閉SELINUX

$sudo sed -ri   '/^SELINUX=.*/cSELINUX=disabled'              /etc/selinux/config


2.在防火牆上開啓TCP 1194 端口,***的監聽端口

$sudo  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$sudo iptables -t filter -A INPUT-p tcp -i eth0 –dport 1194 -j ACCEPT


3.時間同步,很重要哦

$sudo  ntpdate  1.cn.pool.ntp.org

注:eth0爲open***的監聽網卡接口,是自己的網絡環境而定


二、安裝軟件

1.配置YUM

$sudo  yum  -y   install   epel-releas

2.開啓YUM緩存

$sudo  sed  -ri '/^keepcache=.*/ckeepcache=1' /etc/yum.con

3.清空YUM緩存的軟件包

$sudo yum clean  packages

4.安裝軟件包

假如你有本地光盤鏡像源,用如下的方法之間安裝

$sudo   yum -y install  open***  easy-rsa

假如你可以連接互聯網,用如下的方法安裝

$sudo  rpm -ivh    http://download.fedoraproject.org/pub/epel/6/x86_64/epel-\

                release-6-8.noarch.rpm

注意:上面是一行

5.把緩存好的open***所需要的軟件包打包,以備在其他Linux站點或客戶端用

$ tar  jcf open***.tar.bz2    $(find /var/cache/yum/x86_64/6/  -iname "*.rpm" )

注:解壓的時候先看一下壓縮包裏的內容,用以下命令:

tar  jtf  open***.tar.bz2

你可以只解壓裏面的文件,不要裏面的目錄。用這個命令:

tar jxf  open***.tar.bz2 --strip-components=7  -C    指定的文件夾

這裏的 7是解壓文件前面有斜槓“/”的個數,我這裏是7層


三、在***服務器端配置證書和私鑰

1.建立自簽名的CA證書和私鑰

a.  修改一下建立簽發證書需要的變量,基本作用就是設置一下籤發證書的單位的一些信息

$cd /usr/share/easy-rsa/2.0/                                  

$sudo vim vars

export KEY_COUNTRY="CN"                        //國家

export KEY_PROVINCE="BJ"                        //省份        

export KEY_CITY="BJ"                          //城市

export KEY_ORG="SharkYun"                       //所屬機構

export KEY_EMAIL="[email protected]"                //郵箱


$suod source  vars                           //初始化變量


b.  生成CA的私鑰和證書(CA機構也就是這臺open*** server,字簽名的嘛!)

$sudo ./build-ca                             //一路回車


c.  爲這臺open*** server 生成私鑰和由CA機構簽名的證書

$sudo ./buid-key-server  ***server                //一路回車,輸2次y                                               //***server是自定義的證書名字


d.  爲每個open***客戶端生成他們的私鑰和CA機構簽發的證書;因爲默認情況下,每個證書同一時間

只能提供一個客戶端進行登錄到*** server;這裏我們依次生成上海、鄭州以及出差人員西瓜甜的私  

鑰和證書,證書名都是自定義的                

$sudo  ./buid-key    bj-client                //一路回車,輸2次y

$sudo  ./buid-key    zz-client                //一路回車,輸2次y

$sudo  ./buid-key    xiguatian-client           //一路回車,輸2次y


e.  創建祕鑰協商文件     迪菲·赫爾曼密鑰,這裏是新版本,會生成2048位的

$sudo  ./build-dh                                                       //時間稍長,請耐心等待…


f.  爲了防止DDOS***和UDP淹沒等惡意***,生成一下   ta.key

$sudo open***  --genkey   --sercret  keys/ta.key


g.  到這裏,我們需要的密鑰和證書暫時創建完成,以後若還有出差人員需要,再創建一個就行了;

   ##現在查看一下。

$pwd

/usr/share/easy-rsa/2.0

$sudo  ls  -l   keys


h.  把我們用到的證書和私鑰用合適的方式傳輸到合適的位置,每個客戶端都需要CA證書和,以及

    open*** server 會需要CA證書和ta.key證書 ca.key  

    注意:這裏要說明一下,以 .crt  結尾的文件是簽名的證書,以 .key 結尾的文件是私鑰,以 .csr

     爲 結尾的文件是申請簽名的用的,這個現在不需要了。以 .crt 和 .key 結尾的文件是我們需要的。

$sudo cp    -a   keys/{ca.crt,***server{crt,key},dh2048.pem,ta.key}      /etc/open***/

     下面的操作是把各個客戶端所需有的文件打包,方便傳送到各個客戶端的機器上;至於怎麼 傳,

     建議用u盤吧,畢竟包含了敏感信息,不要用網絡。至於上海和鄭州的站點,安裝個加密軟件傳

     送會比較安全。

$sudo cd  keys

$sudo tar    jcf    bj-client.tar.bz2   ca.crt   ta.key   bj-client*  

$sudo tar    jcf    zz-client.tar.bz2   ca.crt   ta.key   zz-client*

$suod tar    jcf    xiguatian-client.tar.bz2   ca.crt    ta.key      xiguatian-client*


四、配置open*** server

下面文中\表示一行中的shell內換行符,這個大家應該都知道啦。

1.先從示例中拷貝一份過來

$sudo cp /usr/share/doc/open***-2.3.11/sample    /sample-config-files/server.conf /etc/open***/server.conf

注意: 上面是一行

2.配置open***server的配置文件,修改成爲一下內容

#*** server 的監聽地址

local    1.1.1.1

#監聽斷口

port    1194

#採用的協議,默認是udp協議;假如有http-proxy的話,就必須用tcp了。

proto   tcp

#採用路由隧道模式

dev    tun

#CA機構的證書的位置和名字,可以絕對路徑,也可以相對路徑,相對路徑是相對與此文件

#所在的目錄

ca    ca.crt

#此***服務器的證書位置以及證書名字

cert     ***server.crt

#此***服務器的私鑰位置和名字,這個文件要保護好,確保其安全!!!

key   ***server.key  # This file should be kept secret

#協商加密的文件

dh   keys/dh2048.pem


#這個是隧道的網絡,第一個地址會分配個此***服務器

server   10.8.0.0 255.255.255.0

#客戶端重新連接***時,會優先從此文件中匹配後,分配給它地址,位置在此文件目錄下

ifconfig-pool-persist ipp.txt


#下面三項是用push來想所用客戶端發佈到各個站點內網的路由信息

push "route 192.168.10.0 255.255.255.0"    //上海的內網

push "route 192.168.20.0 255.255.255.0"    //鄭州的內網

push "route 192.168.0.0 255.255.255.0"     //北京的內網


#下面兩項是用route來向本地發佈到各個站點的路由信息

route 192.168.10.0  255.255.255.0         //上海的內網

route 192.168.20.0  255.255.255.0          //鄭州的內網

#這裏說明一下,要想真正實現北京/上海和鄭州的各個內網之間互相通信,還需要在各自的內網主機設

#置各自的內網網關定義了各個站點的自定義配置文件所在的文件夾(這裏是#相對路徑),主要作用是

#用iroute來定義允許其他站點訪問自己的內網的網絡;在ccb文件夾下創建;

#各自站點的配置文件,文件名必須是和創建站點證書名字一樣!!!

client-config-dir ccd

#這個選項定義了客戶端和客戶端之間和以通信

client-to-client

#保持時間和超時斷開時間。//這個解釋是我自己的理解

keepalive 10 120


#這個是防止DDOS***,使用的私鑰位置和名字

tls-auth ta.key 0 # This file is secret


#傳輸數據進行過程中採用壓縮

comp-lzo

#***服務器啓動後會以下面的用戶和組運行,主動放棄root權限

user nobody

group nobody


#當服務器因超時主動斷開,客戶端重新連接時,保持的之前連接用的私鑰和地址的有效性

persist-key

persist-tun

#***服務器的狀態日誌

status open***-status.log

#日誌會以添加的形式去寫入日誌文件,注意要日誌切割!

log-append open***.log


#記錄日誌的級別,默認是3,5會有更多的信息讓我們去調試

verb 5

#這個好像就是日誌切割吧,不確定

mute 20


#下面最重要,定義了出差或者在家的客戶端,在採用證書的方式進行驗證的同時,還會

#採用用戶名和密碼的方式進行驗證

script-security 2

auth-user-pass-verify /etc/open***/auth_pass.sh via-file

#說明一下,auth_pass.sh是用到的腳本,腳本里有定義存放用戶名和密碼的文件

# via-file  表示從文件的方式獲取用戶名和密碼

# via-env   表示從環境變量的方式獲取用戶名和密碼 //這種方式我還每嘗試成功。


#當我們採用TCP協議時,建議用此選項降低吞吐量,從而來降低網絡延時

socket-flags TCP_NODELAY

#享客戶端發佈此選項,因爲TCP協議嘛,需要兩端都設置

push "socket-flags TCP_NODELAY"


3.在open*** server上定義客戶端各個站點的配置文件

$sudo mkdir  /etc/open***/ccb

$sudo vim /etc/open***/ccb/sh-client

iroute 192.168.10.0   255.255.255.0            //上海的內網

$sudo vim /etc/open***/ccb/zz-client

iroute 192.168.20.0   255.255.255.0             //鄭州的內網


4.編寫需要用到的腳本

$sudo vim  /etc/open***/auth_pass.sh

#!/bin/bash

# the username+password is stored in a temporary file

# pointed to by $1

username=`head  -1  $1`

password=`tail  -1  $1`

if  grep "$username:$password"  pass_file  >  /dev/null 2>&1

then

      exit 0

else

      if grep "$username" pass_file > /dev/null 2>&1

      then

           echo "auth-user-pass-verify: Wrong password entered for user '$username'"

      else

            echo "auth-user-pass-verify: Unknown user '$username'"

       fi

       exit 1

fi

######################## The  end ##############################


5.創建用戶和密碼對應文件

名字要和腳本中的一樣

$sudo vim /etc/open***/pass_file

xiguatian:123

shanghai:123

zhengzhou:123

#注意格式,密碼和用戶名中間是冒號;這顯然不安全,所有我們採用了證書雙重驗證。

6.在open*** server上開啓路由轉發功能

$sudo sed -i '/^net.ipv4_forward = */cnet.ipv4.ip_forward = \

1'  /etc/sysctl.conf

$sudo sysctl -p

7.啓動服務,設置開機自啓動

$service open***  restart && chkconfing  open*** on

 

客戶端的配置請看下一篇

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