本文最后更新于 2025-04-20,文章内容距今已超过七天,可能已经过时。

博主的家中部署了几台不上外网的虚拟机,为我的提供如本地书库,远程Coding,WindowsServer服务的一些功能,但是由于局域网的限制,我无法在公网访问到服务器,只能使用服务,但是不能对服务器进行设置,当服务出现了问题时,很难远程运维。

而把SSH或者RDP端口直接投放到公网又是一种很不安全的行为,于是想到使用堡垒机作为跳板,保护局域网的服务器的访问。

JumpServer 简介

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。

官网:

https://www.jumpserver.org/

以上是JumpServer官网的介绍,我选择它有一个原因是因为其管辖区域内的客户端无需安装agent。还有一个原因是其提供了两种及其方便的安装方式——在线一键安装和离线安装包,其中离线安装官方提供了一键安装脚本的。我本次选择离线安装。

环境要求⚓︎

JumpServer对部署它的服务器有着相对于其他小型服务更高的标准,以下为官网介绍的所需配置:

OS/Arch

Architecture

Linux Kernel

Soft Requirement

Minimize Hardware

linux/amd64

x86_64

>= 4.0

wget curl tar gettext iptables python

2Core/8GB RAM/60G HDD

linux/arm64

aarch64

>= 4.0

wget curl tar gettext iptables python

2Core/8GB RAM/60G HDD

linux/loong64

loongarch64

== 4.19

wget curl tar gettext iptables python

2Core/8GB RAM/60G HDD

JumpServer 需要使用 MySQL 或 MariaDB 存储数据,使用 Redis 缓存数据,以下是对数据库的要求:

Name

Version

Default Charset

Default collation

TLS/SSL

MySQL

>= 5.7

utf8

utf8_general_ci

MariaDB

>= 10.2

utf8mb3

utf8mb3_general_ci

Name

Version

Sentinel

Cluster

TLS/SSL

Redis

>= 5.0

关于配置检测的脚本,网络上有相应的解锁教程。不过我认为既然作为堡垒机了,这样的配置要求也是合情合理。

在线安装

如果没有安装docker,可以选择这种方式,脚本会自带安装docker及相关配置。

root@localhost:/opt#curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.28.8/quick_start.sh | bash
████████████████████████████████████████ 100%
[Success]: download install script to /opt/jumpserver-installer-v2.28.8
[Info]: Start executing the installation script.
[Info]: In an automated script deployment, note the message prompts on the screen.
████████████████████████████████████████ 100%
[Success]: The Installation is Complete.

For more commands, you can enter jmsctl --help to view help information.

脚本运行完成即可使用jmsctl指令控制JumpServer了。

离线安装

安装包下载链接,请确认安装的主机没有其他服务对JumpServer的服务产生干扰:

https://community.fit2cloud.com/#/products/jumpserver/downloads

下载对应的安装包,使用FTP将文件上传到服务器,将安装包放到服务器的/opt目录下,并解压。

cd /opt
tar -xf jumpserver-offline-installer-v3.10.18-amd64.tar.gz
cd jumpserver-offline-installer-v3.10.18-amd64

官网提供了config的修改参考,我们可以直接通过脚本暗转,后续有需求了再进行修改。

直接启动自带的安装脚本:

cd jumpserver-offline-release-v3.10.18-amd64

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

在使用脚本时,根据指示选择对应的服务端口,是否使用外部的数据持久化存储(外部的Mysql和Redis)按需配置。

安装完成后,我们输入对应的IP地址和端口,是无法直接访问服务的,我们需要先使用指令关闭服务,设置IP白名单:

  # 打开config.txt 配置文件,定义 DOMAINS 字段
  vim /opt/jumpserver/config/config.txt 

  # 可信任 DOMAINS 定义,
  # 定义可信任的访问 IP, 请根据实际情况修改, 如果是公网 IP 请改成对应的公网 IP。
  # DOMAINS="demo.jumpserver.org"    # 使用域名访问
  # DOMAINS="172.17.200.191"         # 使用 IP 访问
  # DOMAINS="example.com,172.17.200.191"    # 使用 IP 和 域名一起访问
  DOMAINS=

  # 重启 JumpServer 服务生效
  jmsctl restart

重启完成后,在浏览器输入对应的地址,进入服务:

登录页.png

按照脚本安装时的账号密码进入,第一次进入需要更改密码,并按需开启MFA认证,内置有教程(如需公网访问的话,我是建议开启的,同时应该设置复杂账号密码),MFA认证可以绑定Google的Authenticator。

如需,也可以开启邮件服务器,输入对应的SMTP账号信息:

邮件服务器.png

公网访问JmupServer

参考之前的教程设置FRP,可以使用STCP安全暴露JumpServer的端口,确保服务器没有其他防火墙禁止该端口网络进出。

https://halo.iweekyi.net/archives/linuxrockyan-zhuang-frpnei-wang-chuan-tou-fu-wu

设置好内网穿透服务后,可以在公网访问到JumpServer服务了。

设置资产和账号并分配

要确保局域网的Linux服务器开启SSH或者VNC,Windows开启RDP,JumpServer内置了链接Linux和Windows的方式。

进入控制台:

控制台.png

创建资产

点击创建资产:

选择对应的主机类型,确保主机可以在JumpServer的网域内访问:

以Windows举例:

资产配置完毕,设置用户账号。

创建用户

首先创建一个用户组:

创建用户:

创建好用户后,就该分配资产了。

分配资产

根据需求创建对应的资产

分批好后,可以进入工作台进行访问(如果创建时许可包含当前帐号的话)

测试

我之前创建了一个非administrator的个人用户,现在退出管理员账号,登录个人账户,模拟日常登录:

登陆成功,进入个人界面:

选择【链接资产】,进入资产列表,也可以通过文件传输和管理管理自己在JumpServer上的资产的文件系统:

为了避免用户水印,我使用管理员账号进行截屏:

可以观察到在公网上成功连接到我这个Windows7机器,说明访问成功。

结语

JumpServer是一个非常强大的开源堡垒机,我们可以用它实现很多网安功能,在未来我也会不断学习和了解更多的操作和技巧。