赞
踩
本期教大家如何使用OpenVPN来实现异地接入公司内网访问办公OA系统,解决异地办公的安全问题。主要应用于中小型企业的异地办公,异地组网等需求,大家可以以此作为参考。在这里我将使用云服务器来给大家做演示。
OpenVPN是一种开源的虚拟私人网络(VPN)软件,用于建立安全的加密通道,以在公共网络上(如互联网)安全地传输数据。它提供了一种安全的远程访问解决方案,允许用户在不同地点之间安全地传输数据,同时保护数据的机密性和完整性。
OpenVPN最初由James Yonan于2001年发起开发,并得到全球开源社区的贡献和支持。
OpenVPN的演变可以大致分为以下几个阶段:
1. 早期版本: OpenVPN最初采用自定义的安全协议,只支持基于SSL/TLS协议的VPN连接。
2. SSL/TLS协议支持: 随着时间的推移,OpenVPN开始支持基于SSL/TLS协议的VPN连接,这使得它成为了一种更加安全和可靠的VPN解决方案。
3. OpenVPN 2.x版本:这是OpenVPN的主要版本,引入了许多新特性和改进,包括IPv6支持、动态密钥交换、多平台支持等。
4. OpenVPN 3.x版本:这是一个全新的重写版本,旨在提供更高的性能和更多的功能。它引入了新的架构和API,支持更多的操作系统和平台。
OpenVPN的工作方式基于客户端-服务器模型,通常包括以下几个步骤:
1.认证和密钥交换:客户端和服务器之间进行认证,并交换密钥以建立安全连接。
2. 隧道建立: 客户端和服务器通过TLS/SSL协议建立安全通道,用于加密和保护数据传输。
3. 数据传输:客户端和服务器之间传输的数据通过已建立的安全通道进行加密和解密。
4. 连接维护:客户端和服务器定期发送心跳包以保持连接,并处理连接中断或异常情况。
主要应用场景包括:
远程访问:允许用户远程访问公司网络资源,安全地传输数据。
站点到站点连接:用于连接不同地点的局域网,实现跨地域的网络通信。
个人出差需要访问公司只有内网的服务器
公司不同地区之间建立服务通信(IDC与IDC之间)
跨平台连接:支持不同操作系统和设备之间的安全连接,包括Windows、Linux、macOS、iOS和Android等。
OpenVPN是一种灵活、安全、可靠的VPN解决方案,适用于多种应用场景,为企业和用户提供了安全的网络通信和访问体验。
本次我选择的服务器是来自阿里云计算的突发性ECS-地域为华南-深圳,这样延迟低点。
一定要有个公网IP,两个网卡,实例可以选择动态流量计费,这样,服务器的选用就完成了接下来就使用SSH工具连接云服务器CentOS7系统,进行安装配置OpenVPN server。
SSH连接云服务器,首先我们先使用easy-rsa
制作openVPN证书
easy-rsa
软件包- mkdir /data/tools -p
- wget -P /data/tools http://down.i4t.com/easy-rsa.zip
- unzip -d /usr/local /data/tools/easy-rsa.zip
如果CentOS提示没有unzip这个软件,可以运行以下命令解决
yum install unzip
在开始制作CA证书之前,我们还需要编辑vars文件,修改如下相关选项。
- cd /usr/local/easy-rsa-old-master/easy-rsa/2.0/
-
- vim vars
- export KEY_COUNTRY="cn"
- export KEY_PROVINCE="BJ"
- export KEY_CITY="BJ"
- export KEY_ORG="abcdocker"
- export KEY_EMAIL="cyh@i4t.com"
- export KEY_CN=abc
- export KEY_NAME=abc
- export KEY_OU=abc
-
- #行数大约67行开始,主要是修改默认的注册信息,比如注册公司、公司名称、部门、国家城市等
注意:以上内容,我们也可以使用系统默认的,也就是说不进行修改也是可以使用的。
然后使用使环境变量生效
- #初始化环境边看
- source vars
- ./clean-all
-
- #注意:执行clean-all命令会在当前目录下创建一个名词为keys的目录
接下来开始正式制作CA证书,命令如下
- ./build-ca
-
- # 生成根证书ca.crt和根密钥ca.key
- #因为在vars中填写了证书的基本信息,所以这里一路回车即可
这时我们可以查看keys目录,已经帮我们生成ca.crt和ca.key两个文件,其中ca.crt就是我们的证书文件
ls keys
为服务端生成证书和密钥
- #一直回车,2个Y
-
- ./build-key-server server
这里的server就是我们server端的证书
查看新生成的证书
ls keys
这里我们已经生成了server.crt、server.key、server.csr三个文件,其中server.crt和server.key两个文件是我们需要使用的。
这里我们创建2个用户,分别为client1和client2
- #每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
- #为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
- ./build-key client1
- ./build-key client2
每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只可以一个客户端连接(可以修改配置文件)
现在为服务器生成加密交换时的Diffie-Hellman文件
- ./build-dh
- # 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
ll keys
包含了一个test用户和abc用户的证书,其中只有.crt和.key文件是我们需要使用的。
安装vpn的方法有2种,一种是使用yum安装,另外一种是编译安装。这两个我们选择一个就可以。我选择编译安装,yum安装也附在了编译安装后面。
一条条执行即可。
- curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- yum makecache
- yum install -y lzo lzo-devel openssl openssl-devel pam pam-devel net-tools git lz4-devel
执行结束
- wget -P /data/tools http://down.i4t.com/openvpn-2.4.7.tar.gz
- cd /data/tools
一样,一条条执行即可
- tar zxf openvpn-2.4.7.tar.gz
- cd openvpn-2.4.7
- ./configure --prefix=/usr/local/openvpn-2.4.7
- make
- make install
ln -s /usr/local/openvpn-2.4.7 /usr/local/openvpn
完成。
OpenVPN需要安装EPEL
- curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- yum clean all && yum makecache
yum install -y openvpn
我们需要创建openVPN文件目录和证书目录
- # openVPN配置文件目录,yum安装默认存在
- mkdir /etc/openvpn
-
- #openvpn证书目录
- mkdir /etc/openvpn/keys
tls-auth key
生成tls-auth key
并将其拷贝到证书目录中(防DDos攻击、UDP淹没等恶意攻击)
- #编译安装执行此句
- /usr/local/openvpn/sbin/openvpn --genkey --secret ta.key
-
- # yum安装执行此句
- openvpn --genkey --secret ta.key
-
- #将本地的ta.key移动到openVPN证书目录
- mv ./ta.key /etc/openvpn/keys/
将我们上面生成的CA
证书和服务端证书拷贝到证书目录中
- cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/{server.crt,server.key,ca.crt,dh2048.pem} /etc/openvpn/keys/
-
- [root@k8s-01 ~]# ll /etc/openvpn/keys/
- total 24
- -rw-r--r-- 1 root root 2342 Feb 3 12:48 ca.crt
- -rw-r--r-- 1 root root 424 Feb 3 12:48 dh2048.pem
- -rw-r--r-- 1 root root 8089 Feb 3 12:48 server.crt
- -rw------- 1 root root 3272 Feb 3 12:48 server.key
- -rw------- 1 root root 636 Feb 3 12:47 ta.key
-
-
- #abc和test为我们client端用户的证书
- # 编译安装
- cp /data/tools/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/
-
- # yum安装
- cp /usr/share/doc/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/
- 示例:
-
- port 1194 #openVPN端口
- proto tcp #tcp连接
- dev tun #生成tun0虚拟网卡
-
- ca keys/ca.crt #相关证书配置路径(可以修改为全路径/etc/openvpn/keys)
- cert keys/server.crt
- key keys/server.key # This file should be kept secret
- dh keys/dh2048.pem
-
- server 10.4.82.0 255.255.255.0 #默认虚拟局域网网段,不要和实际的局域网冲突就可以
- ifconfig-pool-persist ipp.txt
-
- push "route 10.4.82.0 255.255.255.0" #可以通过iptables进行路由的转发
- client-to-client #如果客户端都是用一个证书和密钥连接VPN,需要打开这个选项
- duplicate-cn
- keepalive 10 120
- tls-auth keys/ta.key 0 # This file is secret
- comp-lzo
-
- persist-key
- persist-tun
-
- status openvpn-status.log #状态日志路径
- log-append openvpn.log #运行日志
- verb 3 #调试信息级别
-
-
-
- #如果需要接入ldap,需要在server.conf下添加如下2行
- plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf cn=%u"
- client-cert-not-required
-
- #如何环境和我相同,可以直接cp我的配置文件
执行命令
cat /etc/openvpn/server.conf
- echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
- sysctl -p
如果有iptables可以开启iptables策略
- iptables -P FORWARD ACCEPT
- iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
- iptables -t nat -A POSTROUTING -s 10.4.82.0/24 -j MASQUERADE
- cd /etc/openvpn/
- /usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf
- $ netstat -lntup|grep 1194
- tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 48091/openvpn
无论我们是在Windows还是Linux OS上Client端的配置,都需要将Client证书、CA证书以及Client配置文件下载下来
- cp /data/tools/openvpn-2.4.7/sample/sample-config-files/client.conf /root/
-
- #修改如下,并将client.conf修改为client.ovpn
- $ cat /root/client.conf
- client
- dev tun
- proto tcp
- remote 192.168.0.10 1194 #openvpn服务器的外网IP和端口(可以写多个做到高可用)
- resolv-retry infinite
- nobind
- persist-key
- persist-tun
- ca ca.crt
- cert client1.crt #用户的证书
- key client1.key
-
- tls-auth ta.key 1
- cipher AES-256-CBC
- comp-lzo
- verb 3
-
-
- #重点是修改remote 地址,这里的地址为server
- cert key,我们这里使用用户的证书,所以证书也应当修改为client1.crt和client1.key
- tls-auth 因为使用加密协议,所以ta.key也需要下载下来
- [root@vpn ~]# mv client.conf client.ovpn
- [root@vpn ~]# sz client.ovpn
-
- #同时还需要导出几个证书
- mv client.conf client.ovpn
- sz /root/client.ovpn
- sz /etc/openvpn/keys/ca.crt
- sz /etc/openvpn/keys/ta.key
- sz /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/client1.crt
- sz /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/client1.key
yum install lrzsz
以后我们如果想添加用户只需要到cd /usr/local/easy-rsa-old-master/easy-rsa/2.0
目录下执行./build-key 用户名
,在将keys目录下生成的用户名.crt和key导出,修改一下client.ovpn的用户key名称即可
http://down.i4t.com/openvpn-install-2.4.7-I606-Win10.exe
http://down.i4t.com/openvpn-install-2.4.7-I606-Win7.exe
打开浏览器即可下载
这里提示我们不用管,一会替换即可。
安装完成,开始替换证书
客户端需要证书如下
接下来我们需要替换一下证书
点击桌面的logo,右击属性,打开文件位置。
点击上方OpenVPN回退选择目录
选择config目录
将config目录下文件全部删除
将导出的5个证书复制过去。
其中client1.*为client1用户的证书
现在我们进行启动openvpn客户端,进行连接。
双击桌面OpenVPN
右击图标,选择连接
这里可以看到已经连接成功
这个操作过程非常的复杂,但是能够保障企业的网络传输更加安全,所以还是有必要的。下期给大家演示Windows server部署L2TP/PPTP VPN的服务部署。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。