目前,使用的是SSHConfig+ansible的模式进行管控各开发&运维人员的公钥,以及云主机的登录。

现阶段属于纯跳版机模式,并没有审计功能,存在安全隐患,对于人员离职权限的回收不够彻底,公钥的分发不够方便,开发&运维人员都混用一个账号进行登录,没有审计功能,粗放式权限管理,外放了root密码。

综合上述缺点,需要一个审计系统。

目前业界比较良心的开源审计系统
http://www.jumpserver.org/

其实现在许多云供应商都在推自己的审计系统产品,有些也是基于jumpserver进行二次开发的。

堡垒机不仅集中管理和分配全部账号,更重要的是能对运维/开发人员的运维操作进行严格审计和权限控制,确保运维的安全合规和运维/开发人员的最小化权限管理。

从实际应用来看,堡垒机主要管控企业的服务器资源。

1、JumpServer的安装:略(参考官方文档),后续可能会进行Docker化的定制(coco-ssh server,jumpserver,luna web terminal插件)。

梳理权限与规则:

JumpServer用户管理:

  1. 梳理各项目组的开发与运维人员的列表,以项目名创建组,通过手工的方式进行开发人员与运维人员的编制。
  2. 用户是授权和登陆的主体,将来为每个员工建立一个账户,用来登录跳板机,将资产授权给该用户,查看用户登陆记录命令历史等。创建用户,例如:以开发者张三的名称创建用户,后续张三将以dev的身份进行资产的登录如 web, sa, dba,dev,oc(ssh web@some-host)
  3. 管理用户是服务器的root,或拥有 NOPASSWD: ALL sudo权限的用户,Jumpserver使用该用户来 推送系统用户、获取资产硬件信息等,大概会使用root进行管理,采用密码管理的方式。
  4. 系统用户是服务器上建立的一些真实存在的可以ssh登陆的用户,如 dev,sa, dba等,系统用户可使用jumpserver推送到服务器上,也可以利用自己公司的工具进行推送,授权时将用户、资产、系统用户关联起来,则表明用户有权限登陆该资产的这个系统用户 如:用户 小明 以 dev 系统用户登录 172.16.1.1资产,简单理解就是 将某个资产上的某个系统用户映射给这个用户登录。
  5. 角色为用户的人员禁止授权su权限,不提供root密码就没有su权限,需要时再申请,sudo su。
  6. 创建系统用户如Dev和oc时需保存密钥。

JumpServer资产管理:

  1. 区分不同云供应商,每个节点对应每个云供应商、项目,节点下再区分正式服、辅助支撑服。

测试环境的部署:

  1. 选择一个云供应商和地区进行部署一台JumpServer服务器,以及一些测试服。
  2. 购买新资产进行自动添加还需参考JumpServer提供的API实现自动化。
  3. 测试使用REST API 进行资产的自动添加资产以及权限管理
  4. jumpserver集成sdk

获取token

curl -XPOST -d  "username=admin;password=xxxxx" http://192.168.9.250/api/users/v1/token/

查询用户可见资产

curl -X GET --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'Authorization: Bearer b5abc7c5b5cf4be780370d607181c5fa' 'http://192.168.9.250/api/assets/v1/assets/'

示例:

1、用户登录
curl -XPOST -d 'username=admin;password=admin' http://192.168.188.40/api/users/v1/token/

{"Token":"14a9f25397444abb8666c9fa00c294c9","Keyword":"Bearer"}

2、获取所有的用户
curl -H 'Authorization: Bearer 14a9f25397444abb8666c9fa00c294c9' -XGET http://192.168.188.84:8080/api/users/v1/users/

3、创建用户组
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'Authorization: Bearer 14a9f25397444abb8666c9fa00c294c9' -d '{"id":"1162e7a4-90f6-4e5e-b7cf-14581adb7621","is_discard": false,"discard_time": "","name":"epointgroup","comment":"","created_by": "administrator","date_created":"2018-06-06 06:03:03 +0000","discard_time":"2018-06-11 06:03:03 +0000"}' 'http://192.168.188.84/api/users/v1/groups/'

4、创建用户并设置用户组

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'Authorization: Bearer 14a9f25397444abb8666c9fa00c294c9' 'http://192.168.188.84/api/users/v1/users/' -d '{"id": "13f1432d-9a8c-4d83-aad9-c3177e3a387d","groups": ["1162e7a4-90f6-4e5e-b7cf-14581adb7620"],"last_login": "2018-05-19 06:03:03 +0000","is_active": true,"date_joined": "2018-06-06 06:03:03 +0000","username": "ijarvis","name": "ijarvis","email": "ijarvis@sina.com","role": "Admin","avatar": null,"wechat": "","phone": "","otp_level": 0,"comment": "","is_first_login": true,"date_expired": "2088-05-19 06:03:03 +0000","created_by": "2018-05-19 06:03:03 +0000"}'

5、 获取所有资产列表

curl -X GET --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'Authorization: Bearer 14a9f25397444abb8666c9fa00c294c9' 'http://192.168.188.84/api/assets/v1/assets/'

6、创建用户资产

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'Authorization: Bearer 14a9f25397444abb8666c9fa00c294c9' -d '{"id": "9f7a3cd5-b3be-4a4f-a7f6-0cbcb8529e71","ip": "192.168.186.66","hostname": "Hadoop_186_66","port": 22,"platform": "Linux","is_active": true,"public_ip": null,"created_by": null,"comment": "","admin_user": "06fe163e-aacd-48ce-a7a7-a15800587b99", "nodes": ["7c0b0eda-8555-42e4-9205-992957c46d56"]}' 'http://192.168.188.84/api/assets/v1/assets/'

逻辑图:

参考资料