ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Jumpserver堡垒机部署与运维审计实战指南

Jumpserver堡垒机部署与运维审计实战指南 Jumpserver 是目前使用最广的开源堡垒机项目之一也是企业运维中做账号管理、权限控制、操作审计的标配工具。如果你正在准备运维面试、刚入职负责一堆 Linux 服务器或者公司要过等保/合规审计这个项目基本绕不开。它解决的问题非常具体团队多人共管服务器时账号密码怎么集中管理谁在什么时间执行过什么命令高危操作能不能实时拦截这些都需要一套可追溯、可审计的机制堡垒机就是干这个的。这篇文章直接给你一条完整落地路径从 Linux 环境准备、Docker 部署 Jumpserver、Web 界面初始化到创建用户、添加资产、配置授权、Web Terminal 连接测试、操作录像审计再到 API 调用和批量运维场景。全程以实际操作步骤为主命令可以直接复制使用最后附带常见问题排查清单。适合刚入行的运维新人、需要独立搭建运维审计体系的工程师以及正在做等保整改的项目负责人。1. Jumpserver 核心能力速览Jumpserver 由飞致云团队维护开源免费社区活跃度高是目前国内使用率最高、文档最完善的开源堡垒机项目之一。它采用组件化架构部署方式以 Docker 容器编排为主整体能力覆盖认证、授权、审计三个核心环节。能力项说明项目类型开源堡垒机 / 运维安全审计系统主要功能Web 终端、SSH 代理、RDP/VNC 资产连接、权限控制、命令过滤、操作录像、会话审计、用户与资产批量管理部署方式Docker Compose 一键编排也可源码部署推荐硬件4 核 CPU、8G 内存起步磁盘建议 50G 以上录像和日志会持续增长依赖组件MySQL、Redis、Core、Koko、Lion、Nginx 等容器组件支持平台CentOS、Ubuntu、Debian 等主流 Linux 发行版也支持统信 UOS、麒麟等国产化系统默认端口Web 80/443Koko SSH 组件 2222 端口接口能力支持 REST API可对接资产、用户、授权等数据批量能力支持资产批量导入、用户批量创建、批量授权配置适合场景企业服务器统一入口、操作审计追溯、等保合规整改、团队协作权限隔离从部署角度看Jumpserver 对硬件要求不高常见的内网服务器就能跑真正的资源消耗点在后期的录像存储和高并发会话上。如果只是几十台资产、几个运维人员使用低配虚拟机也足够。2. 适用场景与使用边界Jumpserver 不是万能的它有非常明确的适用场景也有必须提前考虑的使用边界。适合它的场景主要有四类。第一企业内有大量 Linux/Windows 服务器团队多人需要登录操作但又不希望所有人都知道 root 密码Jumpserver 可以做到账号统一托管用户不需要接触真实服务器密码。第二公司需要满足等保或其他合规审计要求必须留存操作日志和录像Jumpserver 的会话录像和命令审计能直接支撑这一点。第三多团队共用一套服务器环境时需要做权限分区开发、测试、运维各看各的资产。第四人员流动频繁员工离职后不会因为共享账号泄漏而遗留安全隐患。不适合的场景也需要说清楚。如果只有一两台服务器、一个人管理Jumpserver 的部署和运维成本反而是负担直接 SSH 更高效。如果是超大规模集群、需要高可用和水平扩展需要额外设计负载均衡和数据库集群单机部署不满足要求。另外Jumpserver 的定位是入口和审计它本身不替代配置管理工具批量执行复杂任务时通常要结合 Ansible、SaltStack 等自动化平台使用。使用边界方面必须强调合规和授权问题。Jumpserver 的录像会记录终端上出现的所有内容包括可能的敏感数据这些录像和日志数据的访问权限要严格控制不建议给普通用户开放录像导出权限。部署到生产环境前要确认公司内部的账号管理、数据隐私要求涉及云主机时也要符合云厂商的使用规范。所有操作审计都是为了保障系统安全不能用于非授权监控。3. Jumpserver 本地部署环境准备部署 Jumpserver 前先把环境和前置条件确认一遍。这里给出一套通用检查清单按顺序操作即可。3.1 操作系统推荐使用 CentOS 7.9、Ubuntu 20.04/22.04、Debian 11/12 这类主流服务器系统。Jumpserver 官方对较新的系统版本支持更好如果你的服务器还停留在 CentOS 6 或更老版本建议先升级系统再部署。国产化环境使用统信 UOS、麒麟等系统也可以部署原理一致只是包管理器命令有差异。3.2 硬件与存储最低配置建议 4 核 CPU、8G 内存、50G 磁盘。这个配置不是随便写的Jumpserver 部署后会拉起 MySQL、Redis、Core、Koko、Lion、Nginx 等多个容器内存占用起步就在 2G 到 3G 左右并且随着在线会话数增加会继续上涨。磁盘方面审计录像每分钟大约会产生几百 KB 到几 MB 的日志长时间运行后增长明显如果资产量大建议为录像目录单独挂载数据盘。3.3 Docker 环境Jumpserver 最常用的部署方式依赖 Docker 和 Docker Compose。Docker 版本建议 19.03 以上Docker Compose 建议使用 v2 版本。现在安装 Docker 时会默认安装 compose 插件但如果你用的是旧机器可能只有 docker-compose 1.x需要升级。# 查看 Docker 版本 docker --version # 查看 Compose 插件版本 docker compose version # 如果是旧版 docker-compose需要升级或改用 docker compose 命令 docker-compose --version3.4 网络与端口部署机器需要能正常访问外网下载安装包虽然安装包可以离线导入但在线安装最省事。Jumpserver 默认使用 80 端口提供 Web 访问2222 端口用于 SSH 组件通信。如果你本机已经有 Nginx、Tomcat 或其他服务占用了这些端口要在安装配置阶段改掉否则启动会失败。# 检查 80 和 2222 端口是否被占用 ss -lntp | grep -E :80|:22223.5 时间同步审计系统的时间必须准确否则录像回放和操作日志的时间戳会错乱。部署前安装并启用 NTP 时间同步服务。# Ubuntu / Debian apt install -y ntpdate ntpdate ntp.aliyun.com # CentOS / RHEL yum install -y ntpdate ntpdate ntp.aliyun.com4. Jumpserver 安装部署与启动方式环境准备好后开始正式部署。这里推荐使用官方安装器方式它会把需要的容器全部编排好比手动调整 docker-compose 文件省心很多。4.1 更新系统基础软件先确保系统软件包是最新的避免因依赖库过旧导致安装失败。# Ubuntu / Debian apt update apt upgrade -y # CentOS / RHEL yum update -y4.2 安装 Docker 与 Docker Compose 插件不同发行版安装 Docker 的命令不同下面以 Ubuntu 为例。如果使用 CentOS把包管理器换成 yum 即可。# 安装 Docker 依赖 apt install -y apt-transport-https ca-certificates curl software-properties-common # 添加 Docker 官方源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable /etc/apt/sources.list.d/docker.list # 安装 Docker apt update apt install -y docker-ce docker-compose-plugin # 启动 Docker 并设置开机自启 systemctl enable --now docker4.3 获取 Jumpserver 安装器Jumpserver 官方提供一键安装脚本它会下载最新的安装器到 /opt 目录。cd /opt curl -sSL https://github.com/jumpserver/installer/releases/latest/download/quick_start.sh | bash执行完成后/opt 下会生成一个 jumpserver-installer 目录。cd /opt/jumpserver-installer ls -l看到jmsctl.sh文件说明安装器已经就绪。这个脚本是后续启动、停止、升级 Jumpserver 的核心入口。4.4 配置安装参数安装器第一次运行时会生成配置文件。默认配置一般可以直接使用但如果你要修改端口、数据库密码、数据持久化路径需要先编辑配置文件。# 查看当前版本信息 ./jmsctl.sh version # 首次安装前查看帮助 ./jmsctl.sh help配置文件的默认路径在/opt/jumpserver-installer/config.txt。如果 80 端口被占用可以在这里修改HTTP_PORT8080等方式避开冲突。4.5 执行安装配置确认无误后执行安装命令。安装过程会拉取多个容器镜像耗时取决于网络速度一般需要 5 到 20 分钟。./jmsctl.sh install安装完成后直接启动服务。./jmsctl.sh start启动过程会依次拉起 MySQL、Redis、Core、Koko、Lion、Nginx 等容器。执行docker ps可以看到所有容器状态如果全部是Up状态说明启动成功。docker ps --format table {{.Names}}\t{{.Status}}\t{{.Ports}}4.6 浏览器访问与初始密码启动成功后在浏览器访问http://服务器IP默认管理员账号为admin初始密码是admin。首次登录系统会强制要求修改管理员密码按照提示操作即可。这里要提醒一句首次登录修改后的密码务必保存到企业密码管理工具中不要用弱密码。5. Jumpserver 功能测试与效果验证部署完成后不要急着接入生产资产先用测试环境完整跑一遍核心流程。下面按功能拆开验证。5.1 测试目标验证 Jumpserver 是否真正实现了认证、授权、审计闭环用户能不能登录、资产能不能连、命令有没有过滤、录像有没有生成。5.2 创建用户并设置权限在 Web 界面中依次点击用户管理 - 用户列表 - 创建用户创建一个测试用户例如test_ops指定登录名、姓名、邮箱并设置一个初始密码。创建成功后用户的状态默认是激活状态如果状态为未激活新用户登录时会提示账号不可用。创建一个用户还不够需要给用户分配角色权限。Jumpserver 有用户角色和权限模板两类概念简单理解角色决定用户在 Jumpserver 平台上能做什么权限模板决定用户对资产能做什么。为了快速测试可以将用户加入普通用户角色后续再精细化配置。5.3 添加 Linux 测试资产在资产管理 - 资产列表 - 创建资产中创建一台 Linux 资产。需要填写的信息包括主机名给对方服务器起一个可识别的名称例如web-test-01。IP 地址资产的真实 IP。协议选择 SSH端口默认填 22。账号这里可以填 root或者使用专用管理账号/home/ops这种自定义账号。密码和私钥建议先在系统设置 - 凭据中配置或者在资产创建时直接填写资产密码。为了测试可以先填一个测试服务器的 root 密码Jumpserver 会保存为凭据后续用户连接时不需要再输入密码。创建成功后在资产列表中可以看到资产状态为可连接或类似标识说明 Jumpserver 能通过该 IP 和凭据访问到资产。5.4 配置授权并验证 Web Terminal在权限管理 - 资产授权中新建授权规则选择刚刚创建的测试用户关联刚才添加的 Linux 资产协议选择 SSH。这样用户test_ops就有权限连接这台资产了。然后用test_ops账号登录 Jumpserver Web 界面进入工作台 - Web Terminal。点击测试资产浏览器会自动打开一个 SSH 会话窗口。此时输入whoami、hostname等基础命令看是否正常返回。判断成功的标准是能进入终端会话不要求输入服务器密码。执行命令有正常返回。回到 Jumpserver 会话管理能看到当前会话记录。如果连接失败先检查资产侧的 SSH 服务是否开启、账号密码是否正确、防火墙是否放行 Koko 的 2222 端口。5.5 命令过滤与操作审计测试Jumpserver 支持高危命令过滤。在权限管理 - 命令过滤中新建过滤规则可以设置禁止执行rm -rf /、shutdown、reboot等命令。配置后再次连接资产尝试执行禁止命令终端会被拦截并提示无权限同时生成一条触发记录。这一步测试很有价值等保审计中经常会要求高危命令可阻断。测试完成后进入审计管理 - 会话录像找到刚才的会话记录点击播放录像。确认以下几点录像能正常播放。录像画面清晰时间戳正确。命令输入输出完整记录。录像功能正常说明 Jumpserver 的审计能力已经落地。5.6 批量导入与批量授权测试在资产管理 - 资产列表中点击导入按钮下载 CSV 模板按模板格式填写多台资产信息再上传导入。导入完成后检查资产列表是否出现全部新增资产。批量授权在权限管理 - 资产授权中选择多个资产或使用资产标签分组一次授权给多个用户。这样可以避免一台一台配置授权的重复劳动。批量测试的目的是确认 Jumpserver 在规模化运维场景下依然可用后续接入生产环境时能快速切换。6. Jumpserver 接口 API 与批量任务实践Jumpserver 自带 REST API可以方便地对接 CMDB、工单系统、自动化发布平台。对于运维工程师来说掌握 API 调用是进阶必备技能。6.1 API 认证默认情况下 Jumpserver API 与 Web 共用同一端口请求路径以/api/v1/开头。写脚本前先在 Web 界面中创建 API Key进入管理端 - 系统设置 - 终端 - API Key中创建。拿到 Key 后通过请求头Authorization: Token API_KEY进行认证。这里给一个使用 Python 获取资产列表的通用示例接口路径以实际版本 API 文档为准import requests BASE_URL http://127.0.0.1 API_KEY 你的API_KEY headers { Authorization: fToken {API_KEY}, Content-Type: application/json } # 获取资产列表 response requests.get(f{BASE_URL}/api/v1/assets/assets/, headersheaders, timeout30) if response.status_code 200: assets response.json() for asset in assets: print(asset.get(hostname), asset.get(ip), asset.get(protocols)) else: print(请求失败:, response.status_code, response.text)如果请求返回 403 或 401检查 API Key 是否有效、权限范围是否足够。接口调用频率不要过高生产环境中建议做好访问控制限制 API Key 的 IP 来源。6.2 API 创建用户与批量授权通过 API 创建用户、添加资产、设置授权是实现与内部系统联动的关键路径。下面给一个创建用户后再授权的简洁示例import requests BASE_URL http://127.0.0.1 API_KEY 你的API_KEY headers { Authorization: fToken {API_KEY}, Content-Type: application/json } # 创建用户 user_payload { username: api_user, name: API 用户, email: api_userexample.com, is_active: True } resp requests.post(f{BASE_URL}/api/v1/users/users/, jsonuser_payload, headersheaders, timeout30) print(创建用户:, resp.status_code) # 创建资产授权授权信息需要参考实际版本的字段定义 grant_payload { name: api-grant-01, users: [api_user], assets: [web-test-01], protocols: [ssh] } resp requests.post(f{BASE_URL}/api/v1/perms/asset-permissions/, jsongrant_payload, headersheaders, timeout30) print(创建授权:, resp.status_code)这个示例只是方向性演示不同版本的 Jumpserver 字段名可能不同对接前先打开http://服务器IP/api/docs/查看接口文档。6.3 批量任务场景设计Jumpserver 本身的重点是认证和审计不是批量执行平台。如果你要批量执行命令通常有三种做法通过 Jumpserver 的 Web Terminal 逐个连接到资产手动执行适合少量机器。使用 Ansible、SaltStack 等自动化工具在 Jumpserver 中为这些工具配置专用连接账号让工具通过 Jumpserver 认证后执行任务。通过 API 将资产信息同步给外部自动化平台由平台负责批量下发。日常运维中比较合理的组合是Jumpserver 管入口和审计自动化平台管批量执行两者通过 API 同步资产和授权数据。7. 资源占用与性能观察部署完成后需要实际观察机器的资源占用避免上线后出现内存或磁盘不足。7.1 查看容器资源占用使用docker stats可以查看所有容器的 CPU 和内存实时占用。docker stats --format table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}正常运行状态下Core、Koko、MySQL、Redis 这几个容器内存占用相对较高。从经验看整体内存占用在 2G 到 4G 之间属于正常范围具体以你部署的版本和在线会话数为准。如果内存长期超过 80%需要增加机器内存或优化连接数配置。7.2 磁盘占用与录像增长审计录像是磁盘空间的主要消耗来源。可以通过下面的命令查看数据目录大小# 查看 Docker 数据卷占用 du -sh /var/lib/docker/volumes/* # 如果指定了持久化目录 du -sh /opt/jumpserver*建议为 Jumpserver 的数据目录单独挂载磁盘。录像文件按天归档定期导出到对象存储或者备份服务器避免磁盘写满导致服务异常。7.3 并发会话对性能的影响在线会话数越高Koko 和 Lion 组件消耗的资源越多。每增加一条 Web Terminal 会话CPU 和内存都会有一定上涨。观察方法是进入会话管理查看在线会话数同时看docker stats中 Koko/Lion 容器的 CPU 使用率。如果并发量达到几十甚至上百需要调整 Docker 容器资源限制同时关注 MySQL 连接数和 Redis 使用率。单机承载能力有限超大规模场景建议采用集群部署方案。8. Jumpserver 常见问题与排查方法下面是 Jumpserver 部署和日常使用中最常见的几类问题整理成排查表。问题现象可能原因排查方式解决方案安装脚本执行报错Docker/Docker Compose 未安装或版本过低执行docker --version和docker compose version安装 Docker 19.03升级 compose 到 v2执行./jmsctl.sh start后 Web 打不开80 端口被占用ss -lntp | grep :80检查防火墙修改 config.txt 中的 HTTP_PORT或关停占用的服务部分容器未启动内存不足或镜像拉取失败docker ps -a查看容器状态docker logs 容器名查看日志增加机器内存重新拉取镜像或使用离线包用户登录提示未激活用户创建后没有激活管理员在用户列表检查账号状态修改用户状态为激活并配置角色资产连接超时资产侧 SSH 未开启、Koko 2222 端口不可达、资产密码错误在服务器本机ssh root资产IP测试开启资产 SSH放行防火墙 2222 端口更新资产凭据连接资产后无法执行命令资产授权规则未配置或配置了命令过滤检查权限管理中的资产授权和命令过滤规则重新配置授权或调整过滤策略会话录像找不到用户没有审计权限或会话中没有任何操作检查审计管理中的录像列表确认会话时间给用户分配审计权限重新发起会话并执行命令忘记 admin 密码密码丢失无法直接找回按官方文档重置管理员密码或通过数据库重置生产环境建议启用 LDAP 统一认证服务器重启后 Jumpserver 未启动未设置容器自启检查 Dockers 容器重启策略执行./jmsctl.sh enable或重新执行 start录像时间与真实时间不一致系统未同步 NTP执行date检查系统时间配置 NTP 时间同步并重启相关容器排查时有一个通用思路先看 Docker 容器状态再看日志最后看端口和网络。大部分问题都能在容器日志里看到直接原因。9. 最佳实践与使用建议堡垒机是安全基础设施部署只是第一步真正重要的是上线后的使用规范。以下几点是生产环境落地时容易踩坑的地方。最小化权限原则。用户和资产授权不要怕麻烦能不给就不用给权限模板尽量拆分得细一些。普通运维人员一般只需要部分资产的操作权限没必要全部开放。Jumpserver 支持资产标签、用户组、授权时间范围利用这些能力把权限收敛到最小范围。高危命令策略提前规划。上线前先梳理哪些命令需要禁止哪些命令需要审批后才能执行。Jumpserver 的命令过滤功能可以阻断危险操作但规则设计不合理会导致误拦截或绕过。测试环境中先验证规则再同步到生产。数据库和配置文件定期备份。Jumpserver 的所有配置、用户、授权数据都存储在 MySQL 中一旦数据库损坏整个平台配置都会丢失。建议每天备份 MySQL 数据库和/opt/jumpserver-installer配置文件备份保留至少 7 天。录像数据独立存储。录像文件不宜与应用系统放在同一块磁盘否则录像增长会拖垮整个服务。有条件的情况下将录像目录通过 NFS 或对象存储同步到独立存储并设置好保留周期。启用多因子认证。如果企业安全要求较高建议在 Jumpserver 中开启 MFA 认证用户在登录 Web 界面和连接资产时都需要二次校验能有效避免账号密码泄露带来的风险。操作审计的合规提醒。录像和日志包含大量操作细节可能涉及敏感信息。导出、传播、查看这些数据必须经过审批同时要符合企业内部数据安全制度和相关法律法规要求。堡垒机是保障企业 IT 安全的工具使用时必须基于合法授权目的。10. 总结与下一步Jumpserver 是值得花时间掌握的企业运维工具。它最大的价值不是多了一个 Web 登录入口而是把散落的服务器账号收口到统一平台让每一次操作都有据可查。对于刚入门运维的同学来说在自己电脑或虚拟机里完整跑一遍部署、授权、连接、审计的流程比死记 Linux 命令更能帮助理解企业实际运维场景。建议先完成这几件事在虚拟机中部署一套 Jumpserver创建两个测试用户添加三台 Linux 测试资产配置不同的授权规则体验一下命令过滤和录像回放最后再尝试用 API 获取一次资产列表。整个流程跑通后你对堡垒机的理解会非常扎实。最容易踩的坑集中在三个地方Docker Compose 版本过低导致的安装失败、端口冲突导致的 Web 无法访问、资产授权配置不完整导致的连接失败。遇到问题不要急着换方案先看容器状态和日志大部分故障都能从中找到答案。后续可以继续扩展的方向包括对接企业内部 LDAP/企业微信/钉钉统一登录使用 Prometheus 监控 Jumpserver 服务状态将资产数据同步到 CMDB以及规划多节点高可用部署。这些都是生产环境中非常实际的需求可以作为下一阶段的学习重点。
返回列表