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 | # 默认会安装到 /opt/jumpserver-installer-v2.12.1 目录 |
手动部署
1 | cd /opt |
1 | # 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改 |
系统设置
必须要设置的两个地方:基本设置 和 邮件设置
以下操作均在 Web 页面完成,请使用 admin 用户登陆,默认密码 admin
1 | # 安装完毕后的相关信息 |
1.1 基本设置
名称 | 示例 | 备注 |
---|---|---|
当前站点URL | https://demo.jumpserver.org | 不设置的话,邮件收到的地址为 http://localhost |
用户向导URL | 用户首次登陆可以看到此 超链接 ,可以不设置 |
|
忘记密码URL | 使用了 LDAP, OPENID 等外部认证系统,可以自定义 |
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 |
- Windows 资产先进行 Windows SSH 设置
- MySQL 应用需要授权 core 和 koko 的远程访问的权限 MySQL 应用要求
1.1 编辑资产树
根节点 Default 不能重名, 右击节点可以添加、删除和重命名节点, 以及进行资产相关的操作
说明
- 点击页面左侧的
资产管理
-资产列表
- 先在根节点
Default
右键新建SSH Server
和RDP Server
两个节点
1 | Defaule |
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 资产的状态及硬件信息;
测试资产连接提示
- 资产创建信息填写好保存之后隔几秒钟时间刷新一下网页,
ssh
协议资产的可连接图标会显示绿色
, 且硬件信息
会显示出来 - 如果
可连接
的图标是黄色
或者红色
, 可以点击资产
的名称
,在右侧快速修改
-测试可连接性
点击测试
按钮, 根据错误提示处理 - 被连接
Linux
资产需要python
组件, 且版本大于等于2.6
,Ubuntu
等资产默认不允许root
用户远程ssh
登录, 请自行处理,Windows
资产需要手动安装OpenSSH Server
- 如果资产不能正常连接, 请检查 特权用户 的
用户名
和密码
是否正确以及该特权用户
是否能使用SSH
从JumpServer
主机正确登录到资产主机上
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 |
系统用户提示
- 在理解
系统用户
之前, 你首先得知道系统用户是干嘛用的. 在Jumpserver
中, 需要对资产不同的用途创建不同的系统用户
- 比如一个
资产
, 开发要用、测试要用、可能还要其他的部门也要使用, 偷懒的人可能会统一给root
用户, 但是这样并不安全 - 系统用户就是为了解决这个问题, 我们针对不同的用途创建不同的
系统用户
,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) |
权限 | √ 全部 | √ 全部 |
资产授权提示
- 名称, 授权的名称, 不能重复
- 用户 和 用户组 二选一, 不推荐即选择 用户 又选择 用户组
- 资产 和 节点 二选一, 选择 节点 会包含 节点 下面的所有 资产
- 系统用户, 及所选的 用户 或 用户组 下的 用户 能通过该 系统用户 使用所选 节点 或者 节点 下的 资产
用户(组), 资产(节点), 系统用户 是一对一的关系, 所以当拥有 Linux、Windows 不同类型资产时, 应该分别给 Linux 资产和 Windows 资产创建 授权规则 - 一般情况下, 资产授权给用户, 节点授权给用户组, 一个授权只能选择一个系统用户
1.2 为用户分配数据库应用
点击页面左侧的 授权管理
- 数据库应用
- 创建授权规则
创建数据库授权
表单 | MySQL 资产授权 |
---|---|
名称 | test_mysql01_测试授权 |
用户 | Administrator(admin) |
用户组 | |
数据库应用 | test_mysql01 |
系统用户 | test_mysql01_测试系统用户(root) |
用户登录
登录 JumpServer
点击页面左侧的 会话管理
- Web终端
用户只能看到自己被管理员授权了的 资产
, 如果登录后无资产, 请联系管理员进行确认。
连接资产
- 在我的资产点击资产右边的
连接
快速连接资产 - 也可以点击左侧栏的
Web终端
点击资产
名字, 就连上资产了 - 如果显示连接
超时
, 请参考FAQ
文档进行处理
断开资产
- 点击页面顶部的
Server
按钮会弹出选个选项, 第一个断开所选的连接, 第二个断开所有连接 - 也可以直接点资产小窗口的 X ,
SSH
会话也可以输入exit
来退出 - 直接关闭页面也可以, 但是不推荐
文件管理
- 点击
文件管理
- 先在左边选择
资产
, 目前只支持自动登录的SSH
协议资产
- 也可以使用
sftp
方式进行文件管理