前言
大家好,本人TopJohn,互联网码农,开源爱好者。
今天主要介绍下一款备受欢迎的开源堡垒机或者说跳板机,在日常服务器运维中会经常用到,后端或者运维小伙伴可能比较熟悉,是一款日常使用率较高的软件。
官网:www.jumpserver.org/
GitHub地址:github.com/jumpserver/…
介绍
JumpServer
堡垒机帮助企业以更安全的方式管控和登录各种类型的资产。
功能
主要包括以下6大功能:
- SSH:Linux / Unix / 网络设备 等
- Windows:Web 方式连接 / 原生 RDP 连接
- 数据库:MySQL / Oracle / SQLServer / PostgreSQL 等
- Kubernetes:支持连接到 K8s 集群中的 Pods
- Web站点:各类系统的 Web 管理后台
- 应用:通过 Remote App 连接各类应用
当然,我接触JumpServer
还是因为它可以管理众多的服务器(不管是阿里云、腾讯云的ECS还是本地虚拟化的KVM虚拟机),能够使得公司内部能有效协作、规范管理,能够有效管理服务器资源,尤其是在业务、人员权限变动比较大的团体效果尤为明显。
优势
按官方的说法是:
九年时间,倾情投入,用心做好一款堡垒机。
“ JumpServer 从创立至今始终坚持开源开放,始终坚持倾听社区心声,始终坚持高质量快速迭代。我们将继续秉承这些原则,用心做好一款堡垒机。”—— JumpServer 开源项目创始人 广宏伟
确实,JumpServer
这款堡垒机在开源领域目前还没有对手,一般的互联网金融科技企业管理服务器资产应该都会选择JumpServer
:
-
开源:零门槛,线上快速获取和安装
-
无插件:仅需浏览器,极致 Web Terminal 使用体验
-
分布式:轻松支持大规模并发访问
-
多云支持:一套系统,同时管理不同云上资产
-
云端存储:审计录像存放在云端,永不丢失
-
多租户:一套系统,多个子公司和部门同时使用
JumpServer 堡垒机支持事前授权、事中监察、事后审计,满足等保合规要求,符合 4A 规范的堡垒机:
- 身份验证 / Authentication:防止身份冒用和复用
- 授权控制 / Authorization:防止内部误操作和权限滥用
- 账号管理 / Accounting:人员和资产的管理
- 安全审计 / Auditing:追溯的保障和事故分析的依据
尤其是随着等保、密评等政府信息化项目的要求,堡垒机的需求也日渐凸显,除了企业自身需求,也会有一些项目等保密评要求使用堡垒机。
架构
JumpServer 采用分层架构,分别是负载层、接入层、核心层、数据层、存储层,下图为官方给出的应用架构图:
- Core 组件是 JumpServer 的核心组件,其他组件依赖此组件启动。
- Koko 是服务于类 Unix 资产平台的组件,通过 SSH、Telnet 协议提供字符型连接。
- Lion 是服务于 Windows 资产平台的组件,用于 Web 端访问 Windows 资产。
- Omnidb 是服务于数据库的组件,用于可视化界面纳管数据库。
- Razor 是服务于 RDP 协议组件,该组件主要功能是通过 JumpServer Client 方式访问 Windows 资产。
- Magnus 是服务于数据库的组件,用于通过客户端代理访问数据库。
- Celery 是处理异步任务的组件,用于执行 JumpServer 相关的自动化任务。
JumpServer 分为多个组件,大致的架构如下图所示,其中 Lina 和 Luna 为纯静态文件,最终由 Nginx 整合。
组件化设计,每个组件都有清晰的职责,能够较为灵活的拓展,不至于整个系统变得臃肿!
安装部署
JumpServer
安装方式有4种:
- Linux 单机部署
- Linux 集群模式部署
- Kubernetes Helm模式部署
- 源码部署
说说这几种部署方式的应用场景:
单机部署方式适合用于中小型企业,管理的资产不是特别多的情况,具体也看服务器配置了,目前我用的就是这种方式,我比较青睐这种方式,维护简单,没压力,更新也十分便捷。
集群模式部署的话,类似单机模式,只不过利用了nfs
,把redis和mysql单独部署,可以利用多服务器部署JumpServer
实例,将实例运行压力分摊到各节点上,提升集群并发访问的性能,引入了私有化云存储minio
和Elasticsearch
部署略微麻烦,维护升级也蛋疼,如果单机版本沟通的话还是推荐单机版。
Kubernetes Helm模式部署,这种模式适用于公司有K8s
集群的,直接调整配置文件通过Helm
命令行部署,适合大型企业,有一定规模的运维人员。
源码部署这种方式适合对JumpServer
十分熟练的选手了,想进行深入研究的童鞋可以尝试一下。
Linux 单机部署
下面我就单机部署讲解下操作步骤,毕竟其他的方式也不适合咱,就不多折腾了。
在线安装
1. 安装部署
在线安装适用于服务器管控比较松的公司,互联网企业,如果是银行等金融科技的话,老老实实用离线安装,也不麻烦。
- 国内直接拉去官方脚本安装:
#️⃣ root@localhost:/opt#
curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash
████████████████████████████████████████ 100%
[Success]: download install script to /opt/jumpserver-installer-v3.7.1
[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.
- 其他地区拉
GitHub
上的脚本安装:
#️⃣ root@localhost:/opt#
curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash
████████████████████████████████████████ 100%
[Success]: download install script to /opt/jumpserver-installer-v3.7.1
[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.
首次安装后需要修改配置文件,定义 DOMAINS 字段后即可正常使用
如果服务器是一键安装并且旧版本就已经使用 JumpServer 开启了 HTTPS,则不需要进行任何更改。
需要使用 IP 地址来访问 JumpServer 的场景,可以根据自己的 IP 类型来填写 config.txt 配置文件中 DOMAINS 字段为公网 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="demo.jumpserver.org,172.17.200.191" # 使用 IP 和 域名一起访问
DOMAINS=
安装完成后 JumpServer 配置文件路径为: /opt/jumpserver/config/config.txt
cd /opt/jumpserver-installer-v3.7.1
# 启动
./jmsctl.sh start
# 停止
./jmsctl.sh down
# 卸载
./jmsctl.sh uninstall
# 帮助
./jmsctl.sh -h
2. 环境访问
安装成功后,通过浏览器访问登录 JumpServer
地址: http://:
用户名: admin
密码: admin
在线升级
中国大陆执行下列脚本:
cd /opt
wget https://resource.fit2cloud.com/jumpserver/installer/releases/download/v3.7.1/jumpserver-installer-v3.7.1.tar.gz
tar -xf jumpserver-installer-v3.7.1.tar.gz
cd jumpserver-installer-v3.7.1
其他地区执行下列脚本:
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v3.7.1/jumpserver-installer-v3.7.1.tar.gz
tar -xf jumpserver-installer-v3.7.1.tar.gz
cd jumpserver-installer-v3.7.1
然后执行更新,再启动:
./jmsctl.sh upgrade
# 启动 JumpServer 服务
./jmsctl.sh start
离线安装
1. 安装部署
离线安装相对于在线安装只是将下载安装包这步改成了手动上传,区别不大:
cd /opt
tar -xf jumpserver-offline-installer-v3.7.1-amd64.tar.gz
cd jumpserver-offline-installer-v3.7.1-amd64
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt
# JumpServer configuration file example.
#
# 如果不了解用途可以跳过修改此配置文件, 系统会自动填入
# 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/
################################## 镜像配置 ###################################
#
# 国内连接 docker.io 会超时或下载速度较慢, 开启此选项使用华为云镜像加速
# 取代旧版本 DOCKER_IMAGE_PREFIX
#
# DOCKER_IMAGE_MIRROR=1
################################## 安装配置 ###################################
#
# JumpServer 数据库持久化目录, 默认情况下录像、任务日志都在此目录
# 请根据实际情况修改, 升级时备份的数据库文件(.sql)和配置文件也会保存到该目录
#
VOLUME_DIR=/data/jumpserver
# 加密密钥, 迁移请保证 SECRET_KEY 与旧环境一致, 请勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 SECRET_KEY
#
SECRET_KEY=
# 组件向 core 注册使用的 token, 迁移请保持 BOOTSTRAP_TOKEN 与旧环境一致,
# 请勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 BOOTSTRAP_TOKEN
#
BOOTSTRAP_TOKEN=
# 日志等级 INFO, WARN, ERROR
#
LOG_LEVEL=ERROR
# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
#
DOCKER_SUBNET=192.168.250.0/24
# ipv6 nat, 正常情况下无需开启
# 如果宿主不支持 ipv6 开启此选项将会导致无法获取真实的客户端 ip 地址
#
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64
################################# MySQL 配置 ##################################
# 外置 MySQL 需要输入正确的 MySQL 信息, 内置 MySQL 系统会自动处理
#
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver
# 如果外置 MySQL 需要开启 TLS/SSL 连接, 参考 https://docs.jumpserver.org/zh/master/install/install_security/#ssl
#
# DB_USE_SSL=True
################################# Redis 配置 ##################################
# 外置 Redis 需要请输入正确的 Redis 信息, 内置 Redis 系统会自动处理
#
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
# 如果使用外置 Redis Sentinel, 请手动填写下面内容
#
# REDIS_SENTINEL_HOSTS=mymaster/192.168.100.1:26379,192.168.100.1:26380,192.168.100.1:26381
# REDIS_SENTINEL_PASSWORD=your_sentinel_password
# REDIS_PASSWORD=your_redis_password
# REDIS_SENTINEL_SOCKET_TIMEOUT=5
# 如果外置 Redis 需要开启 TLS/SSL 连接, 参考 https://docs.jumpserver.org/zh/master/install/install_security/#redis-ssl
#
# REDIS_USE_SSL=True
################################## 访问配置 ###################################
# 对外提供服务端口, 如果与现有服务冲突请自行修改
#
HTTP_PORT=80
SSH_PORT=2222
MAGNUS_MYSQL_PORT=33061
MAGNUS_MARIADB_PORT=33062
MAGNUS_REDIS_PORT=63790
################################# HTTPS 配置 #################################
# 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
#
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
#
# Nginx 文件上传下载大小限制
#
CLIENT_MAX_BODY_SIZE=4096m
################################## 组件配置 ###################################
# 组件注册使用, 默认情况下向 core 容器注册, 集群环境需要修改为集群 vip 地址
#
CORE_HOST=http://core:8080
PERIOD_TASK_ENABLED=True
# Core Session 定义,
# SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期,
# SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
#
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
# 可信任 DOMAINS 定义,
# 定义可信任的访问 IP, 请根据实际情况修改, 如果是公网 IP 请改成对应的公网 IP,
# DOMAINS="demo.jumpserver.org"
# DOMAINS="172.17.200.191"
# DOMAINS="demo.jumpserver.org,172.17.200.191"
DOMAINS=
# Lion 开启字体平滑, 优化体验
#
JUMPSERVER_ENABLE_FONT_SMOOTHING=True
################################# XPack 配置 #################################
# XPack 包, 开源版本设置无效
#
RDP_PORT=3389
MAGNUS_POSTGRESQL_PORT=54320
MAGNUS_ORACLE_PORTS=30000-30030
################################## 其他配置 ##################################
# 终端使用宿主 HOSTNAME 标识, 首次安装自动生成
#
SERVER_HOSTNAME=${HOSTNAME}
# 当前运行的 JumpServer 版本号, 安装和升级完成后自动生成
#
CURRENT_VERSION=
# 安装
./jmsctl.sh install
# 启动
./jmsctl.sh start
安装完成后 JumpServer 配置文件路径为: /opt/jumpserver/config/config.txt
cd jumpserver-offline-release-v3.7.1-amd64
# 启动
./jmsctl.sh start
# 停止
./jmsctl.sh down
# 卸载
./jmsctl.sh uninstall
# 帮助
./jmsctl.sh -h
2. 环境访问
安装成功后,通过浏览器访问登录 JumpServer
地址: http://:
用户名: admin
密码: admin
离线升级
从飞致云社区 下载最新的 linux/amd64 离线包, 并上传到部署服务器的 /opt 目录。
cd /opt
tar -xf jumpserver-offline-installer-v3.7.1-amd64.tar.gz
cd jumpserver-offline-installer-v3.7.1-amd64
./jmsctl.sh upgrade
./jmsctl.sh start
功能介绍
1. 页面展示
- 页面左侧为功能菜单区,第一次登录默认展示仪表盘界面。
- 右上方区域为功能按钮,可以快速跳转 站内信、Web 终端、工单、系统设置等功能。
- 可以在图示序号1的位置,进行功能视图的切换。
2. 功能说明
序号 | 名称 | 说明 |
---|---|---|
1 | 控制台 | 管理员操作入口,通过控制台,管理员可进行用户管理、资产管理、应用管理、账号管理、权限管理、访问控制等配置。 |
审计台 | 审计员操作入口,通过审计台,审计员可查看各会话的连接详细信息及各类型日志,组织审计员只能够看到该组织下的相关数据。 | |
工作台 | 普通用户操作入口,通过工作台,普通用户可以通过工作台看到自己有权限操作运维的资产。 | |
2 | 站内信 | 站内消息通知中心,接收工单处理提醒,高危命令告警等通知。 |
3 | Web 终端 | 资产运维操作入口,通过Web 终端进入资产运维页面,进行资产正常运维操作。 |
4 | 工单 | 工单入口,通过该按钮进入工单页面,查看提交的工单及待审批的功能等。 |
5 | 系统设置 | 系统设置入口,通过该按钮进入系统设置中,配置认证,安全等各类型系统参数。 |
6 | 帮助 | 帮助入口,通过该按钮进入帮助页面,可访问产品官网或下载系统工具。 |
7 | 个人信息 | 个人信息入口,点击该按钮,查看个人账号信息,用于API 调用的APIKey,当前用户连接资产使用的资产令牌以及退出登录的按钮等。 |
3. 常用功能
我就个人使用感觉给大家讲解下我所使用到的JumpServer
的核心功能,如何使用JumpServer
保证公司内部资产正常流转使用。
JumpServer
之后需要对JumpServer
进行一系列的配置,点击右上角的系统设置进行一系列的配置,比如堡垒机的域名、邮件服务器、认证设置(一般公司都会有统一认证服务)、安全设置等。总结
个人使用经验,JumpServer
很适合有内部服务器或者云服务器众多,后端、运维较多,有一定管理需求的企业,能够通过JumpServer
将服务器有效的管理起来,同时能够避免因为密码泄露造成分风险,本人有幸使用JumpServer
几年有余,目前一直保持更新,目前使用v3.7.1
最新版本。
如果在使用过程中有遇到问题,欢迎与作者交流~