Shell-Jumper是一个纯shell开发的跳板机,能够满足基本的SSH免密登录跳板,登录权限控制,登录审计等功能。
同先期一样,跳板机采用RSA秘钥登录,且每个用户都拥有自己的一个账号。
同时用户只被允许连接跳板机,其他ESC不再被允许直接登录(限制SSH端口只对跳板机开放)。
用户登录跳板机后,出现在用户面前的是该用户可以登录的主机列表页面,其原理是采用通用的xxx账号的秘钥进行SSH登录,返回给用户登录成功后的目的主机控制台。
这里的xxx账号,对应data/ex.sh
中的user_account,请务必保持两者一致
先期的SSH登录权限管理中,所以用户均通过xxx账号进行登录,且用户可登录的权限是通过该用户公钥是否出现在对应的ECS主机上实现的,不便于管理维护。
新的跳板机登录权限管理中,通过相关的配置文件,指定该用户可以登录的主机名称列表,在跳板机页面只供给定的主机可以登录,管理维护方便,权限控制得当。
管理员账号同样可以根据配置直接跳过跳板机进行管理。
跳板机方案实践中,作为普通用户,跳板机只做跳板用,本身不允许有登录的可能。只有管理员才具备登录维护的通道,最大限度的防止跳板机本身被攻陷。
后续会对用户的登录登出进行日志记录
脚本说明:
- 指定某几个账号的UID为管理员,不进入跳板程序
脚本说明:
- 指定两个配置文件/data/conf/jumperPermission,/data/conf/jumperList,分别对应主机列表和用户权限
- 根据登录用户获取该用户应该有的主机名称列表
- 根据主机名称列表获取详情主机登录信息,并展示供用户选择
- 根据用户选择进行主机的远程登录
脚本说明:
- 全局跳板机主机列表必须一行一条记录
- 记录的格式为 主机名=IP:端口,主机名自定义,最好识别性强,且主机信息不允许重复,必须唯一
- 主机名需与/data/conf/jumperPermission内的主机名一
脚本说明:
- 全局用户权限列表必须一行一条记录
- 记录的格式为 用户名=主机名1,主机名2,.... 只有1条主机权限的,不需要添加逗号,且用户权限信息不允许重复,必须唯一
- 如果用户权限信息同时出现在/etc/profile.d/jumper.sh中,以/etc/profile.d/jumper.sh的权限为准。
脚本说明:
- 用户选择需要跳转登录的主机,均是通过后端的xxx账号下的秘钥和密码进行的
- 需要将xxx账号的私钥文件存放为/home/$user/id_rsa
- 后端主机的公钥需要定期更换, 同时跳板机对应的私钥及其密码也需要相应更换
脚本说明:
- 此文件仅供自定义一些额外需要查询的内容,比如主机公网IP关系对应表,服务关系表等