JumpServer-堡垒机
Github:https://github.com/jumpserver
文档:https://docs.jumpserver.org/zh
堡垒机简介
跳板机概述
跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作
跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人
堡垒机概述
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责
区别
- 堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能
- 给其它服务器推送sudo用户,并设置权限
- 多了一个用户行为监控的功能(有录像)
Jumpserver 简介
Jumpserver 概述
Jumpserver 是FIT2CLOUD(飞致云)旗下的软件产品,全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制 为互联网企业提供了认证,授权,审计,自动化运维等功能
JumpServer 产品特色
- 开源:零门槛,线上快速获取和安装;
- 分布式:轻松支持大规模并发访问;
- 无插件:仅需浏览器,极致的 Web Trminal 使用体验;
- 多云支持:一套系统,同时管理不同云上面的资产;
- 云端存储:审计录像云端存储,永不丢失;
- 多租户:一套系统,多个子公司和部门同时使用;
- 多应用支持:数据库,Windows 远程应用,Kubernetes。
JumpServer 堡垒机支持的资产类型
- SSH (Linux / Unix / 网络设备等)
- Windows (Web 方式连接 / 原生 RDP 连接)
- 数据库 (MySQL / MariaDB / Oracle / SQLServer / PostgreSQL / ClickHouse 等)
- NoSQL (Redis / MongoDB 等)
- GPT (ChatGPT 等)
- 云服务 (Kubernetes / VMware vSphere 等)
- Web 站点 (各类系统的 Web 管理后台)
- 应用 (通过 Remote App 连接各类应用)
Jumpserver组件
- Jumpserver:管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API
- Restful API:服务的API接口
- Coco:实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发
- WebTerminal:基于 Web 的 Linux 终端
- Luna:现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等
- Guacamole:Apache 跳板机项目,Jumpserver 使用其组件实现 RDP 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用
- Jumpserver-Python-SDK:Jumpserver API Python SDK,Coco 目前使用该 SDK 与 Jumpserver API 交互
JumpServer-部署
环境要求
操作系统
| 操作系统 | 架构 | Linux 内核 | 软件要求 | 最小化硬件配置 |
|---|---|---|---|---|
| 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 |
数据库
JumpServer 需要使用 PostgreSQL、MySQL 或 MariaDB 存储数据,使用 Redis 缓存数据
| 名称 | 版本 | 默认字符集 | 默认字符编码 | TLS/SSL |
|---|---|---|---|---|
| PostgreSQL | >= 9.6 | UTF8 | en_US.utf8 | 是 |
| MySQL | >= 5.7 | utf8 | utf8_general_ci | 是 |
| MariaDB | >= 10.6 | utf8mb3 | utf8mb3_general_ci | 是 |
| 名称 | 版本 | Sentinel | Cluster | TLS/SSL |
|---|---|---|---|---|
| Redis | >= 6.0 | 是 | 否 | 是 |
部署模式
目前Jumpserver支持以下部署方案:
- 单机部署
- 高可用部署
- 集群部署
- 分布式部署
单机部署
JumpServer单机部署并不是单单指采用单台机器部署,而是包含了三大组件都为单节点部署(即组件单节点),所以JumpServer的单机部署分为All In One方式和独立部署方式。
是否采用单机部署主要取决于两方面因素:
- 访问资产并发数量,也就是同时在线会话数
- 整体管理的资产数量
| 并发数 | 资产数 | 50以下 | 50-250 | 250-500 | 500+ |
|---|---|---|---|---|---|
| 字符并发 0-50;图形并发 0-20 | All in one | All in one | All in one | 独立节点 | |
| 字符并发 50-100;图形并发 20-50 | 独立节点 | 独立节点 | 独立节点 | 独立节点 |
高可用部署
同单机部署一样,高可用部署也分为整体高可用(All in one高可用)和独立节点高可用。
高可用部署场景和单机部署场景的本质区别在于数据的完整性和服务连续性要求不一样。高可用部署可以在单机部署场景上满足以下两个企业需求:
- 数据库数据和录像数据可以实时备份;
- 服务可以连续提供,当其中主节点有问题时可以立即切换备节点继续提供服务。
| 并发数 | 资产数 | 50以下 | 50-250 | 250-500 | 500+ |
|---|---|---|---|---|---|
| 需要数据实时备份和连续性服务能力 | |||||
| 字符并发 0-50;图形并发 0-20 | All in one 高可用 | All in one 高可用 | All in one 高可用 | 独立节点高可用 | |
| 字符并发 50-100;图形并发 20-50 | 独立节点高可用 | 独立节点高可用 | 独立节点高可用 | 独立节点高可用 |
集群部署模式
JumpServer集群部署主要用于资产访问大并发场景,目的在于提高会话处理能力。
集群部署同样支持业务的高可用,具备以下特点:
- 资产较多,会话并发大的情况(字符会话并发超过200以上,图形会话超过100以上)。
- 资产规模增加快,并发会并发话量增加快,需要JumpServer的处理能力能够随着资产规模的增加而能够快速扩容;
- 任何节点宕机不影响平台的正常使用,保证可用节点数1+以上就能保证业务正常访问。
集群的规模可以随着访问并数的增加而动态扩容增加,和资产数量无直接关系。所以是否采用集群部署主要取决于访问会话并发数。
| 并发数 | 100-300 | 300-600 | 600-1000 | 每增加 300-500 并发 |
|---|---|---|---|---|
| 需要大规模并发处理能力和连续性服务能力 | ||||
| 集群部署模式(集群 JumpServer 节点数) | 2 | 3 | 4 | 节点数加 1 |
分布式部署
JumpServer分布式部署场景不同于其他场景部署。分布式部署主要用于资产多地域或者网多络区域分布,并且对访问运维入口也有相应的要求。
JumpServer分布式部署具备以下特点:
- 用户的资产分布在不同的区域(网络)位置,需要通过堡垒机统一管理的同时,并且不同区域的人员可以就近访问堡垒机;
- 不同区域的资产、用户、权限、审计等,可以由管理员统一设置与管理,也可以由管理员设置多租户模式,进行管理权限分管。
当然如果不同的地域资产并发也交较多或者也要求业务连续性等。分布式部署可以扩展为集群分布式部署或者高可用分布式部署
服务部署
在线安装
在线安装方式使用的是Docker部署,会拉取Redis、postgres和其他组件
cd /opt
wget https://resource.fit2cloud.com/jumpserver/installer/releases/download/v4.10.7/jumpserver-installer-v4.10.7.tar.gz
tar -xf jumpserver-installer-v4.10.7.tar.gz
cd jumpserver-installer-v4.10.7
# 安装
./jmsctl.sh install
# 启动
./jmsctl.sh start
# 安装完成后 JumpServer 配置文件路径为: /opt/jumpserver/config/config.txt
# 启动
./jmsctl.sh start
# 停止
./jmsctl.sh down
# 卸载
./jmsctl.sh uninstall
# 帮助
./jmsctl.sh -h
# 安装成功后,通过浏览器访问登录 JumpServer
地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin
密码: ChangeMe离线安装
从飞致云社区 下载最新的 linux/amd64 离线包, 并上传到部署服务器的 /opt 目录
cd /opt
tar -xf jumpserver-ce-v4.10.7-x86_64.tar.gz
cd jumpserver-ce-v4.10.7-x86_64
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
config-example.txt
# 安装
./jmsctl.sh install
# 启动
./jmsctl.sh start
# 停止
./jmsctl.sh down
# 卸载
./jmsctl.sh uninstall
# 帮助
./jmsctl.sh -hJumpServer 操作
控制台
访问控制
命令过滤
这里可以设置禁用危险命令,需要用户重新登录才可以生效。
1. 创建命令组
名称:危险命令
类型:选择命令
内容:
bashrm reboot忽略大小写:可以勾选
2. 创建命令过滤
- 名称:危险命令
- 优先级:1-100越小越优先
- 用户:可以选择全部用户
- 资产:可以选择全部资产
- 账号:可以选择全部账号(指的是连接资源的账号)
- 命令组:选择要操作的命令组
- 动作:根据实际情况选择拒绝或者警告等
- 激活:勾选
