一篇文章带你了解一款强大的开源堡垒机---Jumpserver

330 阅读4分钟

Jumpserver 开源跳板机详解


一、核心特点

Jumpserver 是一款基于 Python/Django 开发的开源堡垒机(跳板机)系统,专为运维安全审计设计,主要特点包括:

  1. 核心功能

    • 4A 规范支持:身份认证(Authentication)、授权控制(Authorization)、账号管理(Accounting)、安全审计(Auditing)。
    • 多协议支持:支持 SSH、RDP、VNC、Telnet 等协议,可管理 Linux、Windows、数据库(MySQL/Redis/MongoDB)及 Kubernetes 集群。
    • WebTerminal:提供网页端命令行操作界面,支持实时监控、批量命令执行(集成 Ansible)、文件上传下载。
  2. 安全与审计

    • 会话录制与回放:所有操作均被录像,支持按用户、时间、命令等维度检索。
    • 权限隔离:通过用户组、资产组、系统用户三级授权,实现细粒度权限控制。
    • 敏感信息保护:密钥托管、密码加密存储,用户无需直接接触后端服务器密码。
  3. 扩展性与兼容性

    • 分布式架构:支持多机房部署,中心节点与登录节点分离,可横向扩展。
    • 二次开发友好:代码开源(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. 手动安装(源码编译)
  1. 安装依赖

    yum install -y git python3-pip mariadb-devel gcc openssl-devel
    pip3 install -U pip
    
  2. 克隆项目

    git clone --depth=1 https://github.com/jumpserver/jumpserver.git
    cd jumpserver && ./jms install
    
  3. 配置数据库与 Redis

    • 创建 MySQL 数据库 jumpserver,授权用户。
    • 修改 config.yml 配置数据库连接和密钥。
  4. 启动服务

    ./jms start all -d  # 后台启动所有组件
    
4. 高级配置
  • 域名与 HTTPS:通过 Nginx 反向代理并配置 Let's Encrypt 证书。
  • 多节点集群:使用 Docker Swarm 或 Kubernetes 扩展部署。
  • 数据持久化:挂载 /opt/jumpserver/data 目录,定期备份数据库和录像文件。

三、使用方法

  1. 初始化设置

    • 管理员登录:默认账号 admin,密码 admin,首次登录需修改。
    • 系统配置:设置邮件服务器(用于发送密钥和通知)、LDAP/AD 集成(可选)。
  2. 资产管理

    • 添加资产组:按业务或环境分类(如 生产环境测试环境)。
    • 录入服务器:填写 IP、端口、管理账号(需提前在后端服务器创建)。
  3. 用户与权限

    • 创建用户:分配 Web 登录密码或 SSH 密钥,支持批量导入。
    • 授权规则:绑定用户组、资产组、系统用户(如限制开发组仅能通过 appuser 访问测试服务器)。
  4. 运维操作

    • WebTerminal:通过浏览器直接连接服务器,支持多标签和会话共享。
    • 批量命令:使用 Ansible 模块执行脚本、分发文件。
    • 审计日志:查看操作录像、命令历史,支持导出为 CSV 或 PDF。
  5. 高级功能

    • 数据库管理:通过 Magnus 组件连接 MySQL/Redis,实现 Web 端 SQL 操作。
    • Kubernetes 集成:通过 KubeOperator 插件管理集群权限。
    • API 自动化:调用 RESTful API 实现用户、资产管理的自动化脚本。

四、注意事项

  1. 依赖兼容性:MySQL 需使用 InnoDB 引擎,Python 依赖包可能因版本冲突需手动调整。
  2. 邮件服务:测试时推荐使用企业邮箱或 SMTP2GO 服务,避免 163/QQ 邮箱的发送限制。
  3. 安全加固:启用 MFA 双因素认证,定期轮换 SECRET_KEYBOOTSTRAP_TOKEN
  4. 性能优化:高并发场景下建议分离部署 Core(管理端)与 Coco(SSH 网关)组件。

通过 Jumpserver,企业可构建符合等保要求的运维审计体系,兼顾效率与安全。更多细节可参考 官方文档