CentOS6.8搭建OPEN***服務器,使用證書認證。

轉載:

open***簡介

open***有兩種模式:一種網橋模式,一種路由模式。open***提供兩種類型的虛擬網絡接口,TUN和TAP,    tun用於建立ip隧道,tap用於建立以太網橋,兩種模式我們成爲路由模式和網橋模式。

橋接模式相當於建立一條二層通道,優點是廣播可以穿透***,允許依賴局域網廣播的軟件運行,橋接不需要配置路由,可以和以太網任何協議工作,客戶端連接***被分配一個遠端物理以太網的ip地址,從而和遠端子網的其他機器進行通信,就像連接在本地一樣。缺點是效率比路由模式要低,並且不容易擴展。

路由模式相當於建立一條三層通道,優點是效率高可擴展,可以更好的調節MTU。缺點是廣播不能穿越***,僅支持ipv4,如果使用橋接模式,C/S兩端必須是tap,如果使用路由模式C/S兩端可以是tun也可以是tap,但兩端必須一致。


一、依賴環境配置安裝

  open***主要依賴以下軟件環境:

  • gcc g++【gcc g++爲系統需要的編譯工具】 一般linux環境中已經預安裝了此環境。

  • lzo [Lzo庫的功能壓縮數據,加快通訊速度]

  • openssl [囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議]


二、安裝前準備

#關閉selinux防火牆(默認已經關閉)

setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config


#安裝openssl和lzo,lzo用於壓縮通訊數據加快傳輸速度

yum -y install openssl openssl-devel
yum -y install lzo


#安裝epel源

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm


三、安裝並配置open***和easy-rsa

#安裝open***和easy-rsa

yum -y install open*** easy-rsa


# 修改vars文件
cd /usr/share/easy-rsa/2.0/
vim vars

# 修改註冊信息,比如公司地址、公司名稱、部門名稱等。
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Shandong"
export KEY_CITY="Qingdao"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

# 初始化環境變量
source vars
 
# 清除keys目錄下所有與證書相關的文件
# 下面步驟生成的證書和密鑰都在/usr/share/easy-rsa/2.0/keys目錄裏
./clean-all
 
# 生成根證書ca.crt和根密鑰ca.key(一路按回車即可)
./build-ca
 
# 爲服務端生成證書和密鑰(一路按回車,直到提示需要輸入y/n時,輸入y再按回車,一共兩次)
./build-key-server server
 
# 每一個登陸的×××客戶端需要有一個證書,每個證書在同一時刻只能供一個客戶端連接,下面建立2份
# 爲客戶端生成證書和密鑰(一路按回車,直到提示需要輸入y/n時,輸入y再按回車,一共兩次)
./build-key client1
./build-key client2
 
# 創建迪菲·赫爾曼密鑰,會生成dh2048.pem文件(生成過程比較慢,在此期間不要去中斷它)
./build-dh
 
# 生成ta.key文件(防DDos***、UDP淹沒等惡意***)
open*** --genkey --secret keys/ta.key

    查看keys目錄下生成的文件:

wKioL1hXvj2D7tLgAABwHAQ0ndI551.png-wh_50


四、創建服務器端配置文件

# 在open***的配置目錄下新建一個keys目錄
mkdir /etc/open***/keys
 
# 將需要用到的open***證書和密鑰複製一份到剛創建好的keys目錄中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/open***/keys/
 
# 複製一份服務器端配置文件模板server.conf到/etc/open***/
cp /usr/share/doc/open***-2.3.2/sample/sample-config-files/server.conf /etc/open***/
# 查看server.conf裏的配置參數
grep '^[^#;]' /etc/open***/server.conf
# 編輯server.conf
vim /etc/open***/server.conf


port 1194  #open***監聽端口
proto tcp  # 改成tcp,默認使用udp,如果使用HTTP Proxy,必須使用tcp協議。如果服務器在國外(通信質量不佳),建立使用udp,tcp的面向連接可能造成丟包。
dev tun
ca keys/ca.crt  # 路徑前面加keys,全路徑爲/etc/open***/keys/ca.crt
cert keys/server.crt    
key keys/server.key  # 服務器私鑰
dh keys/dh2048.pem  #dh公鑰算法
server 10.8.0.0 255.255.255.0 # 默認虛擬局域網網段,不要和實際的局域網衝突即可
ifconfig-pool-persist ipp.txt  #防止open***重啓後忘記client端曾經使用過的ip地址
push "route 10.0.0.0 255.0.0.0"  #爲客戶端推送一條路由
client-to-client  # 可以讓客戶端之間相互訪問直接通過open***程序轉發,根據需要設置
duplicate-cn  # 如果客戶端都使用相同的證書和密鑰連接×××,一定要打開這個選項,否則每個證書只允許一個人連接×××
keepalive 10 120  #Nat後面使用***,如果長時間不通信,NAT session可能會失效,導致***連接丟失。所以keepalive提供類似ping的機制,每10秒通過***的control通道ping對方。如果120秒內無法ping通,則認爲丟失,並重啓***,重新連接。
tls-auth keys/ta.key 0 # This file is secret
comp-lzo  #對數據進行壓縮,注意和client端一致
persist-key  #通過keeplive檢測超時後,重啓***,不重新讀取key,保留第一次使用的key
persist-tun  #通過keeplive檢測超時後,重啓***,一致保持tun或者tap設備是linkup的,否則網絡連接會linkdown然後linkup
status open***-status.log  # Open×××的狀態日誌,默認爲/etc/open***/open***-status.log
log-append open***.log  # Open×××的運行日誌,默認爲/etc/open***/open***.log
verb 5  # 日誌記錄級別,改成verb 5可以多查看一些調試信息
cipher AES-256-CBC  #指定數據對稱加密算法


五、配置內核和防火牆,啓動服務

# 開啓路由轉發功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
 
# 配置防火牆,別忘記保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "open***" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
 
# 啓動open***並設置爲開機啓動
service open*** start      如果重啓存在問題,可以再open***.log文件夾中查看原因。

chkconfig open*** on


六、創建客戶端配置文件

# 複製一份client.conf模板命名爲client.o***
cp /usr/share/doc/open***-2.3.2/sample/sample-config-files/client.conf client.o***
# 編輯client.o***
vim client.o***

client
dev tun
# 改爲tcp
proto tcp
# Open×××服務器的外網IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的證書
cert client1.crt
# client1的密鑰
key client1.key
ns-cert-type server
# 去掉前面的註釋
tls-auth ta.key 1
comp-lzo
verb 3

#數據加密算法,和服務器的加密算法必須匹配。

cipher AES-256-CBC


配置完成,將client.o***文件將ca.crt、client1.crt和client1.key放在同一個文件夾下。



linxu系統版本CentOS6.8。本配置的linux認證方法爲證書認證,及不需要輸入用戶名密碼,只有證書正確即可認證成功。

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