一、說明
***直譯就是虛擬專用通道,是提供給企業之間或者個人與公司之間安全數據傳輸的隧道,Open***無疑是Linux下開源***的先鋒,提供了良好的性能和友好的用戶GUI;平時同事出差在外面連接公司,獲取公司資源;2020由於新型肺炎導致春節假期延長,有條件的公司都實行在家辦公,那麼請問怎麼保證各部門同事能在家辦公?如何保障同事出差在外也能連接公司獲取需要的資源?答案顯然是使用***,本文主要講部署open***和windows客戶端使用。
環境:
需要有windows域環境做ldap認證
server:CentOS7.6 X64
client: win7
軟件: open***-2.4.8-1.el7.x86_64 open***-auth-ldap-2.0.3-17.el7.x86_64
二、密鑰無密碼Open***部署
1、軟件包安裝
yum install easy-rsa openssh-server lzo lzo-devel openssl openssl-devel open*** NetworkManager-open*** libgcrypt libgpg-error libgcrypt-devel open***-auth-ldap openldap-clients -y
2、配置open***
複製默認配置文件
# cp /usr/share/doc/open***-2.4.8/sample/sample-config-files/server.conf /etc/open***
修改server.conf
cat /etc/open***/server.conf |egrep '(^$|^;^#)'
local 172.16.0.207 #本機ip
port 1194 #運行端口
proto udp # 運行協議 tcp較慢
dev tun # #採用路由隧道模式
ca ca.crt
cert server.crt
key server.key # 服務器密鑰
dh dh2048.pem # 密鑰交換協議文件
topology subnet
server 192.168.11.0 255.255.255.0 #給客戶端分配地址池,注意:不能和***服務器內網網段相同
ifconfig-pool-persist ipp.txt
push "route 0.0.0.0 0.0.0.0" # 定義網關
push "route 192.168.11.0 255.255.255.0" #推送***服務器內網網段給客戶端
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 172.16.0.1" # 推送dns配置
keepalive 10 120 #存活時間,10秒ping一次,120 如未收到響應則視爲斷線
tls-auth ta.key 0 # 第二個參數在服務器端應該爲'0',在客戶端應該爲'1'。
cipher AES-256-CBC # 選擇一個密碼加密算法
comp-lzo #傳輸數據壓縮
max-clients 100 #最多允許 50 客戶端連接
persist-key
persist-tun
status open***-status.log
log open***.log
verb 3
mute 20 # 相同類別的信息只有前20條會輸出到日誌文件中
explicit-exit-notify 1
3、easy-rsa配置證書密鑰
# wget https://github.com/Open***/easy-rsa/archive/release/2.x.zip
# unzip easy-rsa-release-2.x.zip
# unzip
# yum install unzip
# unzip 2.x.zip
# cd easy-rsa-release-2.x/
# cd easy-rsa/
# mkdir /etc/open***/easy-rsa
# cp 2.0/* /etc/open***/easy-rsa/
# cd /etc/open***/easy-rsa/
# cat vars
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="CN" # 修改部分
export KEY_PROVINCE="SH" # 修改部分
export KEY_CITY="SJ" # 修改部分
export KEY_ORG="ICKEY" # 修改部分
export KEY_EMAIL="[email protected]" # 修改部分
export KEY_OU="YunWei" # 修改部分
export KEY_NAME="EasyRSA"
4、創建證書
# cp /etc/open***/easy-rsa/openssl-1.0.0.cnf /etc/open***/easy-rsa/openssl.cnf
# source ./vars
# ./clean-all
# ./build-ca #之前已配置好相關參數,故執行命令後,按回車鍵,一直到結束即可。
# 創建服務端證書
# ./build-key-server server #創建通用名(common name)爲"server"的證書文件;按回車鍵進行,在提示輸入密碼的地方,設置一個密碼如ickey@2020,最後輸入兩次“y”確認
# 生成防***的key文件
# open*** --genkey --secret keys/ta.key # 生成ta.key文件(防DDos***、UDP淹沒等惡意***)
## 創建客戶端證書
# ./build-dh #創建祕鑰文件,耗時1分鐘左右
# ls /etc/open***/easy-rsa/keys/
# cd /etc/open***/easy-rsa/keys
# cp dh2048.pem ca.crt server.crt server.key ta.key /etc/open***
# ./build-key client #創建一個通用名(common name)爲client的客戶端證書;創建客戶端證書文件,按回車進行,提示輸入密碼的地方,輸入之前設置的證書密碼,
# ls /etc/open***/easy-rsa/keys/
5、啓動open***
# systemctl status open***@server.service
# systemctl enable open***@server.service
# systemctl start open***@server.service
# systemctl status open***@server.service
此時系統已經開放udp 1194端口
三、防火牆路由配置
1、做端口映射
將服務器的udp 1194端口在公司出口防火牆上做端口映射爲udp 1194或其他端口;
2、open***本身防火牆配置
建議將iptables關閉,並手動添加一條規則
# iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
重啓open***服務
# systemctl restart open***@server.service
四、windows客戶端配置
1、客戶端下載與安裝
windows客戶端下載地址
https://open***.net/community-downloads/
以下是win7
https://swupdate.open***.org/community/releases/open***-install-2.4.8-I602-Win7.exe
win10:
https://swupdate.open***.org/community/releases/open***-install-2.4.8-I602-Win10.exe
一路next 最後會彈出如下圖 提示安裝虛擬網卡驅動 鉤選並安裝 即可如圖
2、配置客戶端
安裝好open***客戶端軟件後,將open***服務器端/etc/open***/easy-rsa/keys目錄下的 ta.key,client.key,client.crt,ca.crt證書複製到客戶端的安裝目錄的config文件夾下,然後從客戶端的sample-config文件夾內拷貝client.o*** 到config文件夾下,編輯client.o***
C:\Program Files\Open***\config\cliet.o***配置如下:
client
dev tun
proto tcp
remote "你的防火牆映射出來的公網ip" 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1 cipher AES-256-CBC
comp-lzo
verb 3 mute 20
保存配置後雙擊桌面的Open***GUI即完成登錄;
以上是基於證書密鑰登錄open***;
五、基於LDAP認證
1、服務器端修改
# cat /etc/open***/auth/ldap.conf
<LDAP>
URL ldap://172.16.0.26:389
# cat ldap.txt |grep CN=Administrator |head -n 1
BindDN "CN=Administrator,CN=Users,DC=PKEY,DC=LOCAL"
Password PASSWORD
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "OU=PKEY,DC=PKEY,DC=LOCAL" #查出來後範圍最大化
SearchFilter "(&(sAMAccountName=%u)(memberof=CN=my***,OU=open***,OU=PKEY,DC=PKEY,DC=LOCAL))"
RequireGroup false
<Group>
BaseDN "OU=open***,OU=PKEY,DC=PKEY,DC=LOCAL"
SearchFilter "(cn=open***)"
MemberAttribute "member"
</Group>
</Authorization>
說明:
以上BaseDN部分通過這個工具測試得到;另外open*** 這個ou域上需要有,my***是open***下的安全組,即加到這個open***下的my***組中的用戶可以通過認證登錄open***,不加入這個組則不行;
ldapsearch -LLL -x -h 172.16.0.26 -D "[email protected]" -W -b "dc=pkey,dc=local" "*" >/tmp/ldap.txt
# cat ldap.txt |grep my*** #
memberOf: CN=my***,OU=open***,OU=PKEY,DC=PKEY,DC=LOCAL
2、修改server.conf配置
server.conf配置文件只需要在之前的基礎上添加以下三行即可
# cat server.conf |egrep -v '(^$|^;|^#)' |tail -n 6
log open***.log
verb 3
plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so "/etc/open***/auth/ldap.conf" #ldap認證需要添加
client-cert-not-required # ldap認證需要添加
username-as-common-name # ldap認證需要添加
mute 20
重啓open***服務systemctl restart open***@server.service
3、客戶端配置
此時客戶端配置只需要修改
C:\Program Files\Open***\config\client.o***配置文件即可,最終配置如下:
client
dev tun
proto udp
remote "你的防火牆映射出來的公網ip" 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
#cert client.crt ## 結合了ldap註釋
#key client.key ## 結合了ldap註釋
auth-user-pass # 結合了ldap認證需要添加
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3
mute 20
此時再次運行Open***GUI會彈出如下圖所示:
連接成功後任務欄右下角出現如下圖標:
如果認證失敗請到服務器上
tail -fn 100 open***.log 通過提示排查;
如以上的ldap.conf中配置錯誤;或用戶沒有加到open***下的my***組會出現如下錯誤提示:
**LDAP user "donyc" was not found.**
Wed Feb 5 22:47:27 2020 101.80.125.78:34260 PLUGIN_CALL: POST /usr/lib64/open***/plugin/lib/open***-auth-ldap.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
Wed Feb 5 22:47:27 2020 101.80.125.78:34260 PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib64/open***/plugin/lib/open***-auth-ldap.so
Wed Feb 5 22:47:27 2020 101.80.125.78:34260 TLS Auth Error: Auth Username/Password verification failed for peer
open***是全平臺支持的;其他客戶端請自行到官方網站下載;到此一個在家或出差辦公的神器部署完成!
以此獻給疫情期間需要的人,如有問題請聯繫我~謝謝~