OpenVPN是一個(gè)開源應(yīng)用程序作彤,可讓您通過公共Internet創(chuàng)建安全的專用網(wǎng)絡(luò)丙者。 OpenVPN實(shí)現(xiàn)了虛擬專用網(wǎng)絡(luò)(VPN)以創(chuàng)建安全連接晚顷。 OpenVPN使用OpenSSL庫提供加密,并提供幾種身份驗(yàn)證機(jī)制累澡,例如基于證書的預(yù)共享密鑰以及用戶名/密碼身份驗(yàn)證鳍贾。
在本教程中鞍匾,我們將使用最新版本的centos服務(wù)器(7.5),并將使用帶有easy-rsa 3的OpenVPN 2.4骑科。在安裝OpenVPN和easy-rsa軟件包之前候学,請(qǐng)確保“ epel”存儲(chǔ)庫 已安裝在系統(tǒng)上纵散。 如果沒有梳码,請(qǐng)使用下面的yum命令安裝epel信息庫。
yum install epel-release -y
步驟1:安裝openvpn 和easy-rsa
yum install openvpn easy-rsa -y
安裝完成后伍掀,檢查openvpn和easy-rsa版本
openvpn --version
ss8.png
ls -lah /usr/share/easy-rsa/
ss8.png
已安裝帶有easy-rsa 3的OpenVPN 2.4掰茶。
步驟2:配置RSA
在此步驟中,我們將通過創(chuàng)建新的“ vars”文件來配置easy-rsa 3蜜笤。 “ vars”文件包含Easy-RSA 3設(shè)置濒蒋。
轉(zhuǎn)到“ /etc/openvpn/”目錄并復(fù)制“ easy-rsa”腳本。
cd /etc/openvpncp -r /usr/share/easy-rsa /etc/openvpn/
然后,跳轉(zhuǎn)到/etc/openvpn/easy-rsa/3/目錄并且創(chuàng)建vars文件沪伙,復(fù)制粘貼以下內(nèi)容瓮顽,并保存
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? ? "Jakarta"set_var EASYRSA_REQ_CITY? ? ? ? "Jakarta"set_var EASYRSA_REQ_ORG? ? ? ? "hakase-labs CERTIFICATE AUTHORITY"set_var EASYRSA_REQ_EMAIL? ? ? "openvpn@hakase-labs.io"set_var EASYRSA_REQ_OU? ? ? ? ? "HAKASE-LABS EASY CA"set_var EASYRSA_KEY_SIZE? ? ? ? 2048set_var EASYRSA_ALGO? ? ? ? ? ? rsaset_var EASYRSA_CA_EXPIRE? ? ? 7500set_var EASYRSA_CERT_EXPIRE? ? 365set_var EASYRSA_NS_SUPPORT? ? ? "no"set_var EASYRSA_NS_COMMENT? ? ? "HAKASE-LABS 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"
根據(jù)需要更改變量的值。
增加“ EASYRSA_KEY_SIZE”以提高安全性围橡。
更改“ EASYRSA_CA_EXPIRE”和“ EASYRSA_CERT_EXPIRE”暖混。
現(xiàn)在,通過更改文件的權(quán)限使“ vars”文件可執(zhí)行翁授。
sudo chmod +x vars
Easy-RSA 3設(shè)置的vars文件已創(chuàng)建拣播。
第3步:構(gòu)建OpenVPN密鑰
在此步驟中,我們將基于我們創(chuàng)建的easy-rsa 3'vars'文件構(gòu)建OpenVPN密鑰收擦。 我們將構(gòu)建CA密鑰贮配,服務(wù)器和客戶端密鑰,DH和CRL PEM文件塞赂。
我們將使用“ easyrsa”命令行構(gòu)建所有這些鍵泪勒。 轉(zhuǎn)到“/etc/openvpn/easy-rsa/ 3”目錄。
cd /etc/openvpn/easy-rsa/3/
初始化和建立CA
在構(gòu)建任何密鑰之前宴猾,我們需要初始化PKI目錄并構(gòu)建CA密鑰酣藻。
啟動(dòng)PKI目錄,并建立使用下面的命令CA密鑰鳍置。
sudo./easyrsainit-pkisudo./easyrsa build-ca
現(xiàn)在輸入CA密鑰的密碼,您將在'pki'目錄下獲得ca.crt和ca.key文件送淆。
構(gòu)建服務(wù)器密鑰
現(xiàn)在我們要構(gòu)建服務(wù)器密鑰税产,然后將構(gòu)建名為“ hakase-server”的服務(wù)器密鑰。
使用以下命令構(gòu)建服務(wù)器密鑰“ hakase-server”偷崩。
./easyrsa gen-req hakase-server nopass
nopass =選項(xiàng)辟拷,用于禁用“ hakase-server”密鑰的密碼。
并使用我們的CA證書簽署“ hakase-server”密鑰阐斜。
sudo ./easyrsa sign-req server hakase-server
系統(tǒng)將要求您輸入“ CA”密碼衫冻,輸入密碼,然后按Enter谒出。 您將在“ pki / issued /”目錄下獲得“ hakase-server.crt”證書文件隅俘。
創(chuàng)建的服務(wù)器證書位于
/etc/openvpn/easy-rsa/3.0.6/pki/issued/hakase-server.crt
使用OpenSSL命令驗(yàn)證證書文件,并確保沒有錯(cuò)誤笤喳。出現(xiàn)下面的信息就代表你前面所做的操作是沒問題的
$ sudo openssl verify-CAfilepki/ca.crt pki/issued/hakase-server.crt$pki/issued/hakase-server.crt:OK
已創(chuàng)建所有服務(wù)器證書密鑰为居。
服務(wù)器私鑰位于“ pki / private / hakase-server.key”。
服務(wù)器證書位于“ pki / issued / hakase-server.crt”杀狡。
創(chuàng)建客戶端密鑰
現(xiàn)在我們需要為客戶端構(gòu)建密鑰蒙畴。 我們將生成名為“ client01”的新客戶端密鑰。
使用以下命令生成“ client01”密鑰
sudo ./easyrsa gen-req client01 nopass
ss8.png
現(xiàn)在,使用我們的CA證書簽署“ client01”密鑰膳凝,如下所示碑隆。
sudo ./easyrsa sign-req client client01
鍵入“yes”以確認(rèn)客戶端證書請(qǐng)求,然后鍵入CA密碼蹬音。
已生成名為“ client01”的客戶端證書上煤,請(qǐng)使用openssl命令驗(yàn)證客戶端證書。
sudo openssl verify-CAfile pki/ca.crt pki/issued/client01.crt
**生成Diffie-Hellman密鑰
此操作將花費(fèi)大量時(shí)間祟绊,具體取決于我們選擇的密鑰長(zhǎng)度和服務(wù)器上的可用熵楼入。 我們將使用在“ vars”文件中定義的長(zhǎng)度鍵。
使用以下命令生成Diffie-Hellman密鑰牧抽。
ss8.png
可選:生成CRL密鑰,本文跳過這一步驟
CRL(證書吊銷列表)密鑰將用于吊銷客戶端密鑰嘉熊。 如果您的VPN服務(wù)器上有多個(gè)客戶端證書,并且想撤消某些密鑰扬舒,則只需使用easy-rsa命令撤消阐肤。
如果要撤消某些密鑰,請(qǐng)運(yùn)行以下命令
./easyrsa revoke xxxx
然后生成CRL密鑰讲坎。
./easyrsa gen-crl
復(fù)制證書文件
已生成所有證書孕惜,現(xiàn)在復(fù)制證書文件和PEM文件。
復(fù)制服務(wù)器密鑰和證書晨炕。
cp pki/ca.crt/etc/openvpn/server/cp pki/issued/hakase-server.crt/etc/openvpn/server/cp pki/private/hakase-server.key/etc/openvpn/server/
復(fù)制client01密鑰和證書衫画。
cp pki/ca.crt/etc/openvpn/client/cp pki/issued/client01.crt/etc/openvpn/client/cp pki/private/client01.key/etc/openvpn/client/
復(fù)制DH和CRL密鑰。
cp pki/dh.pem /etc/openvpn/server/
第4步-配置OpenVPN
在這一步中瓮栗,我們將為openvpn服務(wù)器創(chuàng)建新的配置'server.conf'削罩。轉(zhuǎn)到"/etc/openvpn/"目錄,并使用vim創(chuàng)建新的配置文件"server.conf"
將以下OpenVPN服務(wù)器配置粘貼到此處费奸。
cd /etc/openvpn/vim server.conf
將以下OpenVPN服務(wù)器配置粘貼到此處弥激。
# OpenVPN Port, Protocol and the Tunport 1194proto udpdev tun# OpenVPN Server Certificate - CA, server key and certificateca /etc/openvpn/server/ca.crtcert /etc/openvpn/server/hakase-server.crtkey /etc/openvpn/server/hakase-server.key#DH and CRL keydh /etc/openvpn/server/dh.pem#注意本文沒有跳過了丟消證書的檢測(cè)#crl-verify /etc/openvpn/server/crl.pem# Network Configuration - Internal network# Redirect all Connection through OpenVPN Serverserver 10.10.1.0 255.255.255.0push "redirect-gateway def1"# Using the DNS from https://dns.watchpush "dhcp-option DNS 84.200.69.80"push "dhcp-option DNS 84.200.70.40"#Enable multiple client to connect with same Certificate keyduplicate-cn# TLS Securitycipher AES-256-CBCtls-version-min 1.2tls-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-SHA256auth SHA512auth-nocache# Other Configurationkeepalive 20 60persist-keypersist-tuncomp-lzo yesdaemonuser nobodygroup nobody# OpenVPN Loglog-append /var/log/openvpn.logverb 3
OpenVPN的配置已創(chuàng)建。
步驟5-啟用端口轉(zhuǎn)發(fā)并配置路由Firewalld
在此步驟中愿阐,我們將啟用端口轉(zhuǎn)發(fā)內(nèi)核模塊并為OpenVPN配置路由“防火墻”微服。
ss8.png
通過運(yùn)行以下命令來啟用端口轉(zhuǎn)發(fā)內(nèi)核模塊。
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.confsysctl -p
接下來缨历,使用Firewalld for OpenVPN配置路由以蕴。
將 "openvpn"服務(wù)添加到防火墻列表服務(wù),并將“tun0”接口添加到防火墻信任區(qū)域辛孵。
sudo firewall-cmd--permanent--add-service=openvpnsudo firewall-cmd--permanent--zone=trusted--add-interface=tun0
在防火墻的“受信任”區(qū)域上啟用“ MASQUERADE”舒裤。
sudo firewall-cmd--permanent--zone=trusted--add-masquerade
如果你的網(wǎng)關(guān)是使用iptable,并且iptable默認(rèn)情況下阻止該服務(wù),那么請(qǐng)使用以下配置使openvpn正常運(yùn)行觉吭。 首先腾供,讓我們?cè)趏penvpn端口上進(jìn)行tcp連接。 如果您使用的是udp或其他端口號(hào),請(qǐng)相應(yīng)地更改此行伴鳖。
iptables-AINPUT-i enp3s0-m state--stateNEW-p udp--dport1194-jACCEPT
允許TUN接口連接到OpenVPN服務(wù)器
iptables -A INPUT -i tun+ -j ACCEPT
允許通過其他接口轉(zhuǎn)發(fā)TUN接口連接
iptables -A FORWARD -i tun+ -j ACCEPTiptables -A FORWARD -i tun+ -o enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A FORWARD -i enp3s0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
NAT VPN客戶端流量到Internet节值。 運(yùn)行“ ifconfig”命令時(shí),根據(jù)您的tun0結(jié)果信息更改IP地址掩碼榜聂。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp3s0 -j MASQUERADE
如果您的默認(rèn)iptables OUTPUT的值不是ACCEPT的話搞疗,則還需要以下行:
iptables -A OUTPUT -o tun+ -j ACCEPT
最后記得保存iptables的防火墻配置
sudo iptables-save>/etc/sysconfig/iptables
端口轉(zhuǎn)發(fā)和防火墻路由已完成,現(xiàn)在啟動(dòng)openvpn服務(wù)须肆,并使它能夠在每次系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng)匿乃。
systemctl start openvpn@serversystemctl enable openvpn@server
我們通過netstat -plntu | grep 1194查看服務(wù)器的監(jiān)聽接口
第6步-OpenVPN客戶端設(shè)置
轉(zhuǎn)到“/etc/openvpn/client”目錄,并使用vim創(chuàng)建一個(gè)新的openvpn客戶端配置文件“ client01.ovpn".
cd /etc/openvpn/clientvim client01.ovpn
復(fù)制粘貼以下內(nèi)容到ovpn
clientdev tunproto udp#真實(shí)的ip地址自己填寫remote x.x.x.x 1194ca ca.crtcert client01.crtkey client01.keycipher AES-256-CBCauth SHA512auth-nocachetls-version-min 1.2tls-cipherTLS-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-SHA256resolv-retry infinitecompress lzonobindpersist-keypersist-tunmute-replay-warningsverb 3
保存后退出
現(xiàn)在將“/etc/openvpn/client”目錄壓縮為“ zip”或“ tar.gz”文件豌汇,并使用scp從本地計(jì)算機(jī)下載壓縮文件幢炸。
將“ /etc/openvpn/client”目錄壓縮到“ client01.tar.gz”文件。
cd /etc/openvpn/tar -czvf client01.tar.gz client/*
然后將該客戶端所需的證書和配置文件拷貝到需要鏈接入vpn的客戶端
步驟7-測(cè)試OpenVPN
安裝OpenVPN軟件包拒贱,如果需要GUI配置宛徊,請(qǐng)安裝OpenVPN network-manager。
ss8.png
如果要使用終端外殼進(jìn)行連接逻澳,請(qǐng)運(yùn)行以下OpenVPN命令闸天。
openvpn --config client01.ovpn
作者:鐵甲萬能狗
鏈接:http://www.reibang.com/p/17a56994b74f
來源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)斜做,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處苞氮。