Appearance
堡垒机部署与配置
一、JumpServer 概述
JumpServer 是一款开源的堡垒机(Bastion Host)系统,由广受欢迎的开源社区维护,采用 Python / Django 开发,遵循 GNU GPL v3 协议。其主要功能包括:
- 身份认证:支持本地认证、LDAP/AD、OAuth2、OpenID Connect 等。
- 权限控制:基于角色的细粒度权限管理。
- 资产纳管:支持 SSH、RDP、VNC、Telnet、Kubernetes 等协议。
- 操作审计:全程录像,支持回放和日志检索。
- 指令拦截:自定义高危命令拦截规则。
二、部署方案
2.1 环境要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核 |
| 内存 | 4 GB | 8 GB |
| 磁盘 | 50 GB | 100 GB+(用于存储审计日志) |
| 操作系统 | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
| 数据库 | MySQL 5.7+ / MariaDB 10.2+ | MySQL 8.0 |
| Redis | 6.x | 6.x / 7.x |
2.2 快速部署(Docker Compose 方式)
推荐使用 Docker Compose 一键部署,便于维护和升级。
bash
# 1. 安装 Docker 和 Docker Compose
curl -fsSL https://get.docker.com | bash
systemctl enable --now docker
# 2. 获取 JumpServer 部署脚本
git clone --depth=1 https://github.com/jumpserver/jumpserver-release.git /opt/jumpserver
cd /opt/jumpserver
# 3. 生成随机密钥
echo -e "SECRET_KEY=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50)\nBOOTSTRAP_TOKEN=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)" > .env
# 4. 启动所有服务
docker compose -f docker-compose.yml up -d2.3 手动部署(生产环境推荐)
bash
# 1. 安装依赖
apt-get update
apt-get install -y python3 python3-pip python3-venv nginx redis-server
# 2. 安装 MySQL
apt-get install -y mysql-server
mysql -e "CREATE DATABASE jumpserver DEFAULT CHARACTER SET utf8mb4;"
mysql -e "CREATE USER 'jumpserver'@'localhost' IDENTIFIED BY 'YourPassword';"
mysql -e "GRANT ALL PRIVILEGES ON jumpserver.* TO 'jumpserver'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"
# 3. 下载 JumpServer
cd /opt
git clone --depth=1 https://github.com/jumpserver/jumpserver.git
cd jumpserver
# 4. 配置 JumpServer
cp config_example.yml config.yml编辑 config.yml 配置文件:
yaml
# 核心配置
SECRET_KEY: 'YourGeneratedSecretKey'
BOOTSTRAP_TOKEN: 'YourBootstrapToken'
# 数据库配置
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: 'YourPassword'
DB_NAME: jumpserver
# Redis 配置
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379
REDIS_PASSWORD: ''
# 服务配置
HTTP_PORT: 80802.4 部署验证
bash
# 检查服务状态
docker compose ps
# 查看运行日志
docker compose logs -f
# 访问 Web 界面
# 浏览器打开 http://<服务器IP>:8080
# 默认管理员账号:admin / admin三、用户管理
3.1 用户类型
| 用户类型 | 描述 | 权限范围 |
|---|---|---|
| 系统管理员 | 全局管理 | 用户管理、资产管理、系统设置、审计查看 |
| 组织管理员 | 组织级别管理 | 本组织的用户和资产管理 |
| 普通用户 | 运维人员 | 访问被授权的资产,执行运维操作 |
| 审计员 | 审计人员 | 查看操作日志和录像,不可进行操作 |
3.2 创建用户
bash
# 通过 API 创建用户(自动化运维场景)
curl -s -X POST http://<jumpserver>/api/v1/users/ \
-H "Authorization: Bearer <AccessToken>" \
-H "Content-Type: application/json" \
-d '{
"username": "zhangsan",
"name": "张三",
"email": "zhangsan@example.com",
"role": "User",
"password": "InitialPassword123"
}'3.3 LDAP/AD 集成
在 JumpServer 界面中配置:系统设置 -> 认证设置 -> LDAP 设置
yaml
# LDAP 配置参数
AUTH_LDAP_SERVER_URI: "ldap://ldap.example.com:389"
AUTH_LDAP_BIND_DN: "cn=admin,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD: "YourLDAPPassword"
AUTH_LDAP_SEARCH_OU: "ou=users,dc=example,dc=com"
AUTH_LDAP_SEARCH_FILTER: "(uid=%(user)s)"
AUTH_LDAP_USER_ATTR_MAP:
username: uid
name: cn
email: mail四、资产授权
4.1 资产纳管
JumpServer 支持纳管以下类型的资产:
| 资产类型 | 协议 | 端口 |
|---|---|---|
| Linux 服务器 | SSH | 22 |
| Windows 服务器 | RDP | 3389 |
| 网络设备 | SSH/Telnet | 22/23 |
| 数据库 | MySQL/PostgreSQL | 3306/5432 |
| Kubernetes | K8s API | 6443 |
4.2 添加资产
yaml
# 通过 API 批量添加资产
curl -s -X POST http://<jumpserver>/api/v1/assets/hosts/ \
-H "Authorization: Bearer <AccessToken>" \
-H "Content-Type: application/json" \
-d '{
"hostname": "web-server-01",
"ip": "192.168.1.10",
"port": 22,
"platform": "Linux",
"protocols": ["ssh/22"],
"comment": "生产环境 Web 服务器"
}'4.3 授权策略
创建授权规则:权限管理 -> 资产授权 -> 创建授权规则
yaml
# 授权规则配置示例
name: "开发人员-Linux服务器-授权"
users:
- group: "开发组"
assets:
- group: "开发服务器"
actions:
- connect # 连接
- upload_file # 上传文件
- download_file # 下载文件
- copy_file # 复制粘贴
- toggle_tunnel # 隧道转发
date_start: "2026-01-01"
date_expired: "2026-12-31"
is_active: true五、审计功能
5.1 会话审计
JumpServer 提供完整的会话审计能力:
- 实时会话监控:管理员可实时查看正在进行的运维会话。
- 会话录像:所有 SSH/Telnet/RDP 会话全程录像,支持回放。
- 命令记录:记录每条执行命令及其返回结果。
- 文件传输记录:记录上传和下载的文件信息。
5.2 会话管理命令
bash
# 查看活跃会话(通过 API)
curl -s http://<jumpserver>/api/v1/terminal/sessions/ \
-H "Authorization: Bearer <AccessToken>"
# 强制终止指定会话
curl -s -X DELETE http://<jumpserver>/api/v1/terminal/sessions/<session-id>/ \
-H "Authorization: Bearer <AccessToken>"5.3 审计日志导出
bash
# 导出操作日志(CSV 格式)
curl -s -o audit_logs.csv \
"http://<jumpserver>/api/v1/audits/operate-logs/?date_from=2026-01-01&date_to=2026-07-08" \
-H "Authorization: Bearer <AccessToken>"
# 导出会话录像
curl -s -o session_replay.zip \
"http://<jumpserver>/api/v1/terminal/sessions/<session-id>/replay/" \
-H "Authorization: Bearer <AccessToken>"六、运维操作记录
6.1 高危命令拦截
JumpServer 支持自定义命令过滤器,拦截高危操作。
yaml
# 命令过滤器配置 (系统设置 -> 安全设置 -> 命令过滤)
filter_rules:
- type: "regex"
pattern: "rm\\s+-rf\\s+/"
action: "deny" # 拒绝执行
alert: true # 告警通知
- type: "regex"
pattern: "drop\\s+database"
action: "deny"
alert: true
- type: "regex"
pattern: "shutdown\\s+now"
action: "deny"
alert: true
- type: "regex"
pattern: "init\\s+0"
action: "deny"
alert: false6.2 运维操作流程
标准运维流程通过堡垒机执行:
bash
# 1. 运维人员通过 Web 终端连接
# 浏览器访问 JumpServer Web 界面 -> 我的资产 -> 连接
# 2. 或通过 SSH 客户端连接堡垒机
ssh -p 2222 zhangsan@jumpserver.example.com
# 3. 选择目标资产
# 登录后显示授权资产列表,输入编号选择目标
# 4. 执行运维操作,所有操作自动记录
# 5. 操作完成后断开连接
exit6.3 多组织支持
JumpServer 支持多租户(组织)架构,适用于集团化企业:
- 每个组织拥有独立的资产、用户和授权策略。
- 系统管理员可跨组织管理。
- 组织管理员只能管理本组织资源。
七、备份与恢复
7.1 数据库备份
bash
#!/bin/bash
# JumpServer 数据库备份脚本
# 保存路径:/usr/local/bin/jumpserver-backup.sh
BACKUP_DIR="/data/backup/jumpserver"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="jumpserver"
DB_USER="jumpserver"
DB_PASSWORD="YourPassword"
mkdir -p "$BACKUP_DIR"
# 备份 MySQL 数据库
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" | \
gzip > "$BACKUP_DIR/jumpserver_db_$DATE.sql.gz"
# 保留最近 30 天的备份
find "$BACKUP_DIR" -name "jumpserver_db_*.sql.gz" -mtime +30 -delete
echo "Backup completed: $BACKUP_DIR/jumpserver_db_$DATE.sql.gz"7.2 录像文件备份
JumpServer 的会话录像默认存储在 /opt/jumpserver/data/media/replay/ 目录下,建议定期归档到对象存储或 NAS。
八、最佳实践
8.1 安全配置
- 强制 HTTPS:配置 Nginx 反向代理,启用 TLS 1.2/1.3。
- 定期更换密钥:定期更新 SECRET_KEY 和 BOOTSTRAP_TOKEN。
- IP 白名单:限制可访问 JumpServer 的源 IP 范围。
- 会话超时:设置闲置会话超时断开,建议 15 分钟。
8.2 高可用部署
- 使用外部 MySQL 主从集群。
- 使用外部 Redis Sentinel 集群。
- 部署多台 JumpServer 节点,通过负载均衡分发。
- 共享 NAS 或对象存储存放录像文件。
8.3 日常维护
bash
# 1. 检查服务状态
docker compose ps
# 2. 查看日志
docker compose logs -f core
# 3. 升级 JumpServer
cd /opt/jumpserver
git pull
docker compose pull
docker compose down
docker compose up -d
# 4. 清理旧的 Docker 镜像
docker image prune -a -f参考文档:JumpServer 官方文档 | JumpServer GitHub 仓库

