初探 LDAP 安全 [ 一 ]-初探 LDAP 安全 [ 一 ]-华盟网

初探 LDAP 安全 [ 一 ]

华盟学院山东省第二期线下学习计划

0x01 关于 ldap 的一些简单科普

`ldap` 基于tcp/ip的轻量级目录访问协议,属于X.500目录协议族的一个简化版本

你可以暂时把它粗暴的理解成 `一种特殊类型的数据库` ,通常,这种数据库文件后缀都为`.ldif`,并使用特殊的节点查询语句来获取相应数据

实际生产环境中,主要还是用它来做各种查询比较多,既是查询,也就意味着肯定会有大量的读操作

虽然,ldap也支持一些简单的更新功能,即写,但一般都不会用,因为它在写方面的效率并不高

如果真的是写比较多,直接用各种关系型数据库代替就好了,实在没必要用ldap,毕竟,术业有专攻

另外,ldap 跨平台,功能简洁,易管理,配置,读性能也不错,亦可分布式部署`不知道是不是可以把它的分布式理解成windows域的目录树,目录林概念`

用的最多的可能就是进行`集中身份验证`,最后,我们还需要知道的是,默认情况下,ldap的所有数据都是直接以明文传输的,容易被截获,不过好在它支持ssl

0x02 其它的一些常用目录服务工具

X.500 过于庞大臃肿

ldap  轻量且配置简单

windows活动目录  有平台限制

NIS 个人暂时还没接触过

0x03 了解ldap内部数据的大致存储方式

和常规关系型数据库不同的是,ldap并非按照常规的库,表,字段方式来存储数据

而是按照一种特殊的倒树状结构层级来组织管理数据,此处的树指的就是目录信息树,即`DIT`

所谓的目录信息树其实相当于专门用来进行读操作的数据库

在DIT内部则由N个条目`entry`所组成,就相当于我们常规数据库表中每条具体的记录

而条目的内容则是由具有唯一标识名`DN`的属性[Attribute]及属性对应的值[value]所组成的这么一个集合

条目为ldap中最基础的操作单位,通常对ldap的增删改查都是以条目为基本单元进行的

如下则是一条完整的条目信息,其实就相当于常规关系型数据库中的一条记录

dn: cn=aima aima,ou=People,dc=ldapmaster,dc=org

objectClass: posixAccount

objectClass: inetOrgPerson

objectClass: organizationalPerson

objectClass: person

objectClass: shadowAccount

loginShell: /bin/bash

uid: aima

cn: aima aima

uidNumber: 10000

gidNumber: 173

sn: sec

givenName: aima

homeDirectory: /home/aima

shadowLastChange: 17520

userPassword:: e1NTSEF9OExmZ2FyUHQzeGl2K0RscWVOQ09Ma0lxTnkxTWRVeE4=

0x04 认识ldap中常见的一些缩写单词含义

初探 LDAP 安全 [ 一 ]

0x05 和很多服务相同,ldap服务同样也是工作在 C / S 架构模型下

服务端负责提供整个目录信息树,客户端只需拿着相应的信息树查询工具,向服务端提交查询请求,而后,服务端要么响应给具体的条目数据,要么直接返回一个指针

如果服务端返回的是指针,客户端还需再拿着该指针到指定的ldap服务器上去查询相应的条目数据

此次演示环境

CentOS6.8_x86_64 ip: 192.168.3.68 ldapmaster

CentOS6.8_x86_64 ip: 192.168.3.69 ldapslave

0x06 开始实战部署openldap,关于openldap本身其实并没什么太多好说的,就是ldap协议的一种具体实现而已

部署前环境准备,安装整个基础环境包,统一所有机器时间,机器名...

初探 LDAP 安全 [ 一 ]

安装openldap及其必要的依赖库

初探 LDAP 安全 [ 一 ]

0x07 以上没问题后,我们开始来配置OpenLdap,此处依然使用兼容2.3版本的配置方式

# cd /etc/openldap/

# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf

# ls -l

设置ldap管理员密码,还是那句话,实际生产环境中,这个密码务必要足够的强壮

初探 LDAP 安全 [ 一 ]

修改ldap数据库及日志设置,注意配置文件中的所有配置项必须顶格写

初探 LDAP 安全 [ 一 ]

详细的ACL编写,可直接参考其官方说明,如下

http://www.openldap.org/doc/admin24/access-control.html

0x08 让rsyslog记录ldap日志

初探 LDAP 安全 [ 一 ]

0x09 修改ldap数据库的存放路径

初探 LDAP 安全 [ 一 ]

0x10 一切配置就绪后,我们尝试启动openldap服务,默认它工作在tcp的389端口,如果是加密通信,默认端口则为636

初探 LDAP 安全 [ 一 ]

0x11 到此为止,ldap基本就算搭建好了,接下来,我们开始往ldap数据库中添加用户数据,在添加之前我们需要先把它转成符合ldap数据库的数据格式,如下

安装migrationtools工具,因为我们要它来导出本地用户数据

初探 LDAP 安全 [ 一 ]

使用migrationtools内置的脚本来进行导出

初探 LDAP 安全 [ 一 ]

使用ldapadd的添加条目,即 增,往ldap数据库中添加刚刚导出的数据

初探 LDAP 安全 [ 一 ]

使用ldapdelete删除指定条目,即 删

# ldapdelete -x -H ldap://ldapmaster.org -D "cn=klion,dc=ldapmaster,dc=org" -w klion "cn=test,ou=Group,dc=ldapmaster,dc=org"

使用ldapmodify修改指定条目,即 改

# ldapmodify -x -W -H ldap://ldapmaster.org -D "cn=klion,dc=ldapmaster,dc=org" -f fstab.ldif

使用ldapsearch查询指定条目,即 查询指定basedn下的所有条目

# ldapsearch -LLL -w klion -x -H ldap://ldapmaster.org -D "cn=klion,dc=ldapmaster,dc=org" -b "dc=ldapmaster,dc=org"

# ldapsearch -LLL -w klion -x -H ldap://ldapmaster.org -D "cn=klion,dc=ldapmaster,dc=org" -b "dc=ldapmaster,dc=org" "(uid=aima)"

备份ldap数据库

# ldapsearch -LLL -w klion -x -H ldap://ldapmaster.org -D "cn=klion,dc=ldapmaster,dc=org" -b "dc=ldapmaster,dc=org" "(uid=*)" >bak.ldif

0x12 使用各种ldap客户端管理工具来操作ldap数据库,此处暂以web端管理接口为例进行演示

初探 LDAP 安全 [ 一 ]

初探 LDAP 安全 [ 一 ]

虽然这种纯图形化的工具貌似是很好用,但个人还是不太建议在实际生产环境中用,验证过于简单,比较危险,毕竟只是个web脚本,很容易被入侵者扫目录,扫域名时扫到,另外,也极易被各类搜索引擎抓到,如下

inurl:templates/login.php intitle:LDAP Account Manager

初探 LDAP 安全 [ 一 ]

0x13 启用sasl,让指定的服务都通过ldap的方式进行集中身份验证

初探 LDAP 安全 [ 一 ]

0x14 以让svn服务通过ldap进行认证为例,其实非常简单,首先,你需要先在本机快速部署好svn,至于具体的部署方法,请参考之前的相关文章,当然,除了svn,像vsftpd,samba这类的基础服务也都可以通过ldap进行身份验证,并非重点此处不再赘述

初探 LDAP 安全 [ 一 ]

初探 LDAP 安全 [ 一 ]

下面是svn通过ldap进行认证的实际效果

初探 LDAP 安全 [ 一 ]

初探 LDAP 安全 [ 一 ]

0x15 关于ldap主从同步,后续有机会再说,这次我们先初步入个门 ^_^

0x16 最后,我们再来关注下openldap的一些安全问题,最重要的可能就是允许匿名访问,对此的利用没什么好说的,直接用各种ldap客户端工具,如,LDAPSoft Ldap Browser或者JXplorer都行,只需指定正确的ip,端口和dn,然后用匿名的方式连上去即可

初探 LDAP 安全 [ 一 ]

后话:

建议实际生产环境中直接使用加密传输,另外,可根据实际业务需求配置更具针对性的ACL,至于针对web层的ldap注入 [ 其实跟sql注入没什么两样,只是查询语言不同而已 ],篇幅原因,我们在后续的相关章节中还会再做详细说明,待续……

文章出处:klion's blog

www.idc126.com

原文出处:https://klionsec.github.io/2017/12/20/ldap-sec/

本文由 华盟网 作者:congtou 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论