Ubuntu 搭建OpenVPN Server防护服务器安全

编程教程 > Linux > Linux Security (65) 2025-04-27 12:37:33

前言

服务器安全是网络维护人员的重要工作,前面通过fail2ban添加了一套安全机制Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog,这里再来个vpn机制防护。

 

VPN简介

VPN直译译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-783a4d87cb404cac824ef7fdb4841f3e.png

环境

  • 1台Ubuntu服务器用来搭建OpenVPN Server服务
  • 一台本地计算机用来安全OpenVPN 客户端
  • 确保两台机器能网络互通(ping/或者端口telnet通)

搭建OpenVPN Server

 

安装OpenVPN 和Easy-RSA 软件

sudo apt update
sudo apt install openvpn easy-rsa
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-bae2a65602e2493eab4d592c6c6d0a16.png

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

openvpn --version
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-cc714c7a7b1f4cca8709d7045742073b.png

为啥安装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
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-f3f668f1110244978e52a626dfc6cbc5.png

然后编辑 vars 文件

sudo vi vars

进入后按键盘的PageDown按键翻页或者直接按方向键↓,找到下图内容

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-e2df85bbd7764c99ae6bba5b3e668e31.png

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-08e88aa7fe4345f4852f177344af8a8d.png

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-9d80c0866b60426e81f7ce36e94dd72e.png

修改后:wq保存退出

对于不同版本的easy-rsa,使用方法可能不一样,具体可以参考安装文档的描述

cat /usr/share/doc/easy-rsa/README.Debian
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-24c2f47ca49b4b89a6a4b66a09d0ba39.png

重点:

# ./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
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-f65b5edb8ff344968d1bffc459488a18.png

会发现多创建了个pki目录出来

然后再执行第二条命令

sudo ./easyrsa build-ca nopass
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-e87a207b1246448993be61a14697b6b2.png

至此CA端证书制作好了

制作server服务端证书

然后用以下命令制作Server端证书(注意改命令中的server要换成前面vars文件中设置的KEY_NAME):

sudo ./easyrsa build-server-full server nopass
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-4664681389e24bf78eecd013111d76d8.png

修改kpi目录权限

sudo chmod 777 pki

进入pki查看相关证书

cd kpi
sudo ls private/
sudo ls issued/
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-14e228c94893433da1e55fc0b4b0bfc2.png

至此服务端的证书制作完毕

制作客户端证书

Server端证书制作完成后,开始制作Client端证书,步骤和制作服务端证书类似,注意命令中的client-win11,是客户端的名称,可以换成任意你喜欢的,不要和服务端证书一样就行

cd /usr/share/easy-rsa/
sudo ./easyrsa build-client-full client-win11 nopass
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-51a09f87e645478c863d38be58f273cd.png

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-f4b59df57a9149978a380b0c5512ae8a.png

至此客户端的证书制作完毕

创建迪菲·赫尔曼密钥dh.pem

使用以下命令创建,会生成dh.pem文件

sudo ./easyrsa gen-dh
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-0f75294a577d409f95c761e9587f5e05.png

至此所有需要的证书生成完毕。

配置OpenVPN Server端

拷贝相关文件

拷贝一份模板配置文件到/etc/openvpn/然后修改

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
cd /etc/openvpn/
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-6da67d7730394637bfde07f989c11b02.png

 

提示:版本与版本之间默认的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

复制完成后查看

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-c7d1f3dac15c406a84806c69e3722860.png

 

配置server.conf

sudo vim server.conf

提示:在conf配置文件中 分号(;)与井号(#)都是注释/禁用的意思

主要做了如下修改:

端口和协议

端口号依然使用1194,传输协议用tcp,注释掉原本的udp

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-3256a9b14e534bf3bea5896a0e37bc42.png
证书和密钥配置

修改证书和dh密钥路径

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-4d16e732ff9d4066ab92425de33a96ef.png
网段配置

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-f2a3e23365c84b7683f1e6bd535de816.png
DNS 配置

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-7e04684cf36f4a27b89c5e147d79bd70.png
客户端证书共用一个开启

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-5810bf088c95437683eb97c04f36a98d.png
关闭TLS认证
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-9450ec37cb204711ac187e02977a2d2b.png
启用LZO算法

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-7d992c7d1f1e47cfa090c388a1edbe5b.png

 

日志记录方式设置为追加

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-ca30fb50f4a646ada3753537899275d3.png
关闭“服务器重启,客户端自动重新连接”
image

 

到此服务队配置文件修改完成。更多server端证书配置可以参考:OpenVPN server端配置文件详细说明-腾讯云开发者社区-腾讯云

OpenVPN Server 服务端启动

使用命令启动OpenVPN 服务端

sudo systemctl start openvpn@server
sudo systemctl status openvpn@server
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-23b3f08af16f469198b7f8abaa6c6ea4.png

使用以下命令查看日志

sudo tail -f /var/log/openvpn/openvpn.log

 

防火墙开放 OpenVPN

sudo ufw allow 1194
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-ac9777f4393240909b88e30f5b8bbfa6.png

提示:云主机记得开放安全组端口

 

Windows 客户端

在openvpn 官网下载客户端:OpenVPN Connect - VPN For Your Operating System | OpenVPN

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-d1ee079404db4727a6f33f2bb63d00d0.png

下载好以后点击运行安装

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-f08d60aaef1b42089a30825ecda0e44e.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-3d888ff373c148089d2efc1ddc80ecba.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-d50b52cd2bfb4d9391083dcc1fe8ae24.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-456a61a0aa884af3a7af461518266337.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-13637fd44d844e69849cc2dd7b627923.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-a1383960a8264f0c9b9aad9793f71b41.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-281f70352c134f2eaad7bd191e463300.png

 

下载客户端密钥和证书

修改文件访问权限

cd /etc/openvpn
sudo chmod 755 ca.crt client/client-win11{.crt,.key}

这里使用xftp进行下载,ca.crt client-win11.key client-win11.crt

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-cbf41a802f5f460cb03e4f033a1fdd73.png
Ubuntu 搭建OpenVPN Server防护服务器安全_图示-1551f00b6840499ab1679c909cecd3d7.png

 

创建客户端配置文件目录

这里我在系统文档下创建了以下目录(经供参考)

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-31797027f34c4d83af22e7612efa6d13.png

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-d6f8b9c374bc44909454d9c6130a82b7.png

 

新建openvpn 客户端配置文件 

client-win11.ovpn

就是新建一个文本文件,然后扩展名修改为.ovpn

登录后查阅

此处内容需登录后查阅(刷新)

登录/注册

OpenVPN 客户端导入配置

打开openvpn客户端,切换到UPLOAD FILE 界面(导入ovpn配置文件界面)

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-19fc5d179c3f419a964f3bc213f5eb0a.png

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-6546261f189840cb9d432e9453d38147.png

 

连接到服务端

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-411fabaee26e4494aaabe3f2830fcdf4.png

 

连接成功

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-6f63ecf74b7d4b2ea49e298ec00eb85d.png

 

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

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-3bc0aa44ea91421e83be7745e4e2d5c8.png

 

ping测试访问情况

Ubuntu 搭建OpenVPN Server防护服务器安全_图示-1490eb942ec641ab8cb3e50a78b9aa3d.png

 

提示:10.8.0.1 就是openvpn服务器所在(相当于路由器)

 

 

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
前言服务器安全是网络维护人员的重要工作,前面通过fail2ban添加了一套安全机制Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog,这里再
服务Server默认配置server.conf################################################## Sample
环境说明ubuntu系统Fail2ban 是一种多功能的安全工具。虽然它主要用于防止针对 SSH 的暴力攻击,但它也可用于保护其他服务。安装Fail2Ban软件
前言通过上一篇Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog安装和基本使用已经能满足Linux服务器对于ssh服务的防护工作了。这里接着
Ubuntu系统或者Linux系统都应该保证软件更新到最新,以减少软件漏洞导致服务器风险。Ubuntu系统更新软件主要分两步。第一步:更新软件源信息该操作只会更新软件最新的信息到本地,不会下载和安装。
1.安装ufw防火墙sudo apt-get install ufw提示:除开精简版一般云提供商LTS版本(18/22LTS)都是默认安装的。 2.查看防火墙启
ddos攻击属于网络攻击的常见模式之一。这里写一个能简单防御的脚本ddos-deflate脚本的安装和卸载
错误描述pve8或ubuntu fail2ban 无法启动 Have not found any log file for sshd jail导致原因没有找到s
需求fail2ban 根据某个程序的日志文件进行监视,发现对应问题后进行监禁IP。具体需求示例:监控nginx示例,1分钟发现10个404页面访问则封禁该IP1
备份备份现有配置和数据库以便回滚备份配置sudo mkdir -p /opt/fail2ban-baksudo cp -R /etc/fail2ban /opt
If not configured manually, Fail2ban will load configuration files from the dire
Nginx 限流组件limit_req limit_req作用: 限制用户(同一个ip)在给定时间内HTTP请求的数量, 流量限制主要用作安全目的, 可以防止大量请求的...
一、规则分类1.进入本机,即访问本机规则2.出本机,即本机访问外面规则3.转发,即本地转发规则,如端口7001转发到80 二、使用1.允许来自IP 10.1.1
Linux(centos)系统远程(SSH)登录输入错误密码多次锁定账号时间PAM实现方式