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