Jump Server 堡垒机搭建及使用
一、Jump Server简介及环境要求
演示视频
Jumpserver 官方介绍
Jumpserver 是全球首款完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合 4A 的专业运维审计系统。
Jumpserver 使用 Python / Django 进行开发, 遵循 Web 2.0 规范, 配备了业界领先的 Web Terminal 解决方案, 交互界面美观、用户体验好。
Jumpserver 采纳分布式架构, 支持多机房跨区域部署, 中心节点提供 API, 各机房部署登录节点, 可横向扩展、无并发访问限制。
Jumpserver 现已支持管理 SSH、 Telnet、 RDP、 VNC 协议资产。
架构图
JumpServer 分为多个组件,大致的架构如下图所示。其中 Lina 和 Luna 为纯静态文件,最终由 nginx 整合。

官方DEMO
环境要求
JumpServer 组件及其监听端口
系统: CentOS Linux release 8.4.2105
Name
Core
Python
MySQL
MariaDB
Redis
Version
v2.13.1
>= 3.6
>= 5.7
>= 10.2
>= 6
关闭 SELinux 和防火墙
添加镜像源仓库
二、准备 Python3 和 Python 虚拟环境
安装依赖软件包
安装Python3.6
这里要注意的是一定要下载官方指导版本,python3.6以上有些模块不支持,启动jump server会报错



建立Python虚拟环境
创建虚拟环境,环境命令自定义为py3
部分系统可能会提示 source: not found , 可以使用 "." 代替 "source"

看到下面的提示符代表成功,以后运行Jumpserver都要先运行以上source命令,以下所有命令均在虚拟环境中运行
三、安装 Redis

设置Redis密码

验证密码是否能正常登录成功、查询等

四、安装Mariadb数据库

初始化数据库

创建数据库 Jumpserver 并授权验证
生成随机数据库密码
数据库配置
注意:这里数据库授权时$DB_PASWORD变量,需替换成您自己生成的密码
数据库用户更改密码SQL语句

验证授权是否正确,是否能正常登录成功

五、安装 Jump Server
下载 Jump Server 项目源码

网络问题参考文档:国内常用加速配置
安装 软件环境依赖
安装 Python 库依赖
解决报错:
错误一:

解决方法:

步骤一:按照上面链接复制的两行内容,修改如下文件

步骤二:修改保存好,执行如下命令,完美解决

确保已经载入 py3 虚拟环境, 中间如果遇到报错一般是依赖包没装全。
错误二:

解决方法:
修改 Jumpserver 配置文件



确认内容有没有错误

注意 SECRET_KEY 和 BOOTSTRAP_TOKEN 不能使用纯数字字符串
启动 Jumpserver
确保已经载入 py3 虚拟环境

运行不报错, 请继续往下操作
六、安装 KoKo 组件
KoKo 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。
环境要求
Name
KoKo
Go
Version
v2.13.1
1.15
安装 Go
从 Go 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:
设置 Go 国内加速镜像
下载 KoKo 项目源代码
在 KoKo 项目下构建应用

网络问题参考文档:国内常用加速配置
注意:构建完成后, 生成在 build 目录下,以 Linux amd64 服务器为例
1、拷贝压缩包文件到对应的服务器
2、解压编译的压缩包
3、修改配置文件并运行
BOOTSTRAP_TOKEN 需要从 jumpserver/config.yml 里面获取, 保证一致

启动 KoKo
查看启动状态

七、部署 Guacamole Server
根据 Guacamole官方文档 文档安装对应的依赖包
Guacamole具有许多依赖关系,此步骤解决了大多数依赖关系。从官方存储库获取软件包是一个挑战,因此您会注意到我使用了Devel存储库中的一些软件包。一旦安装了所有必需的软件包,请禁用它们。
更新所有的包和依赖
要更新所有的包和它们的依赖,在root权限下执行如下命令:
编译安装 guacamole 服务

更新systemd以找到/etc/init.d/目录中安装的guacd (Guacamole)服务
设置 Guacamole 环境变量
勿多次执行以下环境设置
环境变量说明
启动 Guacamole

八、安装 Lion 组件
Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。
环境要求
Name
JumpServer
Guacd
Lion
Lion 是基于 Apache Guacamole 开发,原生部署 Lion 需要有 Guacamole Server (版本 >= 1.3.0)。
下载 Lion 项目源代码
网络问题参考文档:国内常用加速配置
修改 Lion 配置文件
启动 Lion
在 /etc/systemd/system 目录创建 lion-v2.10.0.service 文件并配置以下内容
重载系统服务
查看 Lion 服务状态
九、安装 Node
检查是否安装成功及查看安装的版本
十、安装 Lina 组件
Lina 是 JumpServer 的前端 UI 项目,主要使用 Vue,Element UI 完成。
环境要求
Name
Lina
Node
Version
v2.13.1
10
下载 Lina 项目源代码
安装依赖
修改配置文件⚓︎
运行 Lina⚓︎
构建 Lina⚓︎
构建完成后的 lina 包为 html 文件,可以直接移到到 nginx 服务器。
构建完成后, 生成在 build 目录下
十一、安装 Luna 组件
Luna 是 JumpServer 的前端 UI 项目,主要使用 Angular CLI 完成。
环境要求⚓︎
Name
Luna
Node
Version
v2.13.1
10
下载 Luna 项目源代码
这个项目是用Angular CLI 1.3.2 版生成的。
安装依赖
修改 Luna 配置文件
运行 Luna
构建 Luna
可以加 -prod 来进行生产构建 ng build -prod
十二、安装 Nginx

配置 Nginx 整合各组件
修改配置文件
运行 Nginx
确保配置没有问题, 有问题请先解决

十三、开始使用 Jumpserver

测试连接
如果登录客户端是 macOS 或 Linux, 登录语法如下
密码: admin
如果登录客户端是 Windows, Xshell Terminal 登录语法如下
密码: admin
如果能登陆代表部署成功
# sftp默认上传的位置在资产的 /tmp 目录下
# windows拖拽上传的位置在资产的 Guacamole RDP上的 G 目录下

系统设置

邮件设置
# 点击页面上边的"邮件设置", 进入邮件设置页面
# 默认使用 25 端口, 不勾选 SSL 和 TLS; 如果需要勾选 SSL, 端口需要修改成 465; 如果需要勾选 TLS, 端口需要改成 587
# 不可以同时勾选 SSL 和 TLS
# 配置邮件服务后, 点击页面的"测试连接"按钮, 如果配置正确, Jumpserver 会发送一条测试邮件到您的 SMTP 账号邮箱里面, 确定收到测试邮件后点击保存即可使用


点测试后会收到一封测试邮件

邮件设置的查看方法


LDAP设置
# 如果不需要使用"ldap"用户登陆 jumpserver, 可以直接跳过, 不需要设置
# 先"测试"通过才能保存
# DN 和 OU 一定要完整(如 "DN:cn=Manage,ou=Jumpserver,dc=jumpserver,ou=org")
# 注:可借用第三方 gui 工具查看 ldap 用户的属性, 新版本已经支持中文名登录, 即cn=中文也可正常使用

终端设置
# "密码认证"和"密钥认证"是 SSH 连接跳板机时所使用的认证方式(都不选会造成无法使用 SSH 方式连接登录跳板机, 不影响 web 登录)
# "Telnet成功正则表达式" telnet设备登陆失败需要设置
# "命令存储""录像存储"位置设置
# "命令存储""录像存储"修改后, 需要在Jumpserver 会话管理-终端管理 修改terminal的配置 录像存储 命令记录, 然后重启 Jumpserver 服务
# 设置后重启 Coco 才能生效


安全设置
# "MAF二次认证"勾选会开启全局强制"MFA", 所有 jumpserver 用户必须使用动态口令进行认证登录(即时生效)
# "限制登录失败"和"限制登录时间"设置需要重启 jumpserver 才能生效
# "SSH最大空闲时间"设置需要重启 coco 才能生效
# "密码校验规则"设置立即生效


十四、用户管理
创建 Jumpserver 用户
# 点击页面左侧"用户列表"菜单下的"用户列表", 进入用户列表页面
# 点击页面左上角"创建用户"按钮, 进入创建用户页面, (也可以通过右上角导入模版进行用户导入)
# 其中, 用户名即 Jumpserver 登录账号(具有唯一性, 不能重名)。名称为页面右上角用户标识(可重复)
# 成功提交用户信息后, Jumpserver 会发送一条设置"用户密码"的邮件到您填写的用户邮箱
# 点击邮件中的设置密码链接, 设置好密码后, 您就可以用户名和密码登录 Jumpserver 了。
# 用户首次登录 Jumpserver, 会被要求完善用户信息, 按照向导操作即可。
注:MFA 即 Google Authenticator, 使用此软件需要APP时间与浏览器时间同步


资产管理
# "节点"不能重名, 右击节点可以添加、删除和重命名节点, 以及进行资产相关的操作
注:如果有 linux 资产和 windows 资产, 建议先建立 Linux 节点与 Windows 节点, 不然"授权"时不好处理

查看主机名及IP地址添加资产


创建管理用户
"管理用户"是资产上的 root, 或拥有 NOPASSWD: ALL sudo 权限的用户, Jumpserver 使用该用户来推送系统用户、获取资产硬件信息等。 Windows或其它硬件可以随意设置一个
# "名称" 不能重复
# "ssh私钥" 如果私钥有密码, 请把key的密码填在密码栏上, 目前仅支持 RSA DSA 格式私钥

创建系统用户
# "系统用户"是 Jumpserver 跳转登录资产时使用的用户, 用户使用该用户登录资产
# "自动生成密码"、"自动推送"、"Sudo"等功能需要对应资产的"管理用户"是且有root权限, 否则自动推送失败
# ssh 协议的 "Sudo" 栏设定用户的 sudo 权限,
# ssh 协议如果创建的"系统用户"已在资产上面存在, "推送"将会覆盖掉原用户的"home"目录权限(注: 替换成700权限)
# ssh 协议的 "ssh私钥" 如果私钥有密码, 请把key的密码填在密码栏上, 目前仅支持 RSA DSA 格式私钥
# 这里简单举几个 "sudo" 设置例子
Sudo /bin/su # 当前系统用户可以免sudo密码执行sudo su命令
Sudo /usr/bin/git, /usr/bin/php, /bin/cat, /bin/more, /bin/less, /usr/bin/tail
# 当前系统用户可以免sudo密码执行git php cat more less tail
Sudo !/usr/bin/yum # 当前系统用户不可以执行sudo yum命令
# 此处的权限应该根据使用用户的需求汇总后定制, 原则上给予最小权限即可
# "系统用户"创建时, 如果选择了"自动推送" Jumpserver 会使用"Ansible"自动推送系统用户到资产中, "root"用户不支持推送
# 如果资产(交换机、Windows)不支持"Ansible", 请去掉"自动生成密钥"、"自动推送"勾选。手动填写资产上已有的账号及账号密码
# 如果想让用户登录资产时自己输入密码, 可以在创建系统用户时选择"手动登录"


创建命令过滤
如无需要, 可忽略此步骤, 目前仅支持 ssh 与 telnet 协议
# "系统用户"可以绑定一些"命令过滤器",一个过滤器可以定义一些"规则"
# 当"用户"使用这个"系统用户"登录资产,然后执行一个命令 这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配
# 当一个规则匹配到了,如果规则的动作是 "允许" 这个命令会被放行; 如果规则的动作是 "禁止" 命令将会被禁止执行; 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行

# 点击 "命令过滤器列表" 规则下方的数字进入 "命令过滤器规则列表" , 点击新建规则创建相应规则
# 拒绝所有命令可以使用正则表达式 .*

创建网域网关
如无需要, 可忽略此步骤, 支持代理SSH、RDP和VNC
# "网域"功能是为了解决部分环境无法直接连接而新增的功能, 原理是通过网关服务器进行跳转登录
# 点击页面左侧的"网域列表"按钮, 查看所有网域列表
# 点击页面左上角的"创建网域"按钮, 进入网域创建页面, 选择资产里用作网域的网关服务器
注:混合云适用

# 点击"网域"的名称, 进入"网域详情"列表。
# 点击页面的"网关"按钮, 选择网关列表的"创建网关"按钮, 进入网关创建页面, 填写网关信息
# IP信息一般默认填写网域资产的IP即可(如用作网域的资产有多块网卡和IP地址, 选能与jumpserer通信的任一IP即可)
注:用户名与密码可以使用网关资产上已存在的任一拥有执行 ssh 命令权限的用户

注: 保存信息后点击"测试连接", 确定设置无误后到资产列表添加需要使用"网关"登录的资产即可
注: "Windows资产"可以使用"ssh网关"
创建资产
# 点击页面左侧的"资产管理"菜单下的"资产列表"按钮, 查看当前所有的资产列表。
# 点击页面左上角的"创建资产"按钮, 进入资产创建页面, 填写资产信息。
# IP 地址和管理用户要确保正确, 确保所选的管理用户的用户名和密码能"牢靠"地登录指定的 IP 主机上。
# 资产的系统平台也务必正确填写。公网 IP 信息只用于展示, 可不填, Jumpserver 连接资产使用的是 IP 信息。

# 资产创建信息填写好保存之后, ssh 协议资产可"测试资产"是否能正确连接, 其他协议暂不支持
注:被连接资产需要"python"组件, 且版本大于等于2.6, Ubuntu等资产默认不允许root用户远程ssh登录, 请自行处理
# 如果资产不能正常连接, 请检查"管理用户"的用户名和密钥是否正确以及该"管理用户"是否能使用 SSH 从 Jumpserver 主机正确登录到资产主机上
SSH 协议参考 SSH 协议资产连接说明
RDP 协议参考 RDP 协议资产连接说明
Telnet 协议参考 Telnet 协议资产连接说明
创建授权规则
为用户分配资产
# "名称", 授权的名称, 不能重复
# "用户"和"用户组"二选一, 不推荐即选择用户又选择用户组
# "资产"和"节点"二选一, 选择节点会包含节点下面的所有资产
# "系统用户", 及所选的用户或用户组下的用户能通过该系统用户使用所选节点或者节点下的资产
# 用户(组), 资产(节点), 系统用户是一对一的关系, 所以当拥有 Linux、Windows 不同类型资产时, 应该分别给 Linux 资产和 Windows 资产创建授权规则
一般情况下, 资产授权给个人, 节点授权给用户组, 一个授权只能选择一个系统用户

十五、用户登录
登录 Jumpserver
# 用户只能看到自己被管理员授权了的"资产", 如果登录后无资产, 请联系管理员进行确认

连接资产
# 在我的资产点击资产右边的 "连接" 快速连接资产
# 也可以点击左侧栏的 "Web终端"

# 点击 "资产" 名字, 就连上资产了
# 如果显示连接超时, 请参考 FAQ 文档进行处理
断开资产
# 点击页面顶部的 "Server" 按钮会弹出选个选项, 第一个断开所选的连接, 第二个断开所有连接。
文件管理
# 点击 "文件管理"
# 先在左边选择资产, 目前只支持自动登录的 SSH 协议资产
# 也可以使用 sftp 方式进行文件管理
参考 SFTP 连接说明

十六、安全建议
Jumpserver 对外需要开放 80 和 2222 端口,如果你配置了 ssl 还需要开放 443 端口, 8080 端口开放给 koko 和 guacamole 组件访问
JumpServer 所在服务器操作系统应该升级到最新
JumpServer 依赖的软件升级到最新版本
服务器、数据库、redis 等依赖组件请勿使用弱口令密码
不推荐关闭 firewalld 和 selinux
只开放必要的端口,必要的话请通过 vpn 或者 sslvpn 访问 JumpServer
如果必须开放到外网使用,你应该部署 web 应用防火墙做安全过滤
请部署 ssl 证书通过 https 协议来访问 JumpServer
JumpServer 不要使用弱口令密码,应立即改掉默认的 admin 密码
推荐开启 MFA 功能,避免因密码泄露导致的安全问题
关注官方更新,及时更新修复漏洞的版本 如发现 JumpServer 安全问题,请反馈给官方邮箱 ibuler@fit2cloud.com
本文档参考官方文档编写,更多内容请访问官方网站 http://docs.jumpserver.org/zh/master/
最后更新于
这有帮助吗?