当前位置:操作系统 > Unix/Linux >>

关于目录服务设计的几点体会

我是03级的学生.学习LDAP已经半年时间了.期间花了很多周折,不得不去了解活动目录, kerberos等以前从来没听过的(当然LDAP也是以前从来没听过的).这里把一些心得讲出来.主要是请个位叔叔阿姨哥哥姐姐们指点(恐怕这里没有我的弟弟妹妹们吧?)现在从我的学习轨迹和走过的弯路开表达我对一个目录服务规划的理解.

  1.重大误解

  关于LDAP的重大误解在国内可能是起源于CERNET的几篇学术报告.由于学术报告没有透露实现细节,使得大家认为LDAP是作验证的东东.于是出现了铺天盖地"LDAP认证"的字眼.这种误解不仅仅是在国内.国外好像也很普遍.因为在我读过的两本书中的作者都花了一定的篇幅纠正这种误解.

  <kerberos - the definitive guide>[Jason Garman2003]中的原文如下:

  A common misconception surrounding Kerberos and other authentication technologies is that they somehow replace directories,.....,another common misconception is that directories make good authentication systems by themselves.Therefore,a distinction needs to be made between authenticaiton,authorization,and directories...

  <LDAP Directories Explained>[Brian Arkills 2003]

  Does LDAP Provide Security?

  I often talk to people who confuse LDAP as a generalized solution to security concerns.There is a perception that "LDAP" is a security buzzword.LDAP is a directory technology,not a security technology.LDAP directories commonly use security technology,like Kerberos,to provide secure access to the directory,and they may also be used to store security-related information such as X509 certificates or authorization information.But LDAP itselft doesn't provide any security services....Don't get me wrong,in most products it is implemented relatively securely. ...

  很多所谓基于LDAP实现的认证都是使用目录来存储加密(多数是MD5)后的密码而已.但是这种密码很好被暴力破解.于是你的系统的安全状态有退回到未 shadow过的/etc/passwd时代.在介绍目录服务的书籍中提到/etc/passwd也算是一种目录.我们不能说一个文本文件是用来做认证的吧?

  很多LDAP的实现和应用都不使用LDAP来作验证.如微软的活动目录.还有斯坦福大学的目录都使用了kerberos.配置好的Windows域控制器本身就是一个Kerberos KDC.而斯坦福的目录也采用了Hedimal的Kerberos实现来做KDC和一个Windows 的KDC.这样的理由很明显的.如果要同过LDAP目录来实现一个十分安全的认证信息的存储要借助大量的外围协议.还不如直接使用这些协议本身.长话短说,我们应该让目录存储它改存储的东西.

  2.产品选择

  产品的选择取决于你部署目录服务的目的以及内容.如果活动目录提供给你的那些的功能足够你的需要.那么采用活动目录好了.因为他一开始就将安全实现的很好(操作系统安全不在讨论之列).而且配置简单.而且和客户端(windows)兼容的较好.

  如果你想在深入研究LDAP协议.或者要实现一个高度自定义的目录.那么选择OpenLDAP吧!

  3.安全措施.

  尽量少将安全敏感的信息存储在目录中.如果非存不可.一定要编辑ACL严格的控制访问权限如userPassword等.多数情况下目录服务还要主要是给其他的服务提供数据存储.这样的话应该让每个服务器绑定到不通的DN,同时在ACL中赋予他们较高的权限.而不能让所有的服务都使用rootdn来绑定.

  4.目录结构的设计

  虽然目录结构的设计可以比较灵活.但比较有经验的设计可以使你的目录结构更加合理,而且可以给你带来意想不到的好处.尽量参照前人实现的产品一吸收好的思想.分析微软的设计,在目录中建立分组的目录树是明智的做法.这样每个帐户的memberof属性的值他所属的组的DN,这样就可以方便的将基于组的访问控制列表也实现在目录结构中.相象如果活动目录中用户的memberof属性是"Aministrators"而不是"CN= Administrators,CN=Builtin,DC=example,DC=edu,DC=cn"的话会给微软带来多少麻烦?尽量的将更多的数据以树的形式组织,同时在字段中使用更多的DN代替单一的数值,可以最大限度的发挥目录服务的潜力.

  以上是我对目录服务设计的一些片面的理解,希望大家能够多提意见.这几天我们学校的目录服务的架构要确定下来希望大家能够在我犯错之前提前改正.就此感谢.
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,