2 JumpSrv使用
2.1 用户和组管理
- 创建组
- 创建用户
除了堡垒机的管理员, 其他用户都只给用户角色即可, 防止其他人登陆堡垒机进行修改
- 添加用户到组
验证用户登陆
再创建一个开发组, 添加普通用户, 用于演示
- 创建管理用户
管理用户用于JumpSrv登录被管理节点, 统计资产信息, 以及推送系统用户的时候使用, 所以此用户一定是一个可以登录到后端服务器的具备超级权限的用户(如后端服务器的root账户或者具有root权限的其他用户)
如果被管理节点root密码不同, 管理用户需要创建多个, 通过Name指定每个管理用户的管理范围, 作用. 同时, 在创建资产时, 要指定每一个资产的管理用户是谁, 这样才能保证JumpSrv远程到被管理节点时不会出问题.
- 创建系统用户
系统用户是JumpSrv跳转登录资产时使用的用户, 可以理解为登录资产的用户, 如web, dba(ssh web@hostname), 而不是使用某个用户的用户名跳转登录服务器, 简单来说用户使用自己的用户名登录JumpSrv, JumpSrv使用系统用户登录资产, 系统用户创建时, 如果选择了自动推送, JumpSrv会使用Ansible推送系统用户到资产中, 如果资产不支持Ansible, 比如网络设备, 那么需要填写账户和密码
系统用户, 建议在被管理节点事先创建好, 并且相同的服务, 比如Web服务, 用统一的用户名和用户id, 否则JumpSrv会自动创建系统用户, 这样容易造成相同服务在不同的服务器上用户id不同
系统用户创建好后, 可以在权限管理中, 将JumpSrv登录用户, 系统用户以及资产进行权限绑定, 规定哪些用户可以通过哪个系统用户登录到哪台后端服务器上
另外, 开发测试人员建议统一使用这个系统账号登录服务器进行操作, 避免用其他账号登录造成权限不够, 或者用root登录导致创建的文件都是root属主和属组, 导致服务器启动无法读取配置文件等问题, 因此, 系统用户的创建需要运维和开发进行协商, 确定哪个服务,用什么账号启动
由于服务都是以某个系统账号启用的, 因此, 该系统账号对于服务的安装目录, 数据目录肯定都是有权限的. 因此, 开发人员是可以从服务安装目录, 和数据目录拷贝文件的
举例:
developer-1的Jumpserver登陆账号为developer-1
登陆到JumpServer后, 需要连接到后端的服务器, 这时候就根据后端服务器的作用, 比如是web服务, 还是数据库, 需要在后端服务器事先创建好系统用户, 这个系统用户就是服务启动时用的账户, 比如, nginx, mysql等
之后, 把登陆用户, 系统用户和资产进行绑定, 这样developer-1就可以通过JumpServer连接到自己有权限的服务器上, 而登陆到服务器后, 使用的账户就是系统账户, 而非root账号, 防止误操作
2.2 资产管理
- 创建资产组
资产需要被分到不同的资产组, 进行统一的管理
- 创建资产
创建资产时, 资产必须是准备好的, 因为堡垒机会在创建资产时, 尝试对资产进行连接, 如果服务器无法连接, 会报错
准备两个CentOS7服务器, 作为被管理资产
10.0.0.217
10.0.0.207
- 填写资产信息
- 添加资产后, 堡垒机会自动连接到后端服务器, 统计硬件信息
如果后端服务器root密码修改了, 那么可以到资产用户列表中更改密码
- 资产导入和导出
- 资产导出, 导出资产时, 会导出所有节点组的资产
- 资产导入, 把10.0.0.207导入, 作为开发机
先创建一个developer节点, 获取节点编号
下载导入模板, 填写资产信息后导入, 导入时,要在对应的节点组导入
- 再添加一个ubuntu服务器, 10.0.0.219
新建一个test节点, 把10.0.0.219加进入
- 目前一共三台服务器, 三个节点组
2.3 权限管理
- 创建权限规则, 将用户和资产关联授权
授权时可以灵活授权, 把一个服务器, 授权给一个用户组, 或者单个用户. 也可以把一个服务器组,分给单个用户或者一个用户组
- 每个资产, 可以绑定多个系统用户, 用户登陆时会提示选择使用哪个系统用户进行登陆
- 验证普通用户权限
dba-1用户属于mysql组, 因此, 在dba-1账号就可以看到mysql服务器组中的资产
- 把开发服务器10.0.0.207单独授权给developer-1
- 节点要根据服务器组进行选择, 如果选择了Default组, 那么就会授权所有服务器组
2.4 文件上传和下载
由于用户登录到服务器的账号是一个系统账户, 因此, 登录后的工作目录是该系统账号的家目录, 同时只能在创建该系统账户时, 设置的sftp目录下, 上传和下载文件, 默认为/tmp
如果登录用户需要上传配置文件, 可以先上传到到/tmp目录, 然后把文件拷贝到对应的服务工作目录里, 如果是下载日志或者其他文件的话, 可以先把文件移动到/tmp目录, 再进行下载
- 文件上传, 上传文件只能上传到sftp规定的目录下, 默认是/tmp
在Windows本地创建一个文件, 然后上传到/tmp目录
直接把文件从Windows拖拽到终端即可
- 文件下载
右键需要下载的文件, 点击下载即可, 下载文件不能从终端直接拖拽到Windows
2.5 会话管理
- 在线会话
登陆管理员账号, 可以看到当前哪些用户, 连接到了哪些终端, 并且可以进行实时的监控, 一旦发现危险操作, 可以立即终断连接, 修改用户的登陆密码, 防止误操作
用户执行的每一条命令, 以及返回值, 都可以实时监控到
- 录像管理
- 历史会话也就是录像, 必须是用户退出终端后, 才会可见, 并且录像还支持命令复制
2.6 命令过滤
- 创建命令过滤器
- 填写规则
拒绝: 指定的命令都拒绝, 其余放行, 相当于黑名单
允许: 指定的命令可以执行, 其余都拒绝, 相当于白名单
- 和系统用户绑定
命令过滤器需要和系统用户进行绑定, 因为无论谁登录到某个服务器后, 都是用的系统账户
- 绑定后, 用户需要重新登陆终端, 即可生效
禁止命令举例
rm: rm所有的参数都拒绝执行. 如果只拒绝了rm和rm -rf,那么rm -r -f还是可以删除文件
poweroff
reboot
echo: echo拒绝执行是因为echo > 1.txt就会把文件清空
>: 和echo同理
bash: 脚本也不让执行, 因为rm, echo这些命令放到脚本里, 通过bash是可以执行的
sh
ssh #JumpSrv的问题就是, 一旦用某个系统用户登录到一个服务器后, 就可以ssh到其他的服务器, 如果有目标服务器的账号和密码就可以ssh到其他服务器了, 所以ssh要禁止
.
source
chmod: 不让开发修改文件权限
...