Open***實踐心得分享

Open***結合OpenLDAP認證

目錄

[TOC]

安裝Open***服務器

安裝open***及easyrsa

yum install epel-release -y
yum install open*** easy-rsa -y

配置CA變量:

## 複製easyrsa腳本到open***
cd /etc/open***/
cp -r /usr/share/easy-rsa /etc/open***/
## 準備變量用於配置CA機構
cd /etc/open***/easy-rsa/3/
vim vars
set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Shanghai"
set_var EASYRSA_REQ_CITY        "Shanghai"
set_var EASYRSA_REQ_ORG         "Tars *** CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "mgt-***-server1 EASY CA"
set_var EASYRSA_KEY_SIZE        4096      ## 用於生成Diffie-Hellman密鑰,位數越高生成時間越久
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365       ## 客戶端證書有效期,建議長一些
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "Tars *** CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-1.0.cnf"
set_var EASYRSA_DIGEST          "sha256"
## 添加可執行權限
chmod +x vars

建立CA頒發機構

cd /etc/open***/easy-rsa/3/
./easyrsa init-pki
./easyrsa build-ca      ## 執行過程中需要設置CA機構密碼,最少6位,其餘選項回車即可

構建Open***服務器證書

./easyrsa gen-req tars-***-server nopass
./easyrsa sign-req server tars-***-server  ##系統將要求您輸入"CA"密碼,輸入密碼,然後按Enter。您將在“ pki/issued/”目錄下獲得"tars-***-server.crt"證書文件。
openssl verify -CAfile pki/ca.crt pki/issued/tars-***-server.crt   ##驗證生成的證書文件

## 已創建所有服務器證書密鑰。服務器私鑰位於"pki/private/tars-***-server.key",服務器證書位於"pki/issued/tars-***-server.crt"。

構建Open***客戶端證書

./easyrsa gen-req yexinlei nopass   ##這裏可以爲每個人創建一個證書也可以創建一個公共證書
./easyrsa sign-req client yexinlei  ## ca簽發yexinlei的證書,先yes,後輸入密碼
openssl verify -CAfile pki/ca.crt pki/issued/client01.crt ## 驗證客戶端證書

生成Diffie-Hellman密鑰

./easyrsa gen-dh    ## 生成時間取決於我們機器配置以及vars文件中定義的長度,當然越長越安全。

配置Open***證書歸納

整理證書到Open***規定目錄

## 服務器證書
cp pki/ca.crt /etc/open***/server/
cp pki/issued/tars-***-server.crt /etc/open***/server/
cp pki/private/tars-***-server.key /etc/open***/server/

## 客戶端證書
cp pki/ca.crt /etc/open***/client/
cp pki/issued/yexinlei.crt /etc/open***/client/
cp pki/private/yexinlei.key /etc/open***/client/

複製Diffie-Hellman密鑰和CRL密鑰

cp pki/dh.pem /etc/open***/server/
cp pki/crl.pem /etc/open***/server/

配置Open***服務器

cd /etc/open***/
mkdir -p /var/log/open***   ## 創建日誌文件
vim server.conf     ## 編輯配置文件

# Open*** Port, Protocol and the Tun
port 54911

proto udp
dev tun

# Open*** Server Certificate - CA, server key and certificate
ca /data1/open***/server/ca.crt
cert /data1/open***/server/mgt-***-server1.crt
key /data1/open***/server/mgt-***-server1.key

# DH and CRL key
dh /data1/open***/server/dh.pem

# Revoked certificates if we create the list
# crl-verify /data1/open***/server/crl.pem

# push "redirect-gateway def1"      ## 所有客戶端的默認網關都將重定向到***

server 10.254.254.0 255.255.255.0       ## ***地址池
push "route 10.3.0.0 255.255.0.0"       ## 推送路由表
push "route 10.10.0.0 255.255.0.0"

# DNS configuration
push "dhcp-option DNS 10.3.2.20"        ## 推送DNS信息
#push "dhcp-option DNS 10.3.2.10"

# Domain search configuration. 
# The latest Open*** client versions for Windows do not recognize option DOMAIN-SEARCH correctly, and work with DOMAIN
#push "dhcp-options DOMAIN mgt.tarscorp.com"
push "dhcp-option DOMAIN-SEARCH mgt.tarscorp.com"

duplicate-cn        ## 允許多個客戶端使用相同的證書密鑰進行連接

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
persist-key
persist-tun
comp-lzo yes
daemon
user nobody
group nobody

# LDAP authentication
auth-user-pass-verify auth_ldap.sh via-env
script-security 3
reneg-sec 0     ## 禁用TSL重協商

# Open*** Log
log-append /var/log/open***/***.log
# management 10.254.1.1 7656        ## 管理接口,可以搭配 https://github.com/AuspeXeu/open***-status 進行使用
status /var/log/open***/status.log  ## 記錄當前在線***用戶狀態
verb 3

配置Open***結合OpenLDAP認證腳本

yum install open***-auth-ldap openldap-clients -y

vim auth_ldap.sh
#!/bin/bash
# :mode=shellscript
#
# Gets environment from Open*** and Auth to LDAP Server

set >> /tmp/auth-user

ldap_base="ou=Users,dc=tars,dc=com"
ldap_host="mgt-ldap-server1"

#
# Bind As and Search For Self
ldapsearch \
    -h ${ldap_host} \
    -b "uid=${username},${ldap_base}" \
    -D "uid=${username},${ldap_base}" \
    -w "${password}" \
    "uid=${username}" >/dev/null 2>&1

# Return Success (0) or Not Success
R="$?"
echo "$R" >> /tmp/auth-user
exit $R

chmod +x auth_ldap.sh

配置系統支持Open***

## 配置內核
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

## 配置iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

## 啓動及開機自啓
systemctl start open***@server
systemctl enable open***@server

## 若使用雲環境,請開放Open***的安全組權限

配置Open***客戶端

## 層級關係
open***
└── 10.10.10.1-dev
    ├── 10.10.10.1-dev.o***
    └── certs
        ├── ca.crt
        ├── yexinlei.crt
        └── yexinlei.key

## 客戶端配置文件
vim 10.10.10.1-dev.o***

client
dev tun
proto udp

remote 10.10.10.1 54911

ca certs/ca.crt
cert certs/yexinlei.crt
key certs/yexinlei.key

reneg-sec 0
auth-user-pass

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lzo
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

常見問題:

使用open***登錄後所有流量全部走open***?

1、open***的配置及客戶端文件是否指定如下字段

push "redirect-gateway def1 bypass-dhcp" ##該策略會修改計算機的默認網關爲open***

2、若不存在檢查open***客戶端是否有重定向流量開關定義。這種問題主要發生在Linux系統中

deepin 系統在open***下包含“僅應用於相對應的網絡上的資源”選項,勾選該選項意味着只會增加open***推送的路由,而不會重定向所有流量。具體Ubuntu及debian等系統各位仔細查看響應的配置

3、如果是在找不到問題可以嘗試使用open***命令連接,藉助expect自動化登錄,而不借助系統或第三方open***工具

#!/usr/bin/expect
spawn sudo open*** --config 10.10.10.1-dev.o***
expect {
        "*Username"        {send "xxxx\r";exp_continue}
        "*Password"     {send "xxxx\r"}
}
expect eof

如何多實例open*** server?

場景是我們印度一臺服務器做open***,但由於不可抗原因端口國內經常不可用,國外訪問正常,所以滿足國內需要經常變更端口,那麼每次修改端口給國外的小夥伴並不友好。所以可以在一臺服務器上部署兩組***實例,分別給國內與國外使用,而修改端口也不影響印度同事正常使用。

分別配置不同實例的啓動加載配置文件,以下爲參考

[Unit]
Description=Open*** Robust And Highly Flexible Tunneling Application On %I
After=network.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/open*** --config /data1/open***/server-india.conf   ## 這裏指向不同配置文件

[Install]
WantedBy=multi-user.target

客戶端如何同時連接兩個open*** ?

默認Windows安裝只會有一個“TAP-Windows Adapter V9”的虛擬網卡,只能滿足一個open***連接,所以使用自帶工具添加

Windows主機:
以管理員身份運行該文件--> "C:\Program Files\TAP-Windows\bin\addtap.bat" --> 提示“Drivers installed successfully.”按任意鍵退出
重新打開***嘗試同時連接兩個***

Open***無法與其他***工具共存?

理論上只要路由不衝突,多個***共存完全不是問題,所以從路由表上開始排查。分別單獨登錄***工具,並記錄每個***的路由表,然後作對比,排查是否存在路由衝突網關重定向,這兩樣都會導致無法共存

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