服务器安全是网络维护人员的重要工作,前面通过fail2ban添加了一套安全机制Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog,这里再来个vpn机制防护。
VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。
sudo apt update
sudo apt install openvpn easy-rsa
openvpn安装完毕后,查看openvpn的版本:
openvpn --version
为啥安装easy-rsa,看名字就懂,为了更容易的生产OpenVPN需要的各种密钥。
OpenVPN 的证书分为三部分:CA证书、Server端证书、Client端证书。下面我们通过easy-rsa分别对其进行制作。
进入 /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要换成前面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文件
sudo ./easyrsa gen-dh
至此所有需要的证书生成完毕。
拷贝一份模板配置文件到/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目录下。
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
复制完成后查看
sudo vim server.conf
提示:在conf配置文件中 分号(;)与井号(#)都是注释/禁用的意思
主要做了如下修改:
端口号依然使用1194,传输协议用tcp,注释掉原本的udp
修改证书和dh密钥路径
修改VPN的IP地址段,也可以不修改:
修改下面选项可以使客户端在连接OpenVPN时DNS服务器按照以下设置
开启后多个客户端可以同时使用一个证书和私钥
删除comp-lzo前面的分号,启用LZO算法
去掉log-append前面的分号,启用日志追加模式,存放日志路径是否需要调整看自己,这里没调整。
到此服务队配置文件修改完成。更多server端证书配置可以参考:OpenVPN server端配置文件详细说明-腾讯云开发者社区-腾讯云
使用命令启动OpenVPN 服务端
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server
使用以下命令查看日志
sudo tail -f /var/log/openvpn/openvpn.log
sudo ufw allow 1194
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
提示:云主机记得开放安全组端口
在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
这里我在系统文档下创建了以下目录(经供参考)
文件夹创建好以后将上面下载的三个文件复制进去
client-win11.ovpn
就是新建一个文本文件,然后扩展名修改为.ovpn
打开openvpn客户端,切换到UPLOAD FILE 界面(导入ovpn配置文件界面)
ovpn配置文件拖动到openvpn的UPLOAD FILE配置页面中
提示:10.8.0.1 就是openvpn服务器所在(相当于路由器)
https://blog.xqlee.com/article/2504251656019227.html