一、环境准备
bash
# 更新系统
sudo apt update && sudo apt upgrade -y # 安装 Docker sudo apt install -y docker.io docker-compose sudo systemctl enable --now docker # 配置 Docker 加速器(国内环境) sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOF sudo systemctl restart docker # 创建部署目录 sudo mkdir -p /opt/jumpserver && cd /opt/jumpserver
二、一键部署 JumpServer
bash
# 下载官方 Docker-Compose 文件
sudo curl -sSL https://github.com/jumpserver/jumpserver/releases/latest/download/docker-compose.yml -o docker-compose.yml
# 下载环境配置文件模板 sudo curl -sSL https://github.com/jumpserver/installer/releases/latest/download/config-example.txt -o config-example.txt # 生成配置文件(根据提示修改) sudo cp config-example.txt .env sudo nano .env
ini
# 关键配置项示例
## 设置强密码!!!
SECRET_KEY=your_strong_secret_key_32_chars
BOOTSTRAP_TOKEN=your_bootstrap_token_16_chars ## 数据库配置 DB_PASSWORD=StrongDBPass123! ## 邮件配置(必填) EMAIL_HOST=smtp.example.com EMAIL_PORT=587 EMAIL_HOST_USER=admin@example.com EMAIL_HOST_PASSWORD=EmailPass123! EMAIL_FROM=admin@example.com ## 域名配置 DOMAINS=jumpserver.yourdomain.com
bash
# 启动 JumpServer
sudo docker-compose up -d
# 查看启动状态
sudo docker-compose ps
预期输出:
text
Name Command State Ports
--------------------------------------------------------------------------------
jumpserver-core /opt/startup.sh Up 0.0.0.0:80->8080/tcp
jumpserver-koko /opt/entrypoint.sh Up 5000/tcp, 0.0.0.0:2222->2222/tcp
jumpserver-mariadb docker-entrypoint.sh mysqld Up 3306/tcp
jumpserver-redis docker-entrypoint.sh redis ... Up 6379/tcp
jumpserver-web /init Up 0.0.0.0:443->8443/tcp
三、初始配置与访问
-
访问控制台:
-
浏览器访问:
https://<服务器IP>
或https://jumpserver.yourdomain.com
-
使用默认管理员账号:
admin
/admin
-
-
首次登录强制修改密码:
bash
# 如果忘记修改密码,可通过命令行重置 sudo docker exec -it jumpserver-web python /opt/jumpserver/apps/manage.py changepassword admin
-
基本配置:
-
系统设置 → 基本设置 → 配置系统名称和域名
-
系统设置 → 邮件设置 → 测试邮件发送
-
系统设置 → 安全设置 → 配置密码策略和MFA
-
四、数据备份与恢复
1. 自动备份脚本
bash
#!/bin/bash
# /opt/jumpserver/backup.sh
BACKUP_DIR="/backup/jumpserver/$(date +%Y%m%d)" mkdir -p $BACKUP_DIR # 备份数据库 sudo docker exec jumpserver-mariadb mysqldump -uroot -p"${DB_PASSWORD}" jumpserver > $BACKUP_DIR/jumpserver.sql # 备份配置文件 sudo cp /opt/jumpserver/{.env,docker-compose.yml} $BACKUP_DIR/ # 备份持久化数据 sudo tar -czf $BACKUP_DIR/volumes.tar.gz \ /opt/jumpserver/core/data \ /opt/jumpserver/koko/data \ /opt/jumpserver/web/data # 加密压缩 gpg --batch --passphrase "YourBackupPass" --symmetric $BACKUP_DIR/* # 保留30天备份 find /backup/jumpserver -type d -mtime +30 -exec rm -rf {} \;
2. 设置定时任务
bash
sudo crontab -e
cron
# 每天凌晨2点备份
0 2 * * * /bin/bash /opt/jumpserver/backup.sh
3. 灾难恢复流程
bash
# 1. 恢复数据库
gunzip -c jumpserver.sql.gz | sudo docker exec -i jumpserver-mariadb mysql -uroot -p"${DB_PASSWORD}" jumpserver # 2. 恢复配置文件 sudo cp /backup/jumpserver/20230101/{.env,docker-compose.yml} /opt/jumpserver/ # 3. 恢复持久化数据 sudo tar -xzf volumes.tar.gz -C / # 4. 重启服务 sudo docker-compose down && sudo docker-compose up -d
五、扩展功能配置
1. 集成 LDAP/AD 认证
-
登录 JumpServer → 系统设置 → 认证设置 → LDAP
-
配置参数:
ini
LDAP服务器:ldap://your-ad-server 绑定DN:cn=admin,dc=example,dc=com 密码:LDAP_Password 用户OU:ou=users,dc=example,dc=com 用户过滤器:(objectClass=person)
-
启用 "同步用户" 和 "创建用户"
2. 启用 Web Terminal 审计
yaml
# 修改 docker-compose.yml
services:
web:
environment: # 启用会话录像 ENABLE_LION: "true" # 配置录像存储路径 LION_VIDEO_DIR: "/opt/lion/video" volumes: - ./lion:/opt/lion
3. 配置短信认证
bash
# 安装短信插件
sudo docker exec -it jumpserver-web pip install jumpserver-sms-aliyun # 重启服务 sudo docker-compose restart web
在控制台:系统设置 → 短信设置 → 配置阿里云短信服务
4. 对接云平台自动同步资产
bash
# 创建同步脚本 /opt/jumpserver/sync_assets.sh
#!/bin/bash
# AWS 示例
docker exec jumpserver-web python manage.py sync_instance_from_aws \ --access-key-id YOUR_AWS_KEY \ --secret-access-key YOUR_AWS_SECRET \ --regions us-east-1
设置定时同步:
cron
# 每小时同步一次
0 * * * * /opt/jumpserver/sync_assets.sh
六、高可用部署(生产环境)
yaml
# docker-compose-ha.yml
version: '3.6'
services: core: image: jumpserver/core:latest deploy: replicas: 3 web: image: jumpserver/web:latest deploy: replicas: 2 db: image: mariadb:10.6 environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: jumpserver volumes: - db-data:/var/lib/mysql deploy: placement: constraints: [node.role == manager] volumes: db-data: driver: local
启动命令:
bash
sudo docker stack deploy -c docker-compose-ha.yml jumpserver
七、安全加固措施
1. 防火墙配置
bash
sudo ufw default deny incoming
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw allow 2222/tcp # Koko SSH sudo ufw enable
2. 安全配置
bash
# 修改 SSH 端口(可选)
sudo nano /opt/jumpserver/docker-compose.yml
yaml
services:
koko:
ports: - "22222:2222" # 改为非常用端口
3. 定期安全扫描
bash
# 使用 Trivy 扫描容器漏洞
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:0.18.3 jumpserver/core:latest
八、注意事项
-
版本升级:
bash
# 1. 备份数据 # 2. 停止服务 sudo docker-compose down # 3. 更新镜像 sudo docker-compose pull # 4. 启动服务 sudo docker-compose up -d
-
性能监控:
bash
# 安装 cAdvisor sudo docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest
访问
http://<服务器IP>:8080
监控容器资源 -
证书管理:
-
使用 Let's Encrypt 自动续期:
bash
sudo docker run -it --rm --name certbot \ -v "/etc/letsencrypt:/etc/letsencrypt" \ -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \ certbot/certbot renew
-
-
常见问题排查:
bash
# 查看日志 sudo docker-compose logs -f core sudo docker-compose logs -f web # 数据库连接测试 sudo docker exec -it jumpserver-mariadb mysql -uroot -p${DB_PASSWORD} # 重置管理员密码 sudo docker exec -it jumpserver-web python manage.py changepassword admin
-
合规性要求:
-
开启所有操作的审计日志
-
配置会话录像保留180天
-
启用双因素认证(MFA)
-
定期审查授权规则
-
通过以上步骤,您将获得一个安全、可靠的企业级堡垒机系统。建议每月执行以下维护任务:
-
安全补丁更新:
sudo docker-compose pull
-
备份恢复测试
-
审计日志审查
-
漏洞扫描与修复
-
授权策略复核
JumpServer 官方文档:https://docs.jumpserver.org/