Ubuntu 搭建OpenVPN Server防护服务器安全
前言
服务器安全是网络维护人员的重要工作,前面通过fail2ban添加了一套安全机制Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog,这里再来个vpn机制防护。
VPN简介
VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。

环境
- 1台Ubuntu服务器用来搭建OpenVPN Server服务
- 一台本地计算机用来安全OpenVPN 客户端
- 确保两台机器能网络互通(ping/或者端口telnet通)
搭建OpenVPN Server
安装OpenVPN 和Easy-RSA 软件
sudo apt update
sudo apt install openvpn easy-rsa

openvpn安装完毕后,查看openvpn的版本:
openvpn --version

为啥安装easy-rsa,看名字就懂,为了更容易的生产OpenVPN需要的各种密钥。
使用Easy-RSA软件制作相关证书
OpenVPN 的证书分为三部分:CA证书、Server端证书、Client端证书。下面我们通过easy-rsa分别对其进行制作。
制作CA证书
进入 /usr/share/easy-rsa 目录,将vars.example 拷贝一份
cd /usr/share/easy-rsa
sudo cp vars.example vars

然后编辑 vars 文件
sudo vi vars
进入后按键盘的PageDown按键翻页或者直接按方向键↓,找到下图内容

这个其实就是证书的一些信息,按自己修改就行,这里案例修改下面部分的内容

移动到最后一行,添加一个变量KEY_NAME="server"

修改后:wq保存退出
对于不同版本的easy-rsa,使用方法可能不一样,具体可以参考安装文档的描述
cat /usr/share/doc/easy-rsa/README.Debian

重点:
# ./easyrsa init-pki
# ./easyrsa build-ca nopass
# ./easyrsa --subject-alt-name="DNS:www.example.net,DNS:secure.example.net" build-server-full alttest nopass
执行命令
sudo ./easyrsa init-pki

会发现多创建了个pki目录出来
然后再执行第二条命令
sudo ./easyrsa build-ca nopass

至此CA端证书制作好了
制作server服务端证书
然后用以下命令制作Server端证书(注意改命令中的server要换成前面vars文件中设置的KEY_NAME):
sudo ./easyrsa build-server-full server nopass

修改kpi目录权限
sudo chmod 777 pki
进入pki查看相关证书
cd kpi
sudo ls private/
sudo ls issued/

至此服务端的证书制作完毕
制作客户端证书
Server端证书制作完成后,开始制作Client端证书,步骤和制作服务端证书类似,注意命令中的client-win11
,是客户端的名称,可以换成任意你喜欢的,不要和服务端证书一样就行
cd /usr/share/easy-rsa/
sudo ./easyrsa build-client-full client-win11 nopass

再次查看 pki/issued/ 和 pki/private/ ,会发现多了win11的证书和私钥出来

至此客户端的证书制作完毕
创建迪菲·赫尔曼密钥dh.pem
使用以下命令创建,会生成dh.pem文件
sudo ./easyrsa gen-dh

至此所有需要的证书生成完毕。
配置OpenVPN Server端
拷贝相关文件
拷贝一份模板配置文件到/etc/openvpn/然后修改
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
cd /etc/openvpn/

提示:版本与版本之间默认的example文件可能不同,也可参考OpenVPN 默认配置文件-XQLEE'Blog
然后把刚刚创建好的CA证书、dh.pem、服务端证书/私钥、客户端证书/私钥复制过来,CA证书和dh.pem放在/etc/openvpn目录下,服务端证书/私钥放在server目录下,客户端证书/私钥放在client目录下。
- CA证书 存放-> /etc/openvpn/ca.crt
- dh.pem 存放-> /etc/openvpn/dh.pem
- 服务端证书(.crt)/.key 存放-> /etc/openvpn/server/server.crt /etc/openvpn/server/server.key
- 客户端证书(.crt)/.key 存放-> /etc/openvpn/server/client-win11.crt /etc/openvpn/server/client-win11.key
sudo cp /usr/share/easy-rsa/pki/{ca.crt,dh.pem} /etc/openvpn
sudo cp /usr/share/easy-rsa/pki/issued/server.crt /etc/openvpn/server
sudo cp /usr/share/easy-rsa/pki/private/server.key /etc/openvpn/server
sudo cp /usr/share/easy-rsa/pki/private/client.key /etc/openvpn/client
sudo cp /usr/share/easy-rsa/pki/private/client-win11.key /etc/openvpn/client
复制完成后查看

配置server.conf
sudo vim server.conf
提示:在conf配置文件中 分号(;)与井号(#)都是注释/禁用的意思
主要做了如下修改:
端口和协议
端口号依然使用1194,传输协议用tcp,注释掉原本的udp

证书和密钥配置
修改证书和dh密钥路径

网段配置
修改VPN的IP地址段,也可以不修改:

DNS 配置
修改下面选项可以使客户端在连接OpenVPN时DNS服务器按照以下设置

客户端证书共用一个开启
开启后多个客户端可以同时使用一个证书和私钥

关闭TLS认证

启用LZO算法
删除comp-lzo前面的分号,启用LZO算法

日志记录方式设置为追加
去掉log-append前面的分号,启用日志追加模式,存放日志路径是否需要调整看自己,这里没调整。

关闭“服务器重启,客户端自动重新连接”

到此服务队配置文件修改完成。更多server端证书配置可以参考:OpenVPN server端配置文件详细说明-腾讯云开发者社区-腾讯云
OpenVPN Server 服务端启动
使用命令启动OpenVPN 服务端
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

使用以下命令查看日志
sudo tail -f /var/log/openvpn/openvpn.log
防火墙开放 OpenVPN
sudo ufw allow 1194
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable

提示:云主机记得开放安全组端口
Windows 客户端
在openvpn 官网下载客户端:OpenVPN Connect - VPN For Your Operating System | OpenVPN

下载好以后点击运行安装







下载客户端密钥和证书
修改文件访问权限
cd /etc/openvpn
sudo chmod 755 ca.crt client/client-win11{.crt,.key}
这里使用xftp进行下载,ca.crt client-win11.key client-win11.crt


创建客户端配置文件目录
这里我在系统文档下创建了以下目录(经供参考)

文件夹创建好以后将上面下载的三个文件复制进去

新建openvpn 客户端配置文件
client-win11.ovpn
就是新建一个文本文件,然后扩展名修改为.ovpn
OpenVPN 客户端导入配置
打开openvpn客户端,切换到UPLOAD FILE 界面(导入ovpn配置文件界面)

ovpn配置文件拖动到openvpn的UPLOAD FILE配置页面中

连接到服务端

连接成功

查看自己的vpn IP和服务端等信息

ping测试访问情况

提示:10.8.0.1 就是openvpn服务器所在(相当于路由器)
https://www.syntaxspace.com/article/2504251656019227.html
评论