今天帶大家學(xué)習(xí)一下,用OpenVPN輕松實(shí)現(xiàn)內(nèi)網(wǎng)穿透,打造專屬安全遠(yuǎn)程訪問(wèn)通道。
# 安裝openvpn
yum install openvpn |
1、用于生成openVPN所需的密鑰,服務(wù)端和客戶端所需的證書和密鑰
# 下載Easy RSA源碼包
1、下載地址:
https://github.com/OpenVPN/easy-rsa/releases
2、下載源碼包
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz
3、移動(dòng)到固定位置
mv EasyRSA-3.1.2 /etc/openvpn/easy-rsa |
2、修改配置文件
1、把vars.example樣例文件重命名為vars,然后編輯
2、搜索 set_var EASYRSA_CA_EXPIRE 設(shè)置證書有效期一年
3、搜索 set_var EASYRSA_CERT_EXPIRE 設(shè)置服務(wù)有效期 |
3、使用Easy RSA在服務(wù)端生成私鑰和證書
1、使用easyrsa清理原有證書和私鑰:
./easyrsa clean-all
2、生成CA根證書:./easyrsa build-ca
這里輸入兩個(gè)根密碼,第三次回車即可
3、證書生成位置
/etc/openvpn/easy-rsa/pki/ca.crt |
4、為OpenVPN服務(wù)端生成server證書和私鑰
1、使用nopass參數(shù)設(shè)置不需要密碼,那么在啟動(dòng)OpenVPN服務(wù)的時(shí)候就不提示輸入密碼
./easyrsa build-server-full server nopass
2、證書和密鑰的位置
服務(wù)端證書路徑:/etc/openvpn/easy-rsa/pki/issued/server.crt
服務(wù)端私鑰路徑:/etc/openvpn/easy-rsa/pki/private/server.key
3、生成Diffie-Hellman算法需要的密鑰文件:
./easyrsa gen-dh
4、生成tls-auth Key用于防止DDOS和TLS攻擊:
openvpn --genkey --secret ta.key
5、ta.key路徑
/etc/openvpn/easy-rsa/ta.key |
1、創(chuàng)建修改服務(wù)端配置文件
1、配置文件位置:/etc/openvpn/server/server.conf
vim /etc/openvpn/server/server.conf
====================================== BEGIN ===========================================
port 1194 #端口
dev tun #采用路由隧道模式tun
ca ca.crt #ca證書文件位置
cert server.crt #服務(wù)端公鑰名稱
key server.key #服務(wù)端私鑰名稱
dh dh.pem #交換證書
auth SHA1
proto tcp
server 10.8.0.0 255.255.255.0 #給客戶端分配地址池,注意:不能和VPN服務(wù)器內(nèi)網(wǎng)網(wǎng)段有相同
push "route 10.0.8.2 255.255.252.0" #允許客戶端訪問(wèn)內(nèi)網(wǎng)10.0.8.2網(wǎng)段,我這里填了服務(wù)器內(nèi)網(wǎng)IP和子網(wǎng)掩碼
client-to-client
verb 3 #openvpn版本
persist-key #通過(guò)keepalive檢測(cè)超時(shí)后,重新啟動(dòng)VPN,不重新讀取keys,保留第一次使用的keys。
persist-tun #檢測(cè)超時(shí)后,重新啟動(dòng)VPN,一直保持tun是linkup的。否則網(wǎng)絡(luò)會(huì)先linkdown然后再linkup
keepalive 10 120 #存活時(shí)間,10秒ping一次,120 如未收到響應(yīng)則視為斷線
max-clients 200 #最多允許200個(gè)客戶端連接
ifconfig-pool-persist ipp.txt #地址池記錄文件位置 維持客戶端和virtual ip的對(duì)應(yīng)表,以便客戶端重連接連接也是相同IP
duplicate-cn #和keys連接VPN,一定要打開這個(gè)選項(xiàng),否則只允許一 個(gè)人連接VPN
script-security 3 #支持密碼認(rèn)證-允許使用自定義腳本
auth-user-pass-verify /etc/openvpn/check.sh via-env #支持密碼認(rèn)證-指定認(rèn)證腳本
username-as-common-name #支持密碼認(rèn)證-用戶密碼登陸方式驗(yàn)證
====================================== END ===========================================
2、編寫用戶認(rèn)證腳本文件
1、腳本文件位置:/etc/openvpn/check.sh
vim /etc/openvpn/check.sh
====================================== BEGIN 寫入下面內(nèi)容 ===========================================
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile" #密碼文件 用戶名 密碼明文
LOG_FILE="/var/log/openvpn-password.log" #用戶登錄情況的日志
TIME_STAMP=`date "+%Y-%m-%d %T"`
if [ ! -r "${PASSFILE}" ]; then
echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
exit 1
fi
CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
if [ "${CORRECT_PASSWORD}" = "" ]; then
echo "${TIME_STAMP}: User does not exist: username=\"${username}\",password=\"${password}\"." >> ${LOG_FILE}
exit 1
fi
if [ "${password}" = "${CORRECT_PASSWORD}" ]; then
echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
exit 0
fi
echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1
====================================== END ===========================================
2、給腳本可執(zhí)行權(quán)限
chmod +x /etc/openvpn/check.sh
3、創(chuàng)建用戶密碼
1、文件密碼存儲(chǔ)文件位置:/etc/openvpn/openvpnfile 2、內(nèi)容格式:每行對(duì)應(yīng)一個(gè)賬號(hào)密碼 koten 1 |
4、移動(dòng)相關(guān)密鑰文件啟動(dòng)服務(wù)
1、拷貝私鑰、公鑰和證書等文件到server.conf同級(jí)目錄/etc/openvpn/server/下
注:需要拷貝的文件包括ca.crt、ca.key、server.crt、server.key、dh.pem、ta.key
cp /etc/openvpn/easy-rsa/pki/ca.crt
cp /etc/openvpn/easy-rsa/pki/private/ca.key
cp /etc/openvpn/easy-rsa/pki/issued/server.crt
cp /etc/openvpn/easy-rsa/pki/private/server.key
cp /etc/openvpn/easy-rsa/pki/dh.pem
cp /etc/openvpn/easy-rsa/ta.key
2、啟動(dòng)服務(wù):使用--config path 指定配置文件
openvpn --config server.conf
到這里我們的服務(wù)端就搭建好了,使用ifconfig可以看到我們的服務(wù)端已經(jīng)給自己分配了一個(gè)10.8.0.1的虛擬IP
1、安裝openVPn
# 安裝openvpn yum install openvpn |
2、在服務(wù)端生成客戶端的證書和私鑰,每個(gè)客戶端都要有自己的私鑰
1、在/etc/openvpn/easy-rsa/ 目錄下執(zhí)行
./easyrsa build-client-full client nopass
注??:生成的時(shí)候需要輸入CA根證書的密碼
2、生成的證書位置
客戶端證書路徑:/etc/openvpn/easy-rsa/pki/issued/client.crt
客戶端私鑰路徑:/etc/openvpn/easy-rsa/pki/private/client.key
3、將生成的客戶端證書(client.crt)、私鑰(client.key),服務(wù)端根證書(ca.crt)、ta.key打包放到客戶端的 /etc/openvpn/client位置
3、創(chuàng)建/修改OpenVPN客戶端配置文件
1、編輯配置文件
client
dev tun
proto tcp
remote xx.xx.xx.xx 1194
ca ca.crt #指定CA證書的文件路徑
cert client.crt #指定當(dāng)前客戶端的證書文件路徑
key client.key #指定當(dāng)前客戶端的私鑰文件路徑
nobind #不綁定本地特定的端口號(hào)
auth SHA1
resolv-retry infinite #斷線自動(dòng)重新連接,在網(wǎng)絡(luò)不穩(wěn)定的情況下非常有用
verb 3 #指定日志文件的記錄詳細(xì)級(jí)別,可選0-9,等級(jí)越高日志內(nèi)容越詳細(xì)
persist-key #通過(guò)keepalive檢測(cè)超時(shí)后,重新啟動(dòng)VPN,不重新讀取keys,保留第一次使用的keys
persist-tun #檢測(cè)超時(shí)后,重新啟動(dòng)VPN,一直保持tun是linkup的。否則網(wǎng)絡(luò)會(huì)先linkdown然后再linkup
auth-user-pass pass.txt #用戶密碼驗(yàn)證
====================================== END ===========================================
4、創(chuàng)建賬號(hào)密碼文件
1、/etc/openvpn/client下創(chuàng)建用戶密碼文件pass.txt:格式第一行賬號(hào),第二行密碼,如:
張三
123456 |
5、啟動(dòng)客戶端
# 啟動(dòng)客戶端
1、openvpn --config client.conf
觀察下圖:已經(jīng)為我們分配的對(duì)應(yīng)的虛擬IP,通過(guò)這個(gè)IP在這個(gè)網(wǎng)段內(nèi)的機(jī)器都可以互通了 |
在我們自己的電腦直接使用VPN訪問(wèn)內(nèi)網(wǎng)
分別配置在Windows和Mac上使用下載地址:https://openvpn.net/client/
1、Windows客戶端下載:
https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.12-I001-arm64.msi
2、Mac客戶端下載
https://swupdate.openvpn.net/downloads/connect/openvpn-connect-3.4.9.4830_signed.dmg
3、以Mac為例
把上面說(shuō)到的Easy RSA生成的服務(wù)器根證書ca.crt、客戶端私鑰clientpc.key、證書client.crt,和ta.key復(fù)制到一個(gè)目錄下面
然后新建一個(gè)client.ovpn文件
client
dev tun
proto tcp
remote 41.19.18.17 1194
ca ca.crt #指定CA證書的文件路徑
cert client.crt #指定當(dāng)前客戶端的證書文件路徑
key client.key #指定當(dāng)前客戶端的私鑰文件路徑
nobind #不綁定本地特定的端口號(hào)
auth SHA1
resolv-retry infinite #斷線自動(dòng)重新連接,在網(wǎng)絡(luò)不穩(wěn)定的情況下非常有用
verb 3 #指定日志文件的記錄詳細(xì)級(jí)別,可選0-9,等級(jí)越高日志內(nèi)容越詳細(xì)
persist-key #通過(guò)keepalive檢測(cè)超時(shí)后,重新啟動(dòng)VPN,不重新讀取keys,保留第一次使用的keys
persist-tun #檢測(cè)超時(shí)后,重新啟動(dòng)VPN,一直保持tun是linkup的。否則網(wǎng)絡(luò)會(huì)先linkdown然后再linkup
auth-user-pass pass.txt #用戶密碼驗(yàn)證
新建pass.txt 文件,與客戶端的賬號(hào)密碼規(guī)則一樣,第一行為賬戶,第二行密碼
點(diǎn)擊導(dǎo)入配置文件
這樣就連上了,觀察本地IP,發(fā)現(xiàn)為我們也分配了一個(gè)虛擬IP
在我們本地就可以隨意訪問(wèn)內(nèi)網(wǎng)網(wǎng)絡(luò)了。
該文章在 2024/8/26 10:27:43 編輯過(guò)