LEMON

记录站

0%

Jumpserver

Jumpserver堡垒机

JumpServer 官方详细文档

简介

跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。

跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是会出现误操作、违规操作导致的事故,一旦出现操作事故很难快速定位到原因和责任人。

堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。

堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能

页面展示

!界面展示

特色优势

  • 开源: 零门槛,线上快速获取和安装;
  • 分布式: 轻松支持大规模并发访问;
  • 无插件: 仅需浏览器,极致的 Web Terminal 使用体验;
  • 多云支持: 一套系统,同时管理不同云上面的资产;
  • 云端存储: 审计录像云端存储,永不丢失;
  • 多租户: 一套系统,多个子公司和部门同时使用;
  • 多应用支持: 数据库,Windows远程应用,Kubernetes。

功能列表

身份认证 Authentication 登录认证 资源统一登录与认证
LDAP/AD 认证
RADIUS 认证
OpenID 认证(实现单点登录)
CAS 认证 (实现单点登录)
钉钉认证 (扫码登录)
企业微信认证 (扫码登录)
MFA认证 MFA 二次认证(Google Authenticator)
RADIUS 二次认证
登录复核 用户登录行为受管理员的监管与控制
登录限制 用户登录来源 IP 受管理员控制(支持黑/白名单)
账号管理 Account 集中账号 管理用户管理
系统用户管理
统一密码 资产密码托管
自动生成密码
自动推送密码
密码过期设置
批量改密 定期批量改密
多种密码策略
多云纳管 对私有云、公有云资产自动统一纳管
收集用户 自定义任务定期收集主机用户
密码匣子 统一对资产主机的用户密码进行查看、更新、测试操作
授权控制 Authorization 多维授权 对用户、用户组、资产、资产节点、应用以及系统用户进行授权
资产授权 资产以树状结构进行展示
资产和节点均可灵活授权
节点内资产自动继承授权
子节点自动继承父节点授权
应用授权 实现更细粒度的应用级授权
MySQL 数据库应用、RemoteApp 远程应用
动作授权 实现对授权资产的文件上传、下载以及连接动作的控制
时间授权 实现对授权资源使用时间段的限制
特权指令 实现对特权指令的使用(支持黑白名单)
命令过滤 实现对授权系统用户所执行的命令进行控制
文件传输 SFTP 文件上传/下载
文件管理 实现 Web SFTP 文件管理
工单管理 支持对用户登录请求行为进行控制
访问控制 登录资产复核(通过 SSH/Telnet 协议登录资产)
命令执行复核
组织管理 实现多租户管理与权限隔离
安全审计 Audit 操作审计 用户操作行为审计
会话审计 在线会话内容监控
在线会话内容审计
历史会话内容审计
录像审计 支持对 Linux、Windows 等资产操作的录像进行回放审计
支持对 RemoteApp、MySQL 等应用操作的录像进行回放审计
指令审计 支持对资产和应用等操作的命令进行审计
文件传输 可对文件的上传、下载记录进行审计
数据库审计 Database 连接方式 命令方式
Web UI方式
支持的数据库 MySQL
Oracle
MariaDB
PostgreSQL
功能亮点 语法高亮
SQL格式化
支持快捷键
支持选中执行
SQL历史查询
支持页面创建 DB, TABLE
会话审计 命令记录
录像回放

安全建议

  • Jumpserver 对外需要开放 80 443 和 2222 端口
  • JumpServer 所在服务器操作系统应该升级到最新
  • JumpServer 依赖的软件升级到最新版本
  • 服务器、数据库、redis 等依赖组件请勿使用弱口令密码
  • 不推荐关闭 firewalld 和 selinux
  • 只开放必要的端口,必要的话请通过 vpn 或者 sslvpn 访问 JumpServer
  • 如果必须开放到外网使用,你应该部署 web 应用防火墙做安全过滤
  • 请部署 ssl 证书通过 https 协议来访问 JumpServer
  • JumpServer 不要使用弱口令密码,应立即改掉默认的 admin 密码
  • 推荐开启 MFA 功能,避免因密码泄露导致的安全问题

安装方式

两种方式:自动部署 和 手动部署

自动部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 默认会安装到 /opt/jumpserver-installer-v2.12.1 目录
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.12.1/quick_start.sh | bash

# 使用方式
# 安装完成后配置文件 /opt/jumpserver/config/config.txt
cd /opt/jumpserver-installer-v2.12.1

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

# 重新安装
./jmsctl.sh uninstall
./jmsctl.sh install

手动部署

1
2
3
4
cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.12.1/jumpserver-installer-v2.12.1.tar.gz
tar -xf jumpserver-installer-v2.12.1.tar.gz
cd jumpserver-installer-v2.12.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## 安装配置, amd64 默认使用华为云加速下载, arm64 请注释掉 DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
# DOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.com
VOLUME_DIR=/opt/jumpserver
DOCKER_DIR=/var/lib/docker
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

## MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置数据库, 请输入正确的 MySQL 信息
USE_EXTERNAL_MYSQL=0
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

## Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置数据库, 请输入正确的 Redis 信息
USE_EXTERNAL_REDIS=0
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

## Compose 项目设置, 如果 192.168.250.0/24 网段与你现有网段冲突, 请修改然后重启 JumpServer
COMPOSE_PROJECT_NAME=jms
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=192.168.250.0/24

## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=2001:db8:10::/64

## Nginx 配置, USE_LB=1 表示开启, 为 0 的情况下, HTTPS_PORT 定义不生效
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389

USE_LB=0
HTTPS_PORT=443

## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1

## XPack, USE_XPACK=1 表示开启, 开源版本设置无效
USE_XPACK=0

# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true

# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080

# 额外的配置
CURRENT_VERSION=

./jmsctl.sh install
./jmsctl.sh start


### 使用方式
cd /opt/jumpserver-installer-v2.12.1

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

系统设置

必须要设置的两个地方:基本设置 和 邮件设置

以下操作均在 Web 页面完成,请使用 admin 用户登陆,默认密码 admin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 安装完毕后的相关信息
>>> The Installation is Complete
1. You can use the following command to start, and then visit
cd /opt/jumpserver-installer-v2.12.1
./jmsctl.sh start

2. Other management commands
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
For more commands, you can enter ./jmsctl.sh --help to understand

3. Web access
http://192.168.245.11:80
Default username: admin Default password: admin

4. SSH/SFTP access
ssh -p2222 admin@192.168.245.11
sftp -P2222 admin@192.168.245.11

5. More information
Offical Website: https://www.jumpserver.org/
Documentation: https://docs.jumpserver.org/

image-20210726170450138

image-20210726170519423

image-20210726171158346

1.1 基本设置

名称 示例 备注
当前站点URL https://demo.jumpserver.org 不设置的话,邮件收到的地址为 http://localhost
用户向导URL 用户首次登陆可以看到此 超链接,可以不设置
忘记密码URL 使用了 LDAP, OPENID 等外部认证系统,可以自定义

image-20210726171355450

1.2 邮件设置

必须设置才能使用与邮件相关的功能;不可以同时勾选 使用SSL使用TLS

名称 示例 备注
SMTP主机 smtp.qq.com 服务商提供的 smtp 服务器
SMTP端口 25 通常是 25
SMTP账号 296015668@qq.com 通常是 user@domain.com
SMTP密码 **************** 每次 测试连接 都需要重新输入密码
使用SSL [ ] 如果端口使用 465,必须勾选此项
使用TLS [ ] 如果端口使用 587,必须勾选此项
发件人 296015668@qq.com 测试连接 必须要输入
主题前缀 [JMS] 邮件的标题,收到的邮件是 [JMS] 开头
测试收件人 296015668@qq.com 测试连接必填

资产管理

准备两个测试资产和一个数据库来验证功能

IP Host name Port System Admin User Password
172.16.80.11 test_ssh01 22 Centos 7 root Test2020.L
172.16.80.21 test_rdp01 3389 Windows 10 administrator Test2020.W
172.16.80.31 test_mysql01 3306 MySQL 5 root Test2020.M

1.1 编辑资产树

根节点 Default 不能重名, 右击节点可以添加、删除和重命名节点, 以及进行资产相关的操作

说明

  • 点击页面左侧的 资产管理 - 资产列表
  • 先在根节点 Default 右键新建 SSH ServerRDP Server 两个节点
1
2
3
Defaule
├─ SSH Server
└─ RDP Server

1.2 创建特权用户

点击页面左侧的 资产管理 - 系统用户 - 创建特权用户 创建两个特权用户, 特权用户的内容就是上面表单的 Admin User Password

名称不能重名, 密码或者密钥二选一即可, 一些资产不允许通过 密码 认证可以改用 私钥 认证

表单 SSH 特权用户示例 RDP 特权用户示例
名称 172.16.80.11_root 172.16.80.21_administrator
用户名 root administrator
密码 Test2020.L Test2020.W
SSH密钥
备注 SSH 资产特权用户 RDP 资产特权用户

1.3 创建资产

点击页面左侧的 资产管理 - 资产列表 - 创建资产 把两个资产导入

主机名不能重名!

表单 SSH 资产示例 RDP 资产示例
主机名 test_ssh01 test_rdp01
IP(域名) 172.16.80.11 172.16.80.21
系统平台 Linux Windows
公网IP
网域
协议组 ssh 22 rdp 3389 / ssh 22
特权用户 172.16.80.11_root 172.16.80.21_administrator
节点 Default / SSH Server Default / RDP Server

创建 Windows 资产, 注意协议组我们需要选择 ssh rdp, 否则无法获取 Windows 资产的状态及硬件信息;

测试资产连接提示

  1. 资产创建信息填写好保存之后隔几秒钟时间刷新一下网页, ssh 协议资产的可连接图标会显示 绿色, 且 硬件信息 会显示出来
  2. 如果 可连接 的图标是 黄色 或者 红色 , 可以点击 资产名称,在右侧 快速修改 - 测试可连接性 点击 测试 按钮, 根据错误提示处理
  3. 被连接 Linux 资产需要 python 组件, 且版本大于等于 2.6, Ubuntu 等资产默认不允许 root 用户远程 ssh 登录, 请自行处理, Windows 资产需要手动安装 OpenSSH Server
  4. 如果资产不能正常连接, 请检查 特权用户 的 用户名密码 是否正确以及该 特权用户 是否能使用 SSHJumpServer 主机正确登录到资产主机上

1.3.1 创建数据库应用

击页面左侧的 应用管理 - 数据库应用 - 创建数据库应用 创建 mysql 数据库

表单 MySQL 资产示例
名称 test_mysql01
类型 MySQL
主机 172.16.80.31
端口 3306
数据库
备注 MySQL 资产

数据库 选项可以留空, 如果是某些特定用户, 只允许访问指定的数据库, 这里指定数据库名称即可。

1.4 创建系统用户

IP System System User Password Group Sudo Sftp Root
172.16.80.11 Centos 7 testssh01 random pass ALL /
172.16.80.21 Windows 10 testrdp01 random pass Users
172.16.80.23 MySQL 5 root Test2020.M

系统用户提示

  1. 在理解 系统用户 之前, 你首先得知道系统用户是干嘛用的. 在 Jumpserver 中, 需要对资产不同的用途创建不同的 系统用户
  2. 比如一个 资产, 开发要用、测试要用、可能还要其他的部门也要使用, 偷懒的人可能会统一给 root 用户, 但是这样并不安全
  3. 系统用户就是为了解决这个问题, 我们针对不同的用途创建不同的 系统用户, Linux 通过 Sudo 来控制用户的权限, Windows 通过组来控制用户权限

点击页面左侧的 资产管理 - 系统用户 - 创建普通用户 创建对应协议系统用户

表单 SSH 系统用户
名称 test_ssh01_测试系统用户
协议 ssh
用户名 testssh01
动态用户名
登录模式 自动登陆
认证方式 托管密码
自动生成
自动推送
Sudo ALL
Shell /bin/bash
家目录
用户附属组
命令过滤器
SFTP根路径 /
表单 RDP 系统用户
名称 test_rdp01_测试系统用户
协议 rdp
用户名 testssh01
动态用户名
认证方式 托管密码
自动生成
自动推送
AD域名
自动推送
用户附属组 Users
表单 MySQL 系统用户
名称 test_mysql01_测试系统用户
认证方式 托管密码
用户名 root
协议 mysql
密码 Test2020.M

创建授权规则

1.1 为用户分配资产

IP System System User User
172.16.80.11 Centos 7 testssh01 admin
172.16.80.21 Windows 10 testrdp01 admin
172.16.80.31 MySQL 5 root admin

点击页面左侧的 授权管理 - 资产授权 - 创建授权规则 创建两个授权

表单 SSH 资产授权 RDP 资产授权
名称 test_ssh01_测试授权 test_rdp01_测试授权
用户 Administrator(admin) Administrator(admin)
用户组
资产 test_ssh01(172.16.80.11) test_rdp01(172.16.80.21)
节点
系统用户 test_ssh01_测试系统用户(testssh01) test_rdp01_测试系统用户(testrdp01)
权限 √ 全部 √ 全部

资产授权提示

  1. 名称, 授权的名称, 不能重复
  2. 用户 和 用户组 二选一, 不推荐即选择 用户 又选择 用户组
  3. 资产 和 节点 二选一, 选择 节点 会包含 节点 下面的所有 资产
  4. 系统用户, 及所选的 用户 或 用户组 下的 用户 能通过该 系统用户 使用所选 节点 或者 节点 下的 资产
    用户(组), 资产(节点), 系统用户 是一对一的关系, 所以当拥有 Linux、Windows 不同类型资产时, 应该分别给 Linux 资产和 Windows 资产创建 授权规则
  5. 一般情况下, 资产授权给用户, 节点授权给用户组, 一个授权只能选择一个系统用户

1.2 为用户分配数据库应用

点击页面左侧的 授权管理 - 数据库应用 - 创建授权规则 创建数据库授权

表单 MySQL 资产授权
名称 test_mysql01_测试授权
用户 Administrator(admin)
用户组
数据库应用 test_mysql01
系统用户 test_mysql01_测试系统用户(root)

用户登录

登录 JumpServer

点击页面左侧的 会话管理 - Web终端 用户只能看到自己被管理员授权了的 资产 , 如果登录后无资产, 请联系管理员进行确认。

连接资产

  1. 在我的资产点击资产右边的 连接 快速连接资产
  2. 也可以点击左侧栏的 Web终端 点击 资产 名字, 就连上资产了
  3. 如果显示连接 超时, 请参考 FAQ 文档进行处理

断开资产

  1. 点击页面顶部的 Server 按钮会弹出选个选项, 第一个断开所选的连接, 第二个断开所有连接
  2. 也可以直接点资产小窗口的 X , SSH 会话也可以输入 exit 来退出
  3. 直接关闭页面也可以, 但是不推荐

文件管理

  1. 点击 文件管理
  2. 先在左边选择资产, 目前只支持自动登录的 SSH 协议 资产
  3. 也可以使用 sftp 方式进行 文件管理
-------------本文结束感谢您的阅读-------------