Jumpserver 开源跳板机详解
一、核心特点
Jumpserver 是一款基于 Python/Django 开发的开源堡垒机(跳板机)系统,专为运维安全审计设计,主要特点包括:
-
核心功能
- 4A 规范支持:身份认证(Authentication)、授权控制(Authorization)、账号管理(Accounting)、安全审计(Auditing)。
- 多协议支持:支持 SSH、RDP、VNC、Telnet 等协议,可管理 Linux、Windows、数据库(MySQL/Redis/MongoDB)及 Kubernetes 集群。
- WebTerminal:提供网页端命令行操作界面,支持实时监控、批量命令执行(集成 Ansible)、文件上传下载。
-
安全与审计
- 会话录制与回放:所有操作均被录像,支持按用户、时间、命令等维度检索。
- 权限隔离:通过用户组、资产组、系统用户三级授权,实现细粒度权限控制。
- 敏感信息保护:密钥托管、密码加密存储,用户无需直接接触后端服务器密码。
-
扩展性与兼容性
- 分布式架构:支持多机房部署,中心节点与登录节点分离,可横向扩展。
- 二次开发友好:代码开源(GPL 协议),提供 RESTful API,便于与企业现有系统集成。
二、安装部署
1. 环境准备
- 操作系统:推荐 CentOS 7/8 或 Ubuntu 18.04+。
- 依赖项:Python 3.6+、MySQL 5.7+/MariaDB、Redis 5.0+、Docker(可选)。
- 网络配置:关闭防火墙和 SELinux,开放 80/443(Web)、2222(SSH)、8080(API)等端口。
2. 快速部署(Docker Compose 推荐)
version: '3'
services:
mysql:
image: mariadb:10.6
environment:
MYSQL_ROOT_PASSWORD: jumpserver
MYSQL_DATABASE: jumpserver
volumes:
- ./mysql:/var/lib/mysql
redis:
image: redis:6.2
command: redis-server --requirepass jumpserver
jumpserver:
image: jumpserver/jms_all:latest
ports:
- "80:80"
- "2222:2222"
environment:
SECRET_KEY: your_secret_key
BOOTSTRAP_TOKEN: your_bootstrap_token
DB_HOST: mysql
DB_PASSWORD: jumpserver
REDIS_HOST: redis
REDIS_PASSWORD: jumpserver
depends_on:
- mysql
- redis
启动命令:docker-compose up -d,访问 http://<服务器IP>:80 完成初始化。
3. 手动安装(源码编译)
-
安装依赖:
yum install -y git python3-pip mariadb-devel gcc openssl-devel pip3 install -U pip -
克隆项目:
git clone --depth=1 https://github.com/jumpserver/jumpserver.git cd jumpserver && ./jms install -
配置数据库与 Redis:
- 创建 MySQL 数据库
jumpserver,授权用户。 - 修改
config.yml配置数据库连接和密钥。
- 创建 MySQL 数据库
-
启动服务:
./jms start all -d # 后台启动所有组件
4. 高级配置
- 域名与 HTTPS:通过 Nginx 反向代理并配置 Let's Encrypt 证书。
- 多节点集群:使用 Docker Swarm 或 Kubernetes 扩展部署。
- 数据持久化:挂载
/opt/jumpserver/data目录,定期备份数据库和录像文件。
三、使用方法
-
初始化设置
- 管理员登录:默认账号
admin,密码admin,首次登录需修改。 - 系统配置:设置邮件服务器(用于发送密钥和通知)、LDAP/AD 集成(可选)。
- 管理员登录:默认账号
-
资产管理
- 添加资产组:按业务或环境分类(如
生产环境、测试环境)。 - 录入服务器:填写 IP、端口、管理账号(需提前在后端服务器创建)。
- 添加资产组:按业务或环境分类(如
-
用户与权限
- 创建用户:分配 Web 登录密码或 SSH 密钥,支持批量导入。
- 授权规则:绑定用户组、资产组、系统用户(如限制开发组仅能通过
appuser访问测试服务器)。
-
运维操作
- WebTerminal:通过浏览器直接连接服务器,支持多标签和会话共享。
- 批量命令:使用 Ansible 模块执行脚本、分发文件。
- 审计日志:查看操作录像、命令历史,支持导出为 CSV 或 PDF。
-
高级功能
- 数据库管理:通过 Magnus 组件连接 MySQL/Redis,实现 Web 端 SQL 操作。
- Kubernetes 集成:通过 KubeOperator 插件管理集群权限。
- API 自动化:调用 RESTful API 实现用户、资产管理的自动化脚本。
四、注意事项
- 依赖兼容性:MySQL 需使用 InnoDB 引擎,Python 依赖包可能因版本冲突需手动调整。
- 邮件服务:测试时推荐使用企业邮箱或 SMTP2GO 服务,避免 163/QQ 邮箱的发送限制。
- 安全加固:启用 MFA 双因素认证,定期轮换
SECRET_KEY和BOOTSTRAP_TOKEN。 - 性能优化:高并发场景下建议分离部署 Core(管理端)与 Coco(SSH 网关)组件。
通过 Jumpserver,企业可构建符合等保要求的运维审计体系,兼顾效率与安全。更多细节可参考 官方文档。