虚拟专用网络是用于为网络间连接提供保密性和安全性的技术解决方案。 最着名的案例包括连接到远程服务器的人,其流量通过公共或不安全的网络(例如因特网)。
说明以下情况:
OpenVPN网络图
在这篇文章中,我们将解释如何使用OpenVPN的 ,使用OpenSSL库的加密,认证和认证功能强大,高度灵活的隧道应用程序建立一个VPN服务器的RHEL / CentOS 7盒。 为了简单起见,我们将仅考虑OpenVPN服务器充当客户端的安全因特网网关的情况。
对于这种设置,我们已经使用了三台机器,第一个充当OpenVPN服务器和另外两个(Linux和Windows)作为一个客户端连接到远程OpenVPN服务器。
注 :相同的指令也适用于RHEL / CentOS 6的和Fedora系统..
安装OpenVPN服务器
要在RHEL / CentOS 7服务器安装OpenVPN,你必须首先启用EPEL软件库 ,然后安装包, 方便-RSA一起-主要用于密钥管理,也为构建Web证书使用了一个小RSA密钥管理软件包。
# yum update && yum install epel-release # yum install openvpn easy-rsa
安装完成后,转到示例配置文件目录:
# cd /usr/share/doc/openvpn-*/sample/sample-config-files/
并复制server.conf文件到/ etc / openvpn下 :
# cp server.conf /etc/openvpn
现在我们准备开始配置服务器。
生成密钥和证书
易于RSA包提供了几个脚本实用工具,位于内/usr/share/easy-rsa/2.0安装后,生成密钥和证书。 对于我们的方便,我们要复制这些文件到/ etc / OpenVPN的/ RSA(你需要首先创建这个目录)。 如果提示是否覆盖现有文件输入y:
# mkdir /etc/openvpn/rsa # cp –rf /usr/share/easy-rsa/2.0/* /etc/openvpn/rsa
生成OpenVPN密钥和证书
接下来,我们将使用在/ etc / OpenVPN的/ RSA参数/瓦尔来表示对我们的密钥和证书的值。 根据需要更改值(字段不言自明):
export KEY_SIZE=2048 export CA_EXPIRE=365 export KEY_EXPIRE=365 export KEY_COUNTRY=AR export KEY_PROVINCE=SL export KEY_CITY="VillaMercedes" export KEY_ORG="youcl.com" export KEY_EMAIL="me@me.com" export KEY_NAME="GabrielCanepa"
并将源文件导出变量及其值到当前环境(在下一步中将需要它们)。 您将看到一条消息,通知您清除所有脚本的目的(也出现在同一目录中):
# source ./vars
导出密钥和证书
现在,按照指定的顺序从keys目录运行以下脚本。
# ./clean-all
构建-CA脚本将创建在/ etc / OpenVPN的/ RSA /密钥的证书颁发机构 (证书+键)。 按Enter键接受默认值:
./build-ca
OpenVPN证书颁发机构密钥
接下来,我们将为服务器本身创建密钥和证书。 和以前一样,接受默认值,然后按Y确认证书的签字:
# ./build-key-server server
创建服务器的密钥和证书
接下来,生成用于信息交流,以补充对RSA 的Diffie-Hellman文件(这将需要相当长的一段时间)。 这将创建一个名为dh2048.pem内的/ etc / OpenVPN的/ RSA /密钥文件中 :
./build-dh
最后,为每个将使用VPN服务器(其他城市的客户到您选择的名称)客户端单独的证书文件:
# ./build-key client
上述步骤将创建一个客户端证书和密钥 。 按照与之前相同的步骤完成此过程。 稍后在本教程中,我们将这些文件下载到客户端,将使用它们连接到VPN服务器。
配置OpenVPN服务器
现在,让我们深入到/etc/openvpn/server.conf:
1.指定Diffie-Hellman参数的长度。 不要使用低于2048的值,如果你不想让自己暴露在安全威胁:
dh /etc/openvpn/rsa/keys/dh2048.pem
2.所有IP流量(如网页浏览和和DNS查询 )应该去通过VPN。 确保以下行已取消注释:
push "redirect-gateway def1 bypass-dhcp"
3.#2的结果,你需要指定将用于解析名称至少两个DNS服务器。 默认设置会被通过opendns.org提供,您可以使用它们或谷歌的(8.8.8.8和8.8.4.4):
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
4.最后,作为一项安全措施,我们会确保OpenVPN的运行与不断变化的用户和组为nobody最小特权:
user nobody group nobody
我们还需要允许VPN流量通过firewalld并启用伪装:
# firewall-cmd --permanent --add-service=openvpn # firewall-cmd --add-service=openvpn # firewall-cmd --permanent --add-masquerade # firewall-cmd --add-masquerade
并复制证书和密钥文件到/ etc / OpenVPN的 (下面的命令假定你当前的工作目录是/ etc / OpenVPN的/ RSA /键 ):
# cp ca.crt server.crt server.key /../..
然后启用服务:
# systemctl -f enable openvpn@server # systemctl start openvpn@server
在这一点上,最好检查服务的状态。
# systemctl -l status openvpn@server
如果启动失败,
# journalctl --xn
将提供必要的调试信息以解决任何问题。