open【部署、使用教程】

news2024/11/18 13:30:56

目录

【1】创建证书

【2】安装openVPN-Server端并配置

【3】将证书移动到相对路径

【4】开启内核转发功能,否则会无法启动openVPN

【5】启动服务,加入开机自启

【6】启动后服务端会生成一个tun0的虚拟网卡,用于不同网段之间相互通信

【7】安装openVPN-client(windows)

【9】打开客户端软件,点击连接,后会生成一个虚拟ip地址与服务端互相通信

【10】客户端尝试ping服务端虚拟VPN地址

【11】客户端访问后端内部节点

【12】后端节点抓包,查看数据传输过程

【13】 如果向上面一样配置后端路由规则,如果节点过多怎么办

【14】双重认证(密钥+用户名+密码认证的登录方式)

【15】实现方式

【16】客户端再次测试使用VPN连接

【17】客户端通过VPN服务访问jumpserver


  • VPN就是虚拟专用通道(假的网络),就是将两个不同的网络通过建立一条虚拟隧道的方式连接起来,提供安全的数据传输隧道
  • 是linux下开源的软件,提供了良好的性能和友好的用户GUI
主机公网私网
openVPN server10.0.0.10192.168.200.10
opevVPN clientwindows

【1】创建证书

[root@openvpn-server ~]# yum -y install easy-rsa

# 生成密钥证书,需要准备vars【变量】文件,充当CA权威机构
[root@openvpn-server ~]# mkdir /opt/easy-rsa
[root@openvpn-server ~]# cd /opt/easy-rsa/
[root@openvpn-server easy-rsa]# /usr/bin/cp -a /usr/share/easy-rsa/3.0.8/* ./
[root@openvpn-server easy-rsa]# /usr/bin/cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
[root@openvpn-server easy-rsa]# >vars
[root@openvpn-server easy-rsa]# vim vars
if [ -z "$EASYRSA_CALLER" ]; then
        echo "You appear to be sourcing an Easy-RSA 'vars' file." >&2
        echo "This is no longer necessary and is disallowed. See the section called" >&2
        echo "'How to use this file' near the top comments for more details." >&2
        return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "shanghai"
set_var EASYRSA_REQ_ORG "test"
set_var EASYRSA_REQ_EMALL "**48925*3@qq.com"
set_var EASYRSA_NS_SUPPORT "yes"
  • 初始化生成证书
# 1、初始化、创建PKI目录,用于存放证书
[root@openvpn-server easy-rsa]# ./easyrsa init-pki

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/easy-rsa/pki

[root@openvpn-server easy-rsa]#

# 2、创建根证书,会提示设置密码,用于CA对之后生成的server和client证书签名时使用,其余默认
[root@openvpn-server easy-rsa]# ./easyrsa build-ca

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.1e-fips 11 Feb 2013

Enter New CA Key Passphrase: 1234
Re-Enter New CA Key Passphrase: 1234
Generating RSA private key, 2048 bit long modulus
.....+++
......+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 回车

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/easy-rsa/pki/ca.crt

[root@openvpn-server easy-rsa]# 

# 3、创建server端证书和私钥文件,nopass表示不加密私钥文件,其余默认
[root@openvpn-server easy-rsa]# ./easyrsa gen-req server nopass

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.1e-fips 11 Feb 2013
Generating a 2048 bit RSA private key
...............................................................................................................................................................+++
..............+++
writing new private key to '/opt/easy-rsa/pki/easy-rsa-2332.7jdnuc/tmp.35IQjh'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]: 回车

Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/server.req
key: /opt/easy-rsa/pki/private/server.key

[root@openvpn-server easy-rsa]# 

# 4、给srver端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
[root@openvpn-server easy-rsa]# ./easyrsa sign server server

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.1e-fips 11 Feb 2013


You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-2359.ZPaCfY/tmp.pzKHq7
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key: 1234证书的密码
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'server'
Certificate is to be certified until Sep 24 12:20:30 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/easy-rsa/pki/issued/server.crt

[root@openvpn-server easy-rsa]# 

# 5、创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法
[root@openvpn-server easy-rsa]# ./easyrsa gen-dh
...................................
...................................
................................................+....................+.++*++*

DH parameters of size 2048 created at /opt/easy-rsa/pki/dh.pem

# 6、创建client端证书和私钥文件,nopass表示不加密私钥文件,其余默认
[root@openvpn-server easy-rsa]# ./easyrsa gen-req client nopass

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017
Generating a 2048 bit RSA private key
..........+++
...................................+++
writing new private key to '/opt/easy-rsa/pki/easy-rsa-3284.fskfny/tmp.M4Zywm'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client]:

Keypair and certificate request completed. Your files are:
req: /opt/easy-rsa/pki/reqs/client.req
key: /opt/easy-rsa/pki/private/client.key

# 7、给client端证书签名,首先是对一些信息的确认,可以输入yes,然后创建ca根证书时设置的密码
[root@openvpn-server easy-rsa]# ./easyrsa sign client client

Note: using Easy-RSA configuration from: /opt/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips  26 Jan 2017


You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 825 days:

subject=
    commonName                = client


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /opt/easy-rsa/pki/easy-rsa-3314.DRMnW8/tmp.pwtwdK
Enter pass phrase for /opt/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Sep 24 12:51:05 2025 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/easy-rsa/pki/issued/client.crt

【2】安装openVPN-Server端并配置

[root@openvpn-server easy-rsa]# yum -y install openvpn

# 修改配置文件
[root@openvpn-server easy-rsa]# cd /etc/openvpn/
[root@openvpn-server openvpn]# >server.conf 
[root@openvpn-server openvpn]# vim server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.200.0 255.255.255.0"
keepalive 10 120
max-clients 100
status openvpn-status.log
verb 3
client-to-client
log /var/log/openvpn.log
persist-key
persist-tun
duplicate-cn

【3】将证书移动到相对路径

[root@openvpn-server openvpn]# cp /opt/easy-rsa/pki/ca.crt ./
[root@openvpn-server openvpn]# cp /opt/easy-rsa/pki/issued/server.crt ./
[root@openvpn-server openvpn]# cp /opt/easy-rsa/pki/private/server.key ./
[root@openvpn-server openvpn]# cp /opt/easy-rsa/pki/dh.pem ./

【4】开启内核转发功能,否则会无法启动openVPN

[root@openvpn-server openvpn]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@openvpn-server openvpn]# systemctl restart network

【5】启动服务,加入开机自启

[root@openvpn-server openvpn]# systemctl -f enable openvpn@server.service
[root@openvpn-server openvpn]# systemctl start openvpn@server.service

# 查看端口【 配置中是 udp协议 】
[root@openvpn-server openvpn]# netstat -lntpu | grep openvpn
udp        0      0 0.0.0.0:1194            0.0.0.0:*                           3174/openvpn

【6】启动后服务端会生成一个tun0的虚拟网卡,用于不同网段之间相互通信

[root@openvpn-server openvpn]# ifconfig tun
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.1  netmask 255.255.255.255  destination 10.8.0.2
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

【7】安装openVPN-client(windows)

  • 下载openvpn软件包,安装(需要软件包的可以留言)
  • 将服务端的证书保存到windows的openvpn目录下
[root@openvpn-server openvpn]# cd /opt/easy-rsa/pki/
[root@openvpn-server pki]# sz ca.crt

[root@openvpn-server pki]# cd issued/
[root@openvpn-server issued]# sz client.crt 

[root@openvpn-server issued]# cd ..
[root@openvpn-server pki]# cd private/
[root@openvpn-server private]# sz client.key

【8】创建client.ovpn配置文件

client
dev tun
proto udp
remote 10.0.0.10 1194
resolv-retry infinite
nobind
ca ca.crt
cert client.crt
key client.key
verb 3
persist-key
persist-tun

【9】打开客户端软件,点击连接,后会生成一个虚拟ip地址与服务端互相通信

【10】客户端尝试ping服务端虚拟VPN地址

【11】客户端访问后端内部节点

  • 当我们通过客户端访问后端时,因为后端没配置路由地址,返回不到数据

  • 后端主机配置路由【需要配置10.8.0.0/24网段的路由】

  • 客户端再次尝试 ping 后端主机访问测试

【12】后端节点抓包,查看数据传输过程

【13】 如果向上面一样配置后端路由规则,如果节点过多怎么办

  • 解决办法:就需要在openvpn的服务端做以下方式配置,不需要再后端配置了
[root@openvpn-server ~]# systemctl start firewalld.service

[root@openvpn-server ~]# firewall-cmd --add-service=openvpn 
success
[root@openvpn-server ~]# firewall-cmd --add-service=openvpn --permanent 
success
[root@openvpn-server ~]# firewall-cmd --add-masquerade 
success
[root@openvpn-server ~]# firewall-cmd --add-masquerade --permanent
  • 测试客户端是否能访问到后端节点

【14】双重认证(密钥+用户名+密码认证的登录方式)

  • 首先第一点安全很重要,其次管理这些密钥和证书比较麻烦。
  • 如果用户量多,不可能为每一个用户创建一套密钥,太麻烦
  • 可以实现多个用户只是用一套证书,使用不同的用户+密码
  • 新用户加入时,就只需要添加一个用户名和密码就行了

【15】实现方式

  • 首先确保使用密钥可以链接VPN服务端。然后在配置密钥+用户名+密码的登录方式
[root@openvpn-server ~]# cd /etc/openvpn/
[root@openvpn-server openvpn]# vim server.conf
.........
.........
## 添加以下几行
script-security 3
auth-user-pass-verify /etc/openvpn/check.sh via-env
username-as-common-name
  • 创建脚本文件
[root@openvpn-server openvpn]# vim check.sh
#!/bin/bash
PASSFILE="/etc/openvpn/openvpnfile"
LOG_FILE="/var/log/openvpn-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`
  if [ ! -r  "${PASSFILE}" ];then
    echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
    exit 1
  fi
  CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`
  if [ "${CORRECT_PASSWORD}" = "" ];then
    echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
    exit 1
  fi
  if [ "${password}" = "${CORRECT_PASSWORD}" ];then
    echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
    exit 0
  fi
  echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >>${LOG_FILE}
  exit 1
  • 脚本授权
[root@openvpn-server openvpn]# chmod +x check.sh 
  • 创建用户名+密码的文件
[root@openvpn-server openvpn]# echo "admin admin123" >> /etc/openvpn/openvpnfile
[root@openvpn-server openvpn]# cat /etc/openvpn/openvpnfile 
admin admin123
  • 重启openvpn服务端
[root@openvpn-server openvpn]# systemctl restart openvpn@server.service
  • 客户端配置修改

【16】客户端再次测试使用VPN连接

  •  如果有新的成员加入需要使用客户端VPN连接内网主机,可以将客户端目录的证书+配置文件打包发给他

【17】客户端通过VPN服务访问jumpserver

  •  jumpserver【私网地址:192.168.200.160】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681819.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE2.0集成 Markdown 编辑器

Markdown编辑器的使用 这是一款基于Vue的markdown编辑器。既可以用来编辑Markdown语法&#xff0c;又可以用来解析 效果图,mavonEditor实现了Markdown集成 Markdown是一种标记语言&#xff0c;相较于word文档更加清晰方便&#xff0c;适合进行笔记等。将Markdown集成进入自己项…

Matlab使用S函数

什么是S函数&#xff1f; S-函数是系统函数&#xff08;System Function&#xff09;的简称&#xff0c;在 Simulink 中用非图形化的方式来描述一个模块。一个完整的S-函数结构体系包含了描述一个动态系统所需要的全部能力。使用S-函数用户可以向 Simulink 模型中添加自己的模块…

【PCB专题】Allegro中设置泪滴

PCB绘制完成后有时按需要对PCB进行添加泪滴的操作是非常必要的。 添加泪滴的作用主要是: 信号传输时平滑阻抗,减少阻抗的急剧跳变,避免高频信号传输时由于线宽突然变小而造成反射。 焊接时可以保护焊盘,避免多次焊接时焊盘的脱落,生产时可以避免蚀刻不均,以及过孔偏位出…

一键安装和导出当前Python项目的依赖包总结

创建python环境&#xff0c;配置一个python运行项目。在项目可以运行的环境下&#xff0c;导出该项目所依赖包到一个requirements.txt文档中。在另一个纯净环境中&#xff0c;快速批量安装项目所依赖的包&#xff0c;便于快速进行项目迁移 一、导出当前Python项目的依赖包1、方…

【数据结构与算法】3、虚拟头节点、动态数组的缩容、动态数组和单链表的复杂度、数组的随机访问

目录 一、虚拟头节点二、数组的随机访问三、动态数组、链表复杂度分析四、动态数组 add(E element) 复杂度分析五、动态数组的缩容 一、虚拟头节点 &#x1f33c; 为了让代码更加精简&#xff0c;统一所有节点的处理逻辑&#xff0c;可以在最前面增加一个虚拟的头节点&#xf…

2023 年最佳 C++ IDE

文章目录 前言1. Visual Studio2. Code::Blocks3. CLion4. Eclipse CDT&#xff08;C/C 开发工具&#xff09;5. CodeLite6. Apache NetBeans7. Qt Creator8. Dev C9. C Builder10. Xcode11. GNAT Programming Studio12. Kite总结 前言 要跟踪极佳 IDE&#xff08;集成开发环境…

嵌入式系统复习要点

目录 1、嵌入式系统的核心部分主要由硬件和软件两部分组成&#xff1a; 2、嵌入式系统硬件&#xff1a; 3、嵌入式处理器从体系上分类&#xff0c;可以分为冯诺依曼结构和哈佛结构两种&#xff1a; 4、几类常见的嵌入式处理器类型&#xff1a; 5、MCU组成结构&#xff1a;…

chatgpt赋能python:介绍:Python经典小游戏合集

介绍&#xff1a;Python经典小游戏合集 作为一门简洁易学、受到广泛喜爱的编程语言&#xff0c;Python已经在各个领域中得到了广泛应用&#xff0c;包括游戏开发。在这篇文章中&#xff0c;我们将为您介绍一些Python编程中的经典小游戏&#xff0c;让您感受到Python的多功能性…

idea乱码的相关问题

idea控制台乱码&#xff08;即&#xff1a;tomacat等启动时的乱码&#xff09; 第一步&#xff1a; 控制台tomcat启动信息乱码解决&#xff08;红色字体&#xff09; 1 在本地 tomcat 的配置文件中找到 logging.properties 文件设置日志输出的编码为 UTF-8 追加的配置信息为…

【Android复习笔记】Handler机制(一)

从 Android 初学者常见的一个错误开始: 导致这个错误的代码通常长下面这样: new Thread(){@Overridepublic void run() {new Handler(); } }.

chatgpt赋能python:Python编程中常见的问题和解决方案

Python编程中常见的问题和解决方案 Python作为一门高级编程语言&#xff0c;广泛用于数据分析、人工智能、Web开发等领域&#xff0c;然而在实际应用中我们不可避免地会遇到许多问题。在本文中&#xff0c;我们将探讨一些常见的Python编程问题以及解决方案。 1. 编码问题 Py…

碰撞检测算法详述

算法的分类 目录 一、基于空间域的碰撞检测算法分类 1. 基于图像空间的碰撞算法 2.基于几何空间的碰撞检测算法 &#xff08;1&#xff09;基于空间剖分算法 &#xff08;2&#xff09;裁剪扫掠法 &#xff08;3&#xff09;基于距离场的算法 &#xff08;4&#xff09;…

ModaHub魔搭社区:向量数据库的工作原理

目录 1. 为什么需要向量数据库 1&#xff09;CPU 工作原理 2&#xff09;GPU 工作原理 3&#xff09;二者的差异 4&#xff09;总结 5&#xff09;大模型的工作原理 学习 推理 1. 为什么需要向量数据库 向量数据库这一概念随着黄仁勋的演讲火爆了之后&#xff0c;不少…

如何使用upupw搭建服务器,并映射外网访问

作为计算机行业从业人员&#xff0c;相信很多人都接触并使用过phpstudy等类似环境集成包&#xff0c;着对于upupw就比较好理解了。UPUPW绿色服务器平台是Windows下很有特色的一款免费服务器PHP套件&#xff0c;UPUPW PHP套件简化了PHP环境搭建步骤&#xff0c;一个压缩包解压到…

chatgpt赋能python:Python经典游戏:从命令行到桌面

Python经典游戏&#xff1a;从命令行到桌面 Python是一个热门的编程语言&#xff0c;尤其在编写游戏方面表现出色。Python允许开发人员使用简单的语法和丰富的库编写高效率的游戏。在这篇文章中&#xff0c;我们将介绍Python的一些经典游戏&#xff0c;包括简单的命令行游戏和…

GithubAction的使用-简单易懂

一、Github Action简介 github Action &#xff08;工作流&#xff09;&#xff0c;简单理解就是自动化部署、测试。也就是之前人工手动部署变为现在由机器&#xff08;服务器&#xff09;自动部署、测试了。 二、对github Action&#xff08;工作流&#xff09;的使用 首先…

〖编程初学者的自我修养 - 满分面试篇①〗- 面试之前需要做的「长期准备工作」

简介&#xff1a;应 850 小伙伴要求&#xff0c; 无论你是迷茫的在校生还是已经就业的老司机&#xff0c;该专栏都值得你订阅&#xff0c;它会让你成就更好的自己&#xff01;说明&#xff1a;该文属于 编程初学者的自我修养 专栏&#xff0c;购买任意白宝书体系化专栏可加入易…

SpringBoot 解决跨站脚本漏洞(XSS)问题

一、问题背景 使用 SpringBoot 的项目出现了跨站脚本漏洞&#xff08;XSS&#xff09;问题。 二、解决方案 步骤如下&#xff1a; 1、添加maven依赖 在 pom.xml 文件中&#xff0c;增加如下依赖&#xff1a; <dependency><groupId>org.apache.tomcat</group…

莫兰指数P值,Z值分析

仔细看完下面两个链接绝对可以明白。写的非常清晰。 白话空间统计之四&#xff1a;P值和Z得分&#xff08;中&#xff09; 白话空间统计之四&#xff1a;P值和Z得分&#xff08;下&#xff09; 个人理解&#xff1a;P值决定了数据有没有显著性&#xff0c;数据能不能用的问题…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念&#xff0c;包含了一个 CI 和两个 CD&#xff0c;CI全称 Continuous Integration&#xff0c;表示持续集成&#xff0c;CD包含 Continuous Delivery和 Continuous Deployment&#xff0c;分别是持续交付和持续部署。这三个概念之间是有前后依赖…