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
相关文章
相关标签/搜索