日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > centos >内容正文

centos

Centos 部署OpenVP* 证书+密码认证

發(fā)布時間:2023/12/10 centos 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Centos 部署OpenVP* 证书+密码认证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、實驗環(huán)境

主機 內(nèi)網(wǎng)IP 外網(wǎng)IP 系統(tǒng) 備注 OpenVPN 10.5.10.202 NAT映射外網(wǎng)訪問 Centos7 OpenVPN服務端 PC1 10.5.10.122 內(nèi)網(wǎng)用戶 Windows7 x64 客戶端 PC2 10.5.10.123 內(nèi)網(wǎng)用戶 Windows10 客戶端 PC3 外網(wǎng)用戶 Windows7 x64 客戶端

二、生成證書

1、添加epel yum源

[root@openvpn ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

2、下載證書生成工具easy-rsa

[root@openvpn ~]# yum -y install easy-rsa

3、創(chuàng)建證書環(huán)境目錄

[root@openvpn ~]# mkdir -p /opt/easy-rsa [root@openvpn ~]# cp -a /usr/share/easy-rsa/3.0.8/* /opt/easy-rsa/ [root@openvpn ~]# cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example /opt/easy-rsa/vars

4、修改vars配置文件,取消下面配置的注釋

[root@openvpn ~]# vi /opt/easy-rsa/vars set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "GuangDong" set_var EASYRSA_REQ_CITY "GuangZhou" set_var EASYRSA_REQ_ORG "IT" set_var EASYRSA_REQ_EMAIL "IT@qq.com" set_var EASYRSA_NS_SUPPORT "yes"

5、初始化,創(chuàng)建pki目錄用于存儲證書(以下都在/opt/easy-rsa目錄下操作)

[root@openvpn ~]# cd /opt/easy-rsa/ [root@openvpn easy-rsa]# ./easyrsa init-pki

?6、創(chuàng)建根證書,根證書用于ca對之后生成的server和client證書簽名時使用

[root@openvpn easy-rsa]# ./easyrsa build-ca

?7、創(chuàng)建server端證書和密鑰文件(nopass表示不加密密鑰文件,生成過程中直接默認回車)

[root@openvpn easy-rsa]# ./easyrsa gen-req server nopass

8、給server端證書簽名

[root@openvpn easy-rsa]# ./easyrsa sign server server

?9、創(chuàng)建Diffie-Hellman文件,密鑰交換時的Diffie-Hellman算法

[root@openvpn easy-rsa]# ./easyrsa gen-dh

10、創(chuàng)建client端證書和密鑰文件(nopass表示不加密密鑰文件,生成過程中直接默認回車)

[root@openvpn easy-rsa]# ./easyrsa gen-req client nopass

?11、給client端證書簽名

[root@openvpn easy-rsa]# ./easyrsa sign client client

三、OpenVPN服務端部署

1、安裝openvpn

[root@openvpn ~]# yum install -y openvpn

2、創(chuàng)建TLS認證密鑰

[root@openvpn ~]# openvpn --genkey --secret /etc/openvpn/ta.key

3、創(chuàng)建新的配置文件/etc/openvpn/server.conf

[root@openvpn ~]# vi /etc/openvpn/server.conf #監(jiān)聽本機端口 port 1194 #指定采用的傳輸協(xié)議,可選tcp或udp proto tcp #指定創(chuàng)建的通信隧道類型,可選tun或tap dev tun #指定CA證書的文件路徑 ca ca.crt #指定服務器端的證書文件路徑 cert server.crt #指定服務器端的私鑰文件路徑 key server.key #指定迪菲赫爾曼參數(shù)的文件路徑,也就是交換證書 dh dh.pem #給客戶端分配地址池,注意:不能和VPN服務器內(nèi)網(wǎng)網(wǎng)段有相同 server 10.8.0.0 255.255.255.0 #允許客戶端訪問內(nèi)網(wǎng)網(wǎng)段 push "route 10.5.10.0 255.255.255.0" #服務器自動給客戶端分配IP后,客戶端下次連接時,仍然采用上次的IP地址"第一次分配的IP保存在ipp.txt中,下一次分配其中保存的IP" ifconfig-pool-persist ipp.txt #存活時間,10秒ping一次,120如未收到響應則視為斷線 keepalive 10 120 #最多允許100個客戶端連接 max-clients 100 #日志記錄位置 status openvpn-status.log #openvpn版本 verb 3 #允許客戶端與客戶端相連接,默認情況下客戶端只能與服務器相連接 client-to-client #openvpn日志記錄位置 log /var/log/openvpn.log #通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys persist-key #檢測超時后,重新啟動VPN,一直保持tun是linkup的.否則網(wǎng)絡會先linkdown然后再linkup persist-tun #開啟TLS-auth,使用ta.key防御攻擊.服務器端的第二個參數(shù)值為0,客戶端的為1 tls-auth /etc/openvpn/ta.key 0

4、拷貝證書到openvpn主配置文件目錄下

[root@openvpn ~]# cp -a /opt/easy-rsa/pki/ca.crt /etc/openvpn/ [root@openvpn ~]# cp -a /opt/easy-rsa/pki/issued/server.crt /etc/openvpn/ [root@openvpn ~]# cp -a /opt/easy-rsa/pki/private/server.key /etc/openvpn/ [root@openvpn ~]# cp -a /opt/easy-rsa/pki/dh.pem /etc/openvpn/

5、設置開機啟動,檢查服務端口

[root@openvpn ~]# systemctl start openvpn@server [root@openvpn ~]# systemctl status openvpn@server

四、OpenVPN客戶端部署

1、win7客戶端安裝,默認安裝(openvpn客戶端需要.net支持,網(wǎng)絡正常會自動安裝)

2、win10安裝,默認安裝(openvpn客戶端需要.net支持,網(wǎng)絡正常會自動安裝)

?

3、拷貝服務端生成的證書到openvpn客戶端安裝目錄的config目錄下

/opt/easy-rsa/pki/ca.crt /opt/easy-rsa/pki/issued/client.crt /opt/easy-rsa/pki/private/client.key /etc/openvpn/ta.key

4、在客戶端openvpn安裝目錄的config目錄下,新建一個client.ovpn文件,寫入配置

#指定當前VPN是客戶端 client #使用tun隧道傳輸協(xié)議 dev tun #使用udp協(xié)議傳輸數(shù)據(jù) proto tcp #openvpn服務器IP地址端口號 remote 10.5.10.202 1194 #斷線自動重新連接,在網(wǎng)絡不穩(wěn)定的情況下非常有用 resolv-retry infinite #不綁定本地特定的端口號 nobind #指定CA證書的文件路徑 ca ca.crt #指定當前客戶端的證書文件路徑 cert client.crt #指定當前客戶端的私鑰文件路徑 key client.key #指定日志文件的記錄詳細級別,可選0-9,等級越高日志內(nèi)容越詳細 verb 3 #通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys persist-key #檢測超時后,重新啟動VPN,一直保持tun是linkup的。否則網(wǎng)絡會先linkdown然后再linkup persist-tun #使用ta.key防御攻擊。服務器端的第二個參數(shù)值為0,客戶端的為1 tls-auth ta.key 1

?5、啟動Open VPN客戶端軟件,連接成功OpenVPN的圖標會變成綠色

win7連接成功

?win10連接成功

?OpenVPN會分配一個IP地址給客戶端,客戶端會使用該虛擬網(wǎng)絡IP地址與服務端進行通信。

6、目前客戶端只能ping虛擬網(wǎng)絡的IP,不能跟內(nèi)網(wǎng)其他主機互通

五、OpenVPN客戶端訪問內(nèi)網(wǎng)

1、客戶端要想跟內(nèi)網(wǎng)通訊還需要openvpn服務端開啟內(nèi)核轉(zhuǎn)發(fā)

[root@openvpn ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf [root@openvpn ~]# sysctl -p net.ipv4.ip_forward = 1

2、方法一:添加路由規(guī)則方式訪問內(nèi)部網(wǎng)絡

在內(nèi)網(wǎng)主機上添加一條路由規(guī)則,讓內(nèi)網(wǎng)主機有回到OpenVPN客戶端的路由。如果不添加,那內(nèi)網(wǎng)主機只能接受到來自客戶端的包,但是沒法把響應的包傳回去。

弊端:如果有成白上千臺主機時,每一臺主機都要添加路由規(guī)則,這樣任務量是比較大的。

3、方法二:添加防火墻方式訪問內(nèi)部網(wǎng)絡

在服務端開啟防火墻,放行openvpn服務,并且開啟masquerade

優(yōu)點:只需在OpenVPN服務端配置防火墻規(guī)則,內(nèi)部網(wǎng)絡主機無需配置

[root@openvpn ~]# systemctl start firewalld [root@openvpn ~]# firewall-cmd --add-masquerade --permanent [root@openvpn ~]# firewall-cmd --add-service=openvpn --permanent [root@openvpn ~]# firewall-cmd --add-port=1194/tcp --permanent [root@openvpn ~]# firewall-cmd --reload

六、證書+密碼認證

1、修改OpenVPN服務端配置文件

#在最后增加以下配置 [root@openvpn ~]# vi /etc/openvpn/server.conf #允許使用自定義腳本 script-security 3 #腳本路徑 auth-user-pass-verify /etc/openvpn/check.sh via-env #用戶密碼登陸方式驗證 username-as-common-name

加上client-cert-not-required則代表只使用用戶名密碼方式驗證登錄,如果不加,則代表需要證書和用戶名密碼雙重驗證登錄

2、添加腳本

[root@openvpn ~]# vi /etc/openvpn/check.sh #!/bin/sh ########################################################### PASSFILE="/etc/openvpn/openvpnpass" LOG_FILE="/var/log/openvpn-password.log" TIME_STAMP=`date "+%Y-%m-%d %T"`if [ ! -r "${PASSFILE}" ]; thenecho "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}exit 1 fiCORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`if [ "${CORRECT_PASSWORD}" = "" ]; thenecho "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}exit 1 fi if [ "${password}" = "${CORRECT_PASSWORD}" ]; thenecho "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}exit 0 fiecho "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE} exit 1

3、增加執(zhí)行權(quán)限

[root@openvpn ~]# chmod +x /etc/openvpn/check.sh

4、增加用戶密碼文件

[root@openvpn ~]# vi /etc/openvpn/openvpnpass openvpn openvpn@123

5、重啟openvpn服務

[root@openvpn ~]# systemctl restart openvpn@server

6、修改客戶端安裝路徑config目錄下的client.opvn配置文件,在最后增加

auth-user-pass

?

七、出口防火墻設置

1、在出口設備配置映射,映射openvpn 1194端口到公網(wǎng),允許用戶通過對應的公網(wǎng)地址+端口訪問

2、修改客戶端的client.ovpn文件,把遠程地址改為公網(wǎng)IP+端口

#openvpn服務器IP地址端口號 remote 公網(wǎng)IP 1194

3、客戶端退出重新登錄即可

總結(jié)

以上是生活随笔為你收集整理的Centos 部署OpenVP* 证书+密码认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。