种地 发表于 2024-8-3 02:50:28

CentOS搭建OpenVPN实现异地访问内网OA



前言

        本期教大家如何利用OpenVPN来实现异地接入公司内网访问办公OA系统,办理异地办公的安全问题。主要应用于中小型企业的异地办公,异地组网等需求,大家可以以此作为参考。在这里我将利用云服务器来给大家做演示。
OpenVPN

         OpenVPN是一种开源的假造私家网络(VPN)软件,用于建立安全的加密通道,以在公共网络上(如互联网)安全地传输数据。它提供了一种安全的远程访问办理方案,答应用户在不同地点之间安全地传输数据,同时掩护数据的秘密性和完整性。
https://img-blog.csdnimg.cn/direct/064a4342b84f47ddaaccd6b7de6d3551.png
开发

          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-地域为华南-深圳,如许延长低点。
https://img-blog.csdnimg.cn/direct/4a6016b917bd4a22b5854d4cf5577305.png
       一定要有个公网IP,两个网卡,实例可以选择动态流量计费,如许,服务器的选用就完成了接下来就利用SSH工具连接云服务器CentOS7系统,进行安装配置OpenVPN server。
部署

Open VPN 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这个软件,可以运行以下命令办理
无unzip办理

yum install unzip 编辑vars文件

在开始制作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行开始,主要是修改默认的注册信息,比如注册公司、公司名称、部门、国家城市等 https://img-blog.csdnimg.cn/direct/be4edc133b004c70a31d47bfa08ecd44.png
注意:以上内容,我们也可以利用系统默认的,也就是说不进行修改也是可以利用的。
然后利用使环境变量见效
#初始化环境边看
source vars
./clean-all

#注意:执行clean-all命令会在当前目录下创建一个名词为keys的目录 https://img-blog.csdnimg.cn/direct/35247b8c6a2c4bc7a46492441c5a978e.png
正式制作CA证书

接下来开始正式制作CA证书,命令如下
./build-ca

# 生成根证书ca.crt和根密钥ca.key
#因为在vars中填写了证书的基本信息,所以这里一路回车即可 https://img-blog.csdnimg.cn/direct/e8777d8c39074db4ab0870d5d2d5dea8.png
        这时我们可以查看keys目录,已经帮我们生成ca.crt和ca.key两个文件,其中ca.crt就是我们的证书文件
ls keys
https://img-blog.csdnimg.cn/direct/fc6960bdc35d4da48d8f61d0e6a8fef0.png
制作Server端证书

为服务端生成证书和密钥
#一直回车,2个Y

./build-key-server server
https://img-blog.csdnimg.cn/direct/f7e7c396af93418da2642d3ba874b27a.png
这里的server就是我们server端的证书 
生成的证书

查看新生成的证书
ls keys
https://img-blog.csdnimg.cn/direct/b594129131cd49e2863893647fe4d504.png
       这里我们已经生成了server.crt、server.key、server.csr三个文件,其中server.crt和server.key两个文件是我们必要利用的。
制作Client端证书

这里我们创建2个用户,分别为client1和client2
#每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
#为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key client1
./build-key client2 client1

https://img-blog.csdnimg.cn/direct/8781cf459c5c400ea4c17aa8d13ec4a6.png
client2

https://img-blog.csdnimg.cn/direct/b7e167ff5aed4768b4ffd22a28cc2b8f.png
       每一个登岸的VPN客户端必要有一个证书,每个证书在同一时刻只可以一个客户端连接(可以修改配置文件)
如今为服务器生成加密互换时的Diffie-Hellman文件
./build-dh
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它) https://img-blog.csdnimg.cn/direct/0b3bd6aa6c5647b1bfd7b468b9373e86.png
证书生成完毕

ll keys
https://img-blog.csdnimg.cn/direct/e366a6e3c61f4976bb3ba7664f18011a.png
包罗了一个test用户和abc用户的证书,其中只有.crt和.key文件是我们必要利用的。
安装OpenVPN

       安装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  执行竣事
https://img-blog.csdnimg.cn/direct/f1d91383d6ec41edb50f8d7256844eb8.png
下载openVPN软件包

wget -P /data/tools http://down.i4t.com/openvpn-2.4.7.tar.gz
cd /data/tools https://img-blog.csdnimg.cn/direct/f176e26b26a645d0a43210af6cee009f.png
安装openVPN

一样,一条条执行即可
tar zxf openvpn-2.4.7.tar.gz
cd openvpn-2.4.7
./configure --prefix=/usr/local/openvpn-2.4.7
make
make install https://img-blog.csdnimg.cn/direct/e60bb9b6d76040f69b5039d2dbf19a99.png
创建软连接

ln -s /usr/local/openvpn-2.4.7 /usr/local/openvpn https://img-blog.csdnimg.cn/direct/e9ad58f8c0f5447bb630aa7cf1ddaeeb.png
完成。
yum安装

OpenVPN必要安装EPEL
安装EPEL

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache yum 安装openVPN

yum install -y openvpn 配置OpenVPN服务端

openVPN文件目录和证书目录

我们必要创建openVPN文件目录和证书目录
# openVPN配置文件目录,yum安装默认存在
mkdir /etc/openvpn

#openvpn证书目录
mkdir /etc/openvpn/keys https://img-blog.csdnimg.cn/direct/de0801aee31f49aca0f945f6bccff6cb.png
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/ https://img-blog.csdnimg.cn/direct/47629c770e674b65ab952ab84dabeedf.png
 拷贝到证书目录中

将我们上面生成的CA证书和服务端证书拷贝到证书目录中
cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/{server.crt,server.key,ca.crt,dh2048.pem} /etc/openvpn/keys/

# ll /etc/openvpn/keys/
total 24
-rw-r--r-- 1 root root 2342 Feb3 12:48 ca.crt
-rw-r--r-- 1 root root424 Feb3 12:48 dh2048.pem
-rw-r--r-- 1 root root 8089 Feb3 12:48 server.crt
-rw------- 1 root root 3272 Feb3 12:48 server.key
-rw------- 1 root root636 Feb3 12:47 ta.key


#abc和test为我们client端用户的证书 https://img-blog.csdnimg.cn/direct/2507c4de08e84e7c98b5d8f05222213e.png
https://img-blog.csdnimg.cn/direct/7a106eeac6ac42bf9b41197811b9f1fe.png
拷贝OpenVPN配置文件

# 编译安装
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/ https://img-blog.csdnimg.cn/direct/962017eed29646a0bd16b56ebc9d5287.png
配置服务端配置文件

示例:

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-appendopenvpn.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 https://img-blog.csdnimg.cn/direct/1569dec2eadb47b1895a51c8de68d21a.png
开启iptables策略(有的情况)

假如有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 https://img-blog.csdnimg.cn/direct/9d46ee1c3a02468fb90e0f830ca05a70.png
启动openvpn服务

cd /etc/openvpn/
/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf https://img-blog.csdnimg.cn/direct/530cf6d08315447595177774487e1e7b.png
检查服务

$ 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配置文件下载下来
配置client.conf

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也需要下载下来 https://img-blog.csdnimg.cn/direct/1382c3ff182f41f08bedfbf0171b7581.png
修改后缀并导出

# mv client.conf client.ovpn
# 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 https://img-blog.csdnimg.cn/direct/498f882c34584891bbcc0e0fb852399d.png

SZ报错办理

yum install lrzsz 添加用户

以后我们假如想添加用户只必要到cd /usr/local/easy-rsa-old-master/easy-rsa/2.0目录下执行./build-key 用户名,在将keys目录下生成的用户名.crt和key导出,修改一下client.ovpn的用户key名称即可
测试

Windows


客户端下载

http://down.i4t.com/openvpn-install-2.4.7-I606-Win10.exe
http://down.i4t.com/openvpn-install-2.4.7-I606-Win7.exe
打开浏览器即可下载
https://img-blog.csdnimg.cn/direct/907426679f7c415cb1b8fa1e17a127a8.png
https://img-blog.csdnimg.cn/direct/af89759456d24c13a766fc25c2ddc15e.png
这里提示我们不消管,一会替换即可。
https://img-blog.csdnimg.cn/direct/ebe88187b19646a1b505936073cd7850.png
安装完成,开始替换证书
所需证书-5

客户端必要证书如下
https://img-blog.csdnimg.cn/direct/dc11de88760b4e3b8dbb1d55c8e726da.png
证书替换

接下来我们必要替换一下证书
点击桌面的logo,右击属性,打开文件位置。
https://img-blog.csdnimg.cn/direct/2a215844a48240b3999cc2fb824499cf.png
https://img-blog.csdnimg.cn/direct/8ba04251c6b749d391d5d3586ef4de03.png
点击上方OpenVPN回退选择目录
https://img-blog.csdnimg.cn/direct/aa36ea37ca444a919889a98eb302d84e.png
选择config目录
https://img-blog.csdnimg.cn/direct/110f849fa2d34eeab6d3a47101488317.png
将config目录下文件全部删除
https://img-blog.csdnimg.cn/direct/bbe3e32841d240889214dac37203c77d.png
将导出的5个证书复制已往。
https://img-blog.csdnimg.cn/direct/0f0db94060764574bf79f7dacc19f2ce.png
其中client1.*为client1用户的证书
启动客户端

如今我们进行启动openvpn客户端,进行连接。
双击桌面OpenVPN
右击图标,选择连接
https://img-blog.csdnimg.cn/direct/f98a3be78fe54c759f71f3e7c33038af.png
这里可以看到已经连接成功
https://img-blog.csdnimg.cn/direct/b193a8cd82b44a3cad712276f548bd9a.png
文末

      这个操作过程非常的复杂,但是可以大概保障企业的网络传输更加安全,所以照旧有必要的。下期给大家演示Windows server部署L2TP/PPTP VPN的服务部署。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: CentOS搭建OpenVPN实现异地访问内网OA