利用JumpServer实现对公司资产的权限管理,使相应服务器只能被指定的用户访问,并且仅可以执行允许的操作命令。
通俗点讲,JumpServer在应用过程中主要涉及三种对象:
- 被管理的资产(服务器)
- 被管理的用户
- 规则(用户和资产的对应关系、操作权限等)
拓扑图
假设公司有三条业务线,分别对应app1、app2、app3,分别由王一、李二、赵三这3名开发负责,这3个app的数据库均由DBA张库负责维护,现在要通过JumpServer堡垒机实现如下功能:
- 王一只能连接app1相关的服务器,服务器代表为node101(192.168.1.101);
- 李二只能连接app2相关的服务器,服务器代表为node102(192.168.1.102);
- 赵三只能连接app3相关的服务器,服务器代表为node103(192.168.1.103);
- 张库只能连接数据库相关的服务器,服务器代表为node100(192.168.1.100)node111(192.168.1.111);
- 四名人员均不能在服务器执行危险指令。
2.1:用户管理
使用管理员账号登录,进行用户组和用户的创建。
2.1.1:创建用户组
为JumpServer创建两个用户组:Dev和DBA,分别对应开发人员和数据库管理人员。
点击用户管理-用户组-创建,进行用户组的创建:
创建用户组时,因为还没有创建用户,所以用户先不指定,等创建用户时指定用户组即可。
创建Dev用户组:
创建DBA用户组:
创建完成:
2.1.2:创建用户
为JumpServer添加王一、李二、赵三、张库这四名用户,并分配到对应的用户组。
可以点击用户管理-用户列表-创建,逐个进行用户的创建;
也可以下载用户导入模板,录入用户信息后批量导入,下面采用批量导入的方式进行。
点击用户管理-用户列表-导入,在弹出窗口中选择下载模板:
在导入模板中填写每个用户的信息,并保存。
*号为必填项。
官方的字段填写说明:
表单 说明 名称 姓名, 标识用, 可以重复 用户名 登录时使用, 具有唯一性, 不可以重复 密码 密码策略设置为 1 时需要在此处输入密码 邮件 邮件地址, 具有唯一性, 不可以重复 SSH 公钥 选填, 可以上传用户自己的 ssh 公钥 微信 选填, 仅标识 手机 选填, 仅标识 多因子认证 0 关闭, 1 开启, 2 强制开启, 动态口令认证 备注 选填, 仅标识 有效 True 有效, False 无效, 无效的用户无法登录 密码策略 0 表示自动生成密码, 1 需要在上面输入密码 失效日期 用户过期时间 用户组 选填, 用户组的名称, 请先在用户组里面创建 角色 角色有 Admin, User, Auditor 组织角色名称 组织角色名称有 [‘Admin’], [‘User’]
点击用户管理-用户列表-导入,导入刚才编辑好的csv文件:
导入成功:
2.1.3:验证用户登录
使用zhaosan登录JumpServer:
2.2:资产管理
2.2.1:创建管理用户
管理用户是资产(被控服务器)上的 root,或拥有 NOPASSWD: ALL sudo 权限的用户, JumpServer 使用该用户来
推送系统用户
、获取资产硬件信息
等。
管理用户和系统用户的概念:
- 创建或导入资产时需要指定管理用户
管理用户是为JumpServer本身创建的,JumpServer通过管理用户,从被管理服务器上获取系统、硬件等信息的。 - 创建资产授权规则时需要指定系统用户
系统用户则是为各用户创建的,用户通过JumpServer远程连接服务器时,使用的就是指定的系统用户。
由于五台服务器都为root用户,密码也一致,所以此处仅创建了一个管理用户。
实际中,各服务器的超级管理员用户及密码应该都是不同的,需要创建多个,以分配给相应的资产。
点击资产管理-管理用户-创建,创建管理用户。
官方的管理用户字段填写说明:
表单 说明 名称 名称, 具有唯一性 用户名 资产的登录账号 密码 资产登录账号的密码 SSH密钥 私钥, 如果私钥有密码, 在上面的密码栏输入 SSH公钥 选填 备注 选填, 仅标识
创建成功:
点击相应管理用户,进入用户详情页,记录管理用户ID,以备导入资产时使用。
- root_通用的ID:ef1acee6-8a25-4458-8379-aad0f5c89e82
2.2.2:创建系统用户
系统用户是 JumpServer 跳转登录资产时使用的用户,可以理解为登录资产用户,如 web,sa,dba(
ssh web@some-host
),而不是使用某个用户的用户名跳转登录服务器(ssh xiaoming@some-host
); 简单来说是用户使用自己的用户名登录 JumpServer,JumpServer 使用系统用户登录资产。 系统用户创建时,如果选择了自动推送,JumpServer 会使用 Ansible 自动推送系统用户到资产中,如果资产(交换机)不支持 Ansible,请手动填写账号密码。
实际中,系统用户都是使用资产服务器上已存在的业务用户,如www等;当此处创建的系统用户在资产服务器上不存在时,JumpServer会自动在该服务器上创建用户。
因为是测试,本次实验直接让JumpServer为资产服务器创建用户,而不事先在资产服务器上创建用户。
这里通过批量导入的方式,创建四个用户,app1、app2、app3、db,分别对应四名用户的管理需要。
点击资产管理-系统用户-导入,点击下载按钮,下载系统用户导入模板。
填写相关系统用户的信息,保存。
下图隐藏了选填选项。
自动推送的
导入系统用户。
导入成功:
2.2.3:创建节点
左侧是资产树,右击可以新建、删除、更改树节点,授权资产也是以节点方式组织的,右侧是属于该节点下的资产。
节点可以理解为对资产进行分组,按应用程序、或者业务类型进行划分。
这里创建应用程序和数据库两个节点,分别对应app和数据库服务器。
点击资产管理-资产列表,在左侧资产树的Default上右击,选择创建节点。
创建两个节点:
右击相应节点,选择显示节点详情,记录节点ID,以备导入资产时使用:
- 应用程序的节点ID:0098b2c5-8932-494d-ade9-3205ae67a427
- 数据库的节点ID:fab372db-4aee-48b1-9838-a14c490cb92e
2.2.4:创建资产
采用批量导入的方式,将node101、102、103、111、100五台服务器导入。
点击资产管理-资产列表-导入,点击下载模板:
在资产导入模板中填写服务器信息,并保存。
下图已隐藏空的选填项。
官方的字段填写说明:
表单 说明 主机名 主机名, 具有唯一性 IP 资产 IP, 可以重复 协议 该项不需要填写 端口 该项不需要填写 协议组 必填, 多个协议 [‘ssh/22’, ‘rdp/3389’] 激活 TRUE或FALSE,False 时该资产对用户不可见 公网IP 选填, 仅标识 资产编号 选填, 仅标识 制造商 选填, 仅标识 型号 选填, 仅标识 序列号 选填, 仅标识 CPU型号 选填, 仅标识 CPU数量 选填, 仅标识 CPU核数 选填, 仅标识 CPU总数 选填, 仅标识 内存 选填, 仅标识 硬盘大小 选填, 仅标识 硬盘信息 选填, 仅标识 操作系统 选填, 仅标识 系统版本 选填, 仅标识 系统架构 选填, 仅标识 主机名原始 选填, 仅标识 备注 选填, 仅标识 管理用户 必填, 管理用户的 id 网域 选填, 如果使用网域请填写网域的 id 系统平台 必填, Linux, macOS, Windows, Unix 等 节点 资产节点的 id 节点名称 对应节点 id 的名称,如[’/Default/Test’] 标签管理 选填, 仅标识
导入资产列表:
导入成功:
资产创建成功后,JumpServer就会通过指定的管理用户(root)来获取资产信息,点击相应主机名,即可看到获取到的资产信息:
2.2.5:命令过滤
系统用户可以绑定一些命令过滤器,一个过滤器可以定义一些规则 当用户使用这个系统用户登录资产,然后执行一个命令 这个命令需要被绑定过滤器的所有规则匹配,高优先级先被匹配, 当一个规则匹配到了,如果规则的动作是允许,这个命令会被放行, 如果规则的动作是禁止,命令将会被禁止执行, 否则就匹配下一个规则,如果最后没有匹配到规则,则允许执行。
2.2.5.1:创建命令过滤器
先创建命令过滤器。然后在命令过滤器中添加命令过滤规则。
点击资产管理-命令过滤-创建,创建一个名为禁止危险命令的命令过滤器:
点击提交,完成创建:
2.2.5.2:创建命令过滤器规则
点击相应的命令过滤器,点击命令过滤器规则-创建,创建禁止如下命令的规则:
reboot
rm
poweroff
ssh
bash
.
mv
点击提交:
创建成功:
2.2.5.3:系统用户添加命令过滤器
转到系统用户界面,点击相应系统用户操作列的更新按钮,分别添加命令过滤器。
2.3:权限管理
在创建好用户和资产的基础上,就要进行用户和资产之间的规则创建,即哪个用户可以访问哪些服务器,以及可以对这些服务器进行什么样的操作等。
2.3.1:创建资产授权规则
可以点击权限管理-资产授权-创建,进行资产授权规则的创建。
app1、app2、app3通过指定用户和资产进行授权;
db是通过指定用户组和节点进行授权的。
2.3.1.1:app1授权规则
2.3.1.2:app2授权规则
2.3.1.3:app3授权规则
2.3.1.4:db授权规则
2.3.1.5:创建完成
2.3.2:验证资产授权规则和命令过滤
2.3.2.1:wangyi用户验证
使用wangyi用户登录jumpserver,验证对node101的访问:
查看用户资产:
连接资产:
点击Web终端,打开luna窗口,单机左侧资产树中的资产,进行连接。
wangyi用户登录jumpserver后,jumpserver是使用app1这个系统用户连接node101的。
2.3.2.2:lier用户验证
查看lier用户资产:
lier用户登录jumpserver后,jumpserver是使用app2这个系统用户连接node102的。
2.3.2.3:zhaosan用户验证
查看zhaosan用户资产:
zhaosan用户登录jumpserver后,jumpserver是使用app3这个系统用户连接node103的。
2.3.2.4:zhangku用户验证
查看zhangku用户资产,zhangku用户有两个资产,node100和node111:
zhangku用户登录jumpserver后,jumpserver是使用db这个系统用户连接node100和node111的。