如何在CentOS 8上使用Easy-RSA 3安装OpenVPN服务器和客户端

如何在CentOS 8上使用Easy-RSA 3安装OpenVPN服务器和客户端

OpenVPN是一个开源应用程序,可让您在公共Internet上创建安全的专用网络。 OpenVPN实现了虚拟专用网络(VPN)以创建安全连接。它使用OpenVPN OpenSSL库提供加密,并提供多种身份验证机制,例如基于证书的预共享密钥,用户名/密码身份验证。

本教程将逐步介绍如何在CentOS 8服务器上安装和配置OpenVPN。并实现基于证书的OpenVPN认证。

先决条件

你在做什么

  • 安装OpenVPN和Easy-RSA
  • Easy-RSA 3 Var的配置
  • 建立一个OpenVPN密钥
  • 配置OpenVPN服务器
  • 配置防火墙并启用端口转发
  • 客户端设置
  • 测试中

第1步-安装OpenVPN和Easy-RSA

首先,添加一个EPEL(企业Linux附加软件包)存储库,安装最新的OpenVPN软件包,然后将easy-rsa脚本下载到CentOS 8系统。

使用以下dnf命令安装EPEL存储库。

dnf install epel-release

然后安装最新的OpenVPN软件包2.4.7。

dnf install openvpn

安装完成后,转到“ / etc / openvpn”并使用以下wget命令下载easy-rsa脚本。

cd /etc/openvpn/wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

现在解压缩“ EasyRSA-unix-v3.0.6.tgz”文件,并将目录重命名为“ easy-rsa”。

tar -xf EasyRSA-unix-v3.0.6.tgzmv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

OpenVPN软件包和easy-rsa脚本安装在CentOS 8系统上。

第2步-Easy-RSA 3的配置

在此步骤中,您将创建一个新的“ vars”文件并配置easy-rsa 3。 “ vars”文件包含Easy-RSA 3设置。

转到“ / etc / openvpn / easy-rsa /”目录,并使用vim编辑器创建一个新的vars脚本。

cd /etc/openvpn/easy-rsa/vim vars

在下面粘贴vars easy-rsa 3配置。

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       "[email protected]"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-easyrsa.cnf"set_var EASYRSA_DIGEST          "sha256"

保存并退出。

注意事项:

  • 根据需要更改变量的值。
  • 为了提高安全性,请增加“ EASYRSA_KEY_SIZE”。
  • 更改“ EASYRSA_CA_EXPIRE”和“ EASYRSA_CERT_EXPIRE”。

更改文件许可权以使“ vars”文件可执行。

chmod +x vars

easy-rsa 3的配置完成。

配置Easy-RSA 3

第3步-建立OpenVPN密钥

在此步骤中,您将基于创建的easy-rsa 3’vars’文件构建一个OpenVPN密钥。创建CA密钥,服务器和客户端密钥,DH和CRL PEM文件。

使用“ easyrsa”命令行构建所有这些键。转到“ / etc / openvpn / easy-rsa /”目录。

cd /etc/openvpn/easy-rsa/3/

-初始化并建立CA

在构建服务器和客户端密钥之前,您需要初始化PKI(公共密钥基础结构)目录并构建CA密钥。

启动PKI目录并使用以下命令构建CA密钥:

./easyrsa init-pki./easyrsa build-ca

输入CA密钥密码后,将在“ pki”目录下创建“ ca.crt”和“ ca.key”文件。

建立一个OpenVPN密钥

-构建服务器密钥

接下来,创建服务器密钥。创建一个名为“ hakase-server”的服务器密钥。

使用以下命令创建服务器密钥“ hakase-server”:

./easyrsa gen-req hakase-server nopass

构建服务器密钥

注意事项:

  • nopass =禁用“ hakase-server”密钥密码的选项。

然后使用CA证书签署“ hakase-server”密钥。

./easyrsa sign-req server hakase-server

系统将提示您输入“ CA”密码。输入密码,然后按Enter。然后,在“ pki / issue /”目录下获取“ hakase-server.crt”证书文件。

easyrsa登录要求

使用OpenSSL命令验证证书文件,以确保没有错误。

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

已创建所有服务器证书密钥。服务器的私钥位于“ pki / private / hakase-server.key”中,服务器证书位于“ pki / issued / hakase-server.crt”中。

秘钥

-客户端密钥的构造

接下来,您需要为客户端创建一个密钥。生成一个名为“ client01”的新客户端密钥。

使用以下命令生成“ client01”密钥:

./easyrsa gen-req client01 nopass

建立客户金钥

接下来,使用CA证书对“ client01”密钥进行签名,如下所示:

./easyrsa sign-req client client01

输入“是”以确认客户端证书请求,然后输入CA密码。

easyrsa登录请求客户端client01

已生成名为“ client01”的客户端证书。使用openssl命令检查客户端证书。

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

确保没有错误。

检查CA文件

-Diffie-Hellman密钥创建

为了提高安全性,您需要Diffie-Hellman密钥。然后,它根据在顶部创建的“ vars”配置文件生成“ 2048” DH密钥。

使用以下命令生成Diffie-Hellman密钥:

./easyrsa gen-dh

并生成“ pki”目录中的DH密钥。

构建Diffie-Hellman密钥

-可选:生成CRL密钥

CRL(证书吊销列表)密钥用于吊销客户端密钥。如果您在VPN服务器上有多个客户端证书,并且想要删除某人的密钥,只需使用easy-rsa命令将其撤消即可。

要禁用密钥,请执行以下命令:

./easyrsa revoke someone

然后,生成一个CRL密钥。

./easyrsa gen-crl

CRL PEM文件在“ pki”目录下生成-以下是我的服务器上的示例。

生成CRL密钥

-复制证书文件

已生成所有证书。接下来,复制证书和PEM文件。

复制服务器密钥和证书。

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/

复制client01密钥和证书。

cp pki/ca.crt /etc/openvpn/client/cp pki/issued/client01.crt /etc/openvpn/client/cp pki/private/client01.key /etc/openvpn/client/

复制DH和CRL密钥。

cp pki/dh.pem /etc/openvpn/server/cp pki/crl.pem /etc/openvpn/server/

将所有服务器和客户端证书复制到每个目录。

复制证书文件

第4步-配置OpenVPN

在此步骤中,您将为OpenVPN服务器创建一个新的配置“ server.conf”。

转到“ / etc / openvpn / server /”目录,并使用vim创建一个新的配置文件“ server.conf”。

cd /etc/openvpn/server/vim server.conf

将以下OpenVPN服务器设置粘贴到此处。

# 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.pemcrl-verify /etc/openvpn/server/crl.pem# Network Configuration - Internal network# Redirect all Connection through OpenVPN Serverserver 10.5.0.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 clients to connect with the 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-tuncompress lz4daemonuser nobodygroup nobody# OpenVPN Loglog-append /var/log/openvpn.logverb 3

保存并退出。

已创建OpenVPN服务器配置。

第5步-在防火墙中启用端口转发并配置路由

在此步骤中,您将启用端口转发内核模块并配置OpenVPN路由“防火墙”。

运行以下命令以启用端口转发内核模块:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.confsysctl -p

接下来,使用OpenVPN的Firewalld配置路由。

在Firewalld中启用端口转发并配置路由

将OpenVPN服务添加到“公共”和“可信”防火墙区域。

firewall-cmd --permanent --add-service=openvpnfirewall-cmd --permanent --zone=trusted --add-service=openvpn

然后将“ tun0”添加到“可信”区域。

firewall-cmd --permanent --zone=trusted --add-interface=tun0

现在在默认的“公共”区域firewalld中启用“ MASQUERADE”。

firewall-cmd --permanent --add-masquerade

从OpenVPN的内部IP地址“ 10.5.0.0/24”到外部IP地址“ SERVERIP”启用NAT。

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

并重新加载firewalld。

firewall-cmd --reload

重新加载防火墙

完成端口转发和防火墙路由配置,启动OpenVPN服务,并在每次系统启动时自动启动它。

systemctl start [email protected]systemctl enable [email protected]

启动openvpn

然后使用以下命令检查OpenVPN服务:

netstat -plntusystemctl status [email protected]

您会得到以下结果:

OpenVPN成功启动

结果,OpenVPN服务在默认端口“ 1194”上的UDP协议上运行。

第6步-设置OpenVPN客户端

转到“ / etc / openvpn / client”目录,并使用vim创建一个新的openvpn客户端配置文件“ client01.ovpn”。

cd /etc/openvpn/clientvim client01.ovpn

将以下OpenVPN客户端设置粘贴到此处。

clientdev tunproto udpremote xxx.xxx.xxx.xxx 1194ca ca.crtcert client01.crtkey client01.keycipher AES-256-CBCauth SHA512auth-nocachetls-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-SHA256resolv-retry infinitecompress lz4nobindpersist-keypersist-tunmute-replay-warningsverb 3

保存并退出。

现在,将“ / etc / openvpn / client”目录压缩为“ zip”或“ tar.gz”文件,然后使用SCP从本地计算机下载压缩文件。

将“ / etc / openvpn / client”目录压缩到“ client01.tar.gz”文件中。

cd /etc/openvpn/tar -czvf client01.tar.gz client/*

OpenVPN客户端设置

现在,您可以使用FTP服务器或scp命令下载压缩的OpenVPN文件,如下所示:

scp [email protected]:/etc/openvpn/client01.tar.gz .

第7步-连接到OpenVPN

在客户端上测试。

-对于Linux

安装OpenVPN软件包。如果需要GUI设置,请安装OpenVPN Network Manager。

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

要使用终端外壳进行连接,请执行以下OpenVPN命令。

openvpn --config client01.ovpn

连接到OpenVPN之后,打开一个新的终端选项卡,并使用curl命令验证连接。

curl ifconfig.io

然后,获取OpenVPN服务器的IP地址。

-对于Mac OS

资料下载 隧道砖 并安装它。

提取“ client01.tar.gz”文件,并将“ client”目录重命名为“ client01.tblk”。

tar -xzvf client01.tar.gzmv client client01.tblk

双击“ client01.tblk”,Tunnelblick将自动检测并导入您的OpenVPN配置。

然后通过顶部栏上的Tunnelblick连接。

-对于Windows

资料下载 适用于Windows的OpenVPN客户端 导入配置。

参考资料

Sidebar