Jumpserver 深度集成OpenLdap的二次开发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jumpserver 深度集成OpenLdap的二次开发相关的知识,希望对你有一定的参考价值。

摘要

Jumpserver 早期版本是与openldap 深度集成的,但新版本自建了一套独立的用户管理体系,仅支持用户级别的LDAP集成。虽然这种方式对Jumpserver维护相对方便,但其也失去了OpenLdap 所带来的集中化用户管理的便利。针对这个问题,我结合自己的工作经验,以及同事们的实际工作需求进行了如下的规划和实践。

Jumpserver 的用户管理体系

jumpserver 是一款功能非常强大的堡垒机软件,其实现了支持SSH、 Telnet、 RDP、 VNC 协议的管理,基于其功能的定义,为了能够有效管理目标主机以及识别使用者的身份,Jumpserver定义了如下3类用户:

  • 管理用户
    这是一个超级用户,该用户是目标主机系统的root权限用户,该用户用来更新资产信息、管理系统用户、sudo配置。这个用户需要使用者手动添加账号、密码,密码会被加密后保存在数据库中。

  • 系统用户
    这是一个连接用户,这是Jumpsever为实现自动连接目标主机设计的,Jumpserver 会自动创建一个随机密码,加密后记录在数据库中。这个用户会被管理用户在目标主机系统中自动创建及管理。

  • 用户
    这是一个身份用户的概念,其标识了使用者的身份,这个用户若是非ldap用户则不会在目标主机有任何体现,无法在目标主机上转换身份。

与openldap集成的用户规划

Jumpserver 设计了3类用户,实现了其堡垒机对用户的管理,但在实际使用中,存在一定的安全风险及管理不便。

  • 首先Jumpserver 是开源软件,一旦数据库中的数据被他人获得,会很容易被解密。
  • 其次,系统用户是一个共享的连接用户,sudo配置会影响所有共享该系统用户的用户,对于日常使用时,很难实现针对某个用户的权限管理,这给管理带来了极大的不便。
  • 再次,用户通过某台系统用户连接的主机上,很容易通过ssh跳转到内网的其他主机。

根据如上问题,规划了如下需求:

  • 不使用管理用户
  • 系统用户通过ldap集中管理
  • 系统主机通过ldap实现访问控制
  • 用户通过ldap集中管理
  • 用户通过ldap授权在指定的主机上有sudo权限
  • sftp 功能使得用户可以任意上传文件到目标主机,转为统一使用运维管理的FTP服务器

Jumpldap - Jumpserver 的二次开发实战

  • 设置管理用户为非必填
    在资产列表->创建资产页,将管理用户改为非必填,这样既保留了使用管理用户场景需求的功能,同时还满足了新的需求

技术图片

  • 增加ldap类型的系统用户设置
    在系统用户->创建系统用户,同步在ldap服务器上创建用户

技术图片

  • 在授权管理时同步ldap的host属性
    利用openldap 服务器的host属性功能实现用户与主机绑定,用户无法被登录非授权的主机。

  • 在openldap中授权的用户,直接登录即可,无需提前创建

  • 对用户授权的资产,实现登录及是否可sudo 的权限管理
    用户列表->目标用户->授权资产 进行用户主机的授权管理

技术图片

  • 屏蔽sftp连接
    建议使用统一的内网FTP实现文件上传和下载。

结束语

由于本人能力有限,使得jumpldap的开发仍存在诸多不足,但本人亦不敢藏拙,希望我的努力给大家的工作带来帮助,可以通过如下地址下载Docker镜像。
DockerHub JumpLdap

JumpServer 是一款非常棒的开源软件,再次感谢JumpServer的开发团队的辛勤付出。

以上是关于Jumpserver 深度集成OpenLdap的二次开发的主要内容,如果未能解决你的问题,请参考以下文章

集成OpenLDAP与Kerberos实现统一认证:基于SASL/GSSAPI深度集成

集成OpenLDAP与Kerberos实现统一认证:基于SASL/GSSAPI深度集成

ldap落地实战:gitlab集成openldap认证

操作指南|JumpServer与Keycloak集成对接

jumpserver配置ldap集成windows AD认证

4.如何为Hive集成RedHat7的OpenLDAP认证