最近在网上,看到开源跳板机系统(Jumpserver),按照作者手册搭了一套系统。以下描述下,我对这套系统的认识以及部署使用过程中遇到一些问题。
一、Jumpserver架构认识
Jumpserver包括:
a、LDAP系统:集中统一管理服务器用户,包含server端和client端。一般为防止单点故障,ldap系统采用主备部署模式,保障堡垒机系统正常运行。
b、Jumpserver系统:主要包括服务器身份认证、授权、访问控制、日志审计等功能。
1、web管理后台是在python开发的Django开源web应用MVC框架。
2、ldap的client端服务器设置,只允许ldap的主备server端ssh连接,这样所有服务器都只能通过堡垒机连接其他服务器进行操作。
3、ldap的server端采用shell+python的组合,shell判断ssh到ldap的server用户(设置特殊用户不受Jumpserver控制),非特殊用户执行python jumpserver.py ,只允许访问授权服务器。
4、jumpserver.py 脚本使用python的pexpect的interact交互模式和日志功能,登录授权服务器操作和记录用户的操作记录。
5、nodejs实时监控着,每个用户当前状态
二、Jumpserver 部署
1、部署过程
参考:http://laoguang.blog.51cto.com/6013350/1576729
2、部署问题
a、ldif_read_file: Permission denied for “/etc/openldap/slapd.d/cn=config.ldif” 权限问题
查看操作记录发现
修改/etc/openldap/slapd.d 权限时,chown -R ldap:ldap /etc/openldap/slapd.d ,少了给‘/’
导致未修改子目录权限,重启slapd时没有权限生成配置文件。
[[email protected] ~]# cd /etc/openldap/
[[email protected] openldap]# ls
certs ldap.conf schema slapd.conf slapd.d
[[email protected] openldap]# ll
total 24
drwxr-xr-x. 2 root root 4096 Dec 1 09:45 certs
-rw-r–r–. 1 root root 280 Oct 15 17:55 ldap.conf
drwxr-xr-x. 2 root root 4096 Dec 1 09:46 schema
-rw-r–r–. 1 root root 4646 Dec 1 09:56 slapd.conf
drwx——. 3 ldap ldap 4096 Dec 1 09:58 slapd.d
[[email protected] openldap]# cd slapd.d/
[[email protected] slapd.d]# ll;
total 8
drwxr-x—. 3 root root 4096 Dec 1 09:58 cn=config
-rw——-. 1 root root 1262 Dec 1 09:58 cn=config.ldif
[[email protected] slapd.d]# ll
total 8
drwxr-x—. 3 root root 4096 Dec 1 09:58 cn=config
-rw——-. 1 root root 1262 Dec 1 09:58 cn=config.ldif
[[email protected] slapd.d]# cd ..
[[email protected] openldap]# chown -R ldap:ldap /etc/openldap/slapd.d/
[[email protected] openldap]# ll
total 24
drwxr-xr-x. 2 root root 4096 Dec 1 09:45 certs
-rw-r–r–. 1 root root 280 Oct 15 17:55 ldap.conf
drwxr-xr-x. 2 root root 4096 Dec 1 09:46 schema
-rw-r–r–. 1 root root 4646 Dec 1 09:56 slapd.conf
drwx——. 3 ldap ldap 4096 Dec 1 09:58 slapd.d
[[email protected] openldap]# cd slapd.d/
[[email protected] slapd.d]# ll
total 8
drwxr-x—. 3 ldap ldap 4096 Dec 1 09:58 cn=config
-rw——-. 1 ldap ldap 1262 Dec 1 09:58 cn=config.ldif
[[email protected] slapd.d]# service slapd start
Starting slapd: [ OK ]
b、ldap使用sudo权限问题
按照部署文档完成之后,ssh到授权服务器之后sudo执行命令的时候,还是提示输入密码,而且执行不成功。
解决基本思路:检查ldap数据库中是否存在该用户数据。
三、LDAP为何物?
1、LDAP是轻量级目录访问协议,英文全称是Lightweight Directory Access Protocol,是一种访问存储在信息目录中的信息的跨平台Internet标准协议,是基于TCP/IP实现的目录服务。简化了X500的目录协议的移植,简化实现方法。
2、LDAP目录以树状的层次结构来组织和存储数据,目录由目录入口对象(Entry)组成,目录入口对象(Entry)相当于关系数据库中表的记录,可直接成为LDAP目录记录,是具有区别名DN(Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key);属性由属性类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索和灵活性的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。
3、目录服务与数据库服务的不同之处在于:LDAP目录服务缺少数据库的事务功能和大规模数据的数据库支持;但专门针对读密集型的操作进行了专门的优化,极大地提高数据读取和查询性能。
四、LDAP适合的应用
1、分布式读取,更新少
2、可跨平台读取
3、平面数据,不需要对维度
4、LDAP目录是有关用户、系统、分组、网络、服务和标识的集合;LDAP目录中可以存储各种类型的数据,LDAP对于这样存储这样的信息最为有用,也就是数据需要从不同的地点读取,但是不需要经常更新。
5、LDAP作为存储用户信息的目录服务,可提供基本的用户身份密码验证。
五、对Jumpserver后期改进的建议
1、控制Jumpserver用户超时时间,比如:10分钟无操作,pexpect模块直接断开交互模式,退出是否资源。
2、输入密码错误超过设定次数,直接禁止并进入风险预警机制,更新密码周期。
3、第一次使用Jumpserver系统时,强制用户修改初始密码
4、登录IP限制,相同用户每天允许登录次数,IP个数
5、管理后台,服务器分组功能,硬件信息采集功能等