Open***實踐心得分享

Open***結合OpenLDAP認證

目錄git

[TOC]github

安裝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       "it@tars.com"
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***?

一、open***的配置及客戶端文件是否指定以下字段shell

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

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

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

三、若是是在找不到問題能夠嘗試使用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***,但因爲不可抗緣由端口國內常常不可用,國外訪問正常,因此知足國內須要常常變動端口,那麼每次修改端口給國外的小夥伴並不友好。因此能夠在一臺服務器上部署兩組***實例,分別給國內與國外使用,而修改端口也不影響印度同事正常使用。網絡

分別配置不一樣實例的啓動加載配置文件,如下爲參考app

[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***鏈接,因此使用自帶工具添加ide

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

Open***沒法與其餘***工具共存?

理論上只要路由不衝突,多個***共存徹底不是問題,因此從路由表上開始排查。分別單獨登陸***工具,並記錄每一個***的路由表,而後做對比,排查是否存在路由衝突網關重定向,這兩樣都會致使沒法共存

Windows:
    route print
Linux:
    route -n
相關文章
相關標籤/搜索