CentOS7+OpenVPN2.4+EasyRsa3的安装和配置
设备环境
设备 | IP | 网卡 | 系统 |
---|---|---|---|
外网主机 | 192.168.56.30 | NAT | Windows |
虚拟机OpenVPN-Server | 192.168.56.29 172.16.30.101 | ens33 ens36 | CentOS7 |
虚拟机内网设备 | 172.16.30.102 | ens36 | CentOS7 |
预先了解
OpenVPN
OpenVPN是一种开源虚拟专用网络(VPN)解决方案,通过在公共网络上创建一个安全的、点到点的连接来实现远程访问和私人通信。其原理如下:
建立连接:客户端向服务器发送加密请求,并建立起可靠的控制信道。
加密通信:一旦建立了控制信道,双方将使用预共享密钥或数字证书来协商数据通道的加密参数。OpenVPN支持多种加密和身份验证方法。
传输数据:一旦加密参数建立,数据被分割成小块并通过虚拟隧道传输,这些数据经过加密和解密处理以保护其机密性和完整性。
断开连接:当会话结束时,双方都可以选择关闭连接,以确保数据没有泄露。
总体而言,OpenVPN利用加密技术在公共网络上建立了一个安全的、点对点的连接,使得远程用户可以访问私有网络中的资源,同时也确保了数据传输的机密性和完整性。
PKI
在 OpenVPN 中,PKI(Public Key Infrastructure,公钥基础结构)是一种用于管理和维护数字证书的框架。PKI 可以用于生成、颁发、撤销和更新数字证书。数字证书是一种加密机制,用于验证通信双方的身份并保护通信数据的安全性。
OpenVPN PKI 是一个集成了 X.509 证书签名机构的工具集合。它允许管理员创建和管理数字证书,并通过这些数字证书对 VPN 隧道进行身份验证和加密。PKI 工具包括以下组件:
- easy-rsa:一个 OpenSSL 管理工具,用于生成证书、密钥和其他相关文件。
- pkitool:一个脚本工具,用于简化证书生成和管理过程。
- Certificate Authority(CA):一组根证书和中间证书,用于签署其他证书。
- Revocation List(CRL):存储吊销证书列表的文件,防止已撤销的证书被使用。
使用 OpenVPN PKI 工具,管理员可以创建服务器证书、客户端证书和 CA 证书,并将其用于 OpenVPN 的身份验证和加密。管理员还可以轻松地撤销或更新证书,以及生成 CRL 并将其分发给需要访问 VPN 的用户。
ca.crt
ca.crt是OpenVPN中的一个证书文件,用于验证服务器和客户端之间的身份。这个文件包含了一个数字证书颁发机构(CA)的公钥,以及其他相关信息。在OpenVPN中,这个证书被用来验证服务器的身份,以便客户端能够与正确的服务器进行连接,并且确保连接是安全的。
dh.pem
在OpenVPN中,dh.pem文件是一个Diffie-Hellman密钥交换参数文件。它包含了一组预定义的数学参数,用于协商共享密钥。在OpenVPN中,这些参数用于生成临时密钥,以便在建立安全连接时进行加密和身份验证。DH密钥交换可以增强数据传输的安全性,因为即使攻击者能够截获通信,他们也无法破解密钥。
每个客户端和服务端都必须具有相同的dh.pem文件以确保密钥交换的正确性。在OpenVPN配置中,dh.pem文件路径通常通过配置项dh
指定。如果未指定该配置项,则OpenVPN将使用默认的512位DH参数。然而,建议使用更长的DH参数,例如2048位或4096位,以提高安全性。
ta.key
在OpenVPN中,ta.key文件是一个预共享密钥文件,用于增强TLS(Transport Layer Security)连接的安全性。TLS是一种加密协议,用于在客户端和服务器之间建立安全连接,以确保数据传输的机密性和完整性。预共享密钥是一个由OpenVPN管理员创建的随机密钥,用于加密TLS通信。TA表示TLS-Auth,在OpenVPN中,它可以用于提供额外的身份验证和防抵赖保护。
在OpenVPN配置中,ta.key文件路径通常通过tls-auth
指令指定。此指令允许OpenVPN服务器和客户端使用相同的预共享密钥进行TLS认证。当OpenVPN客户端尝试连接到服务器时,它将使用ta.key文件的内容与服务器进行身份验证。如果没有正确的ta.key文件,则无法建立连接。
使用ta.key文件可以增强OpenVPN连接的安全性,并提供防范重放攻击、MITM(中间人)攻击和其他类似攻击的保护。建议在OpenVPN中启用TLS-Auth并使用ta.key文件来加强连接的安全性。
虚拟机OpenVPN-Server安装OpenVPN和EasyRSA
yum install epel-release -y |
生成各种文件
# 初始化PKI (Public Key Infrastructure) |
配置服务端
cd /etc/openvpn |
放行 OpenVPN 入网流量与开启 IP 伪装
firewall-cmd --permanent --add-service openvpn |
检查是否开启流量转发
sysctl -a | grep net.ipv4.ip_forward |
确保net.ipv4.ip_forward 等于 1,如果不是,则需要修改一下echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
配置客户端
下载安装 OpenVPN-Windowsmkdir /etc/openvpn/client
cp pki/ca.crt pki/issued/openvpn-client.crt pki/private/openvpn-client.key pki/ta.key /etc/openvpn/client
mv /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /etc/openvpn/client/client.ovpn
cd /etc/openvpn/client
# 该目录下一共五个文件, ca.crt openvpn-client.crt openvpn-client.key ta.key client.ovpn
# 编辑client.ovpn
vi client.ovpn
# 192.168.56.29 为服务端IP
# 42行,remote 192.168.56.29 1194
将 /etc/openvpn/client
下的所有文件拷贝到Windows主机的 ~/OpenVPN/config/
下
使用管理员权限打开OpenVPN,然后双击导入~/OpenVPN/config/client.ovpn
,然后连接。
尝试ping服务端(172.16.30.101)和内网设备(172.16.30.102)