ldap配置详解(探索LDAP安全)
0x01 关于 ldap 的一些简单科普
`ldap` 基于tcp/ip的轻量级目录访问协议,属于X.500目录协议族的一个简化版本
你可以暂时把它粗暴的理解成 `一种特殊类型的数据库` ,通常,这种数据库文件后缀都为`.ldif`,并使用特殊的节点查询语句来获取相应数据
实际生产环境中,主要还是用它来做各种查询比较多,既是查询,也就意味着肯定会有大量的读操作
虽然,ldap也支持一些简单的更新功能,即写,但一般都不会用,因为它在写方面的效率并不高
如果真的是写比较多,直接用各种关系型数据库代替就好了,实在没必要用ldap,毕竟,术业有专攻
另外,ldap 跨平台,功能简洁,易管理,配置,读性能也不错,亦可分布式部署`不知道是不是可以把它的分布式理解成windows域的目录树,目录林概念`
用的最多的可能就是进行`集中身份验证`,最后,我们还需要知道的是,默认情况下,ldap的所有数据都是直接以明文传输的,容易被截获,不过好在它支持ssl
0x02 其它的一些常用目录服务工具
X.500 过于庞大臃肿
ldap 轻量且配置简单
虽然这种纯图形化的工具貌似是很好用,但个人还是不太建议在实际生产环境中用,验证过于简单,比较危险,毕竟只是个web脚本,很容易被入侵者扫目录,扫域名时扫到,另外,也极易被各类搜索引擎抓到,如下
1
inurl:templates/login.php intitle:LDAP Account Manager
0x13 启用sasl,让指定的服务都通过ldap的方式进行集中身份验证
# yum install *sasl* -y
# rpm -qa | grep sasl
# saslauthd -v sasl所支持的所有认证类型
# sed -i 's#MECH=pam#MECH=ldap#g' /etc/sysconfig/saslauthd
# grep -i mech /etc/sysconfig/saslauthd
MECH=ldap
# /etc/init.d/saslauthd start
# chkconfig saslauthd on
# vi /etc/saslauthd.conf
ldap_bind_dn: cn=klion,dc=ldapmaster,dc=org
ldap_bind_pw: klion
ldap_search_base: ou=People,dc=ldapmaster,dc=org
ldap_filter: uid=%U
ldap_password_attr: userPassword
# ps -ef | grep sasl
# testsaslauthd -u super -p admin 此时便会用ldap账户来进行验证
0x14 以让svn服务通过ldap进行认证为例,其实非常简单,首先,你需要先在本机快速部署好svn,至于具体的部署方法,请参考之前的相关文章,当然,除了svn,像vsftpd,samba这类的基础服务也都可以通过ldap进行身份验证,并非重点此处不再赘述
# 让svn通过ldap进行验证,不再走svn自己的验证了
# vi /etc/sasl2/snv.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
# 编辑svn主配置文件
# vi /svn/svndata/svndoc/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /svn/svnpasswd/passwd
authz-db = /svn/svnpasswd/authz
[sasl]
use-sasl = true # 开启svn的sasl验证
# 把svn本地用户全部注释掉,因为一旦开启sasl就不再走svn本地验证了
# vi /svn/svnpasswd/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
# web = 654321
# webadmin = admin110
# admin = 123456
# bakuser = admin
# guest = svn110
# svn = svnadmin
# 另外,还需要把ldap用户加到svn认证文件中,不然,依然是登不上svn的
# 虽然用户密码验证过程不走本地,但权限认证过程还是在本地进行的
# vi /svn/svnpasswd/authz
[aliases]
[groups]
administrator = web
sec = webadmin,admin
ldap_user = svnnew,super
[svndoc:/]
svn = rw
@administrator = rw
@ldap_user = rw
[svndoc:/web01]
bakuser = rw
[svndoc:/web02]
guest = rw
下面是svn通过ldap进行认证的实际效果
0x15 关于ldap主从同步,后续有机会再说,这次我们先初步入个门 ^_^
0x16 最后,我们再来关注下openldap的一些安全问题,最重要的可能就是允许匿名访问,对此的利用没什么好说的,直接用各种ldap客户端工具,如,LDAPSoft Ldap Browser或者JXplorer都行,只需指定正确的ip,端口和dn,然后用匿名的方式连上去即可
后话:
建议实际生产环境中直接使用加密传输,另外,可根据实际业务需求配置更具针对性的ACL,至于针对web层的ldap注入 [ 其实跟sql注入没什么两样,只是查询语言不同而已 ],篇幅原因,我们在后续的相关章节中还会再做详细说明,待续……
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com