免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 971 | 回复: 0
打印 上一主题 下一主题

在Linux上建立LDAP服务器(四) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-09 16:54 |只看该作者 |倒序浏览

在Linux上建立LDAP服务器(四)
By:个人收集   
在《
在Linux上建立LDAP服务器(三)
》我们使用真实数据来组装我们的目录,引导你毫无费力的避开一些常见误区。在本系列的最后一个安装部分,我们将讨论如何保护我们OpenLDAP服务器的安全。
目录
密码散列
加密
生成TLS证书
重写slapd.conf
迁移用户数据
结论
Resources

我们先回顾一下,part1 介绍了轻型目录访问协议,细述了协议能做什么,不能做什么。part2 阐述了安装和非常基本的配置。 part3 展示了使用真实数据组装目录以及如何避免一些常见错误。
今天的安全论述先从散列你的密码开始。
密码散列
我们不想将rootpw 存储在服务器上的明文内,所以我们改用散列。有几种普遍使用的散列方法可通过slappasswd 命令来实现,包括SHA、SSHA、MD5、和CRYPT在内。CRYPT最差,不要用它。SSHA是默认方法,MD5也不错。使用slappasswd 可以生成一个很好的散列rootpw:
$ slappasswd
New password:
Re-enter new password:
{SSHA}Lr7P++EoH6GpIS4GZ36vkV4R422RuW7R
现在复制粘贴这个很好的新散列到/etc/ldap/slapd.conf内:
rootpw        {SSHA}Lr7P++EoH6GpIS4GZ36vkV4R422RuW7R
这可以是一个永久设置,很适合用在小型的简单的LAN上。 更好的解决方案就是创建一个LDAP记录,该记录定义了LDAP管理员,还为LDAP管理员使用slapd.conf中的ACLs (access control lists)定义了访问权限。请看OpenLDAP管理员的指南中的重要章节chapter on ACLs ――它是我看到的关于ACLs的最好的指南。
加密
OpenLDAP 默认采用明文在网络上传送信息,包括密码和注册在内。加密可以防止中途截取和窃听。加密需要以下工具:
OpenSSL
Cyrus SASL
这些在你的系统上应该有。如果没有,不妨先骂它两句,然后访问你的安装盘或者你的版本的Web站点,找到他们。在Debian上,寻找 libssl和libsasl;在基于RPM的系统上,寻找openssl、 cyrus-sasl、和cyrus-sasl-md5。(如果你在这一点上偏执的话,那就去吧。 LDAP相当复杂,所以偏执也是一种可以接受的正常行为。)
生成TLS证书
首先我们必须生成一张服务器证书。这是一张自我生成的仅供slapd 使用的证书。如果你不需要安装“认证机构”认证其他证书,也不需要某种信任的第三组织认证机构,如Thawte,这个方法够用了。
在包含slapd.conf 的目录下运行下列命令。他将会产生一个新的X509 证书,不需要密码。他还将证书命名为slapd_cert.pem,密码命名为slapd_key.pem,并给与它一年的使用期限:
root@windbag:/etc/ldap/# openssl req -new -x509 -nodes -out slapd_cert.pem -keyout slapd_key.pem -days 365
Generating a 1024 bit RSA private key
...........++++++
...................++++++
writing new private key to 'slapd_key.pem'
然后它会向你提出一串问题。不要怕,一一回答他的问题好了。所有这两个文件都必须属于ldap 用户,该用户在Red Hat上称为'ldap.' (在Debian上叫做'root.')现在设定你的权限―― slapd_cert.pem 必须是全世界易懂的,slapd_key.pem 只有ldap 用户才可以读,不允许任何人写入。
重写slapd.conf
接下来我们需要告诉slapd 到哪里找到这些文件:
database     bdb
# The base of your directory in database #1
suffix       "dc=carlasworld,dc=net"
rootdn       "cn=Metest,dc=carlasworld,dc=net"
rootpw       {SSHA}Lr7P++EoH6GpIS4GZ36vkV4R422RuW7R
# Where the database file is physically stored for database #1
directory    "/var/lib/ldap"
#Specify ciphers
TLSCipherSuite HIGH:MEDIUM:+SSLv2:+SSLv3
#TLS keyfile locations
/etc/ldap/slapd_cert.pem
/etc/ldap/slapd_key.pem
你知道哪种密码采用哪种方式命名吗?首先看看你的your OpenSSL支持什么:
$ openssl ciphers -v
他将会产生一个长长的、让人印象深刻的列表。上面例子中使用的术语是通配符。HIGH 表示使用密码长度超过128位(MEDIUM = 128 bits)的所有密码。我相信我们都不想使用LOW,它只有56和64位那么长。(参考 OpenSSL.org,以找到更多此类信息)
现在我们需要重新启动ldap监控程序。在Red Hat上,键入:
# /etc/init.d/ldap restart
在 Debian上键入:
# /etc/init.d/slapd restart
迁移用户数据
PADL软件还提供了几种可爱的脚本来减轻组装LDAP目录的琐事。他们抽取了你现有的用户数据,创建更好的LDAP目录条。请在他们的站点上寻找“迁移工具”。然后,你需要编辑migrate_common.ph, 将你指定的网络设置包括进来。
使用/etc/services 或者/etc/protocols 可能会打乱LDAP服务器,产生异常,这是毫无意义的。对于Linux来说这些异常是相当静态的,普遍的;你不需要让LDAP为他们所用。我们从迁移 /etc/passwd 和 /etc/group开始。我建议备份/etc/passwd和 /etc/group,然后在副本(migrate_group.pl, migrate_passwd.pl)上先运行恰当的脚本。
他将会产生.ldif文件,检查该文件,确认他们是按你希望的方式完成。脚本使用起来轻而易举:
# migrate_passwd.pl  /etc/passwd  passwd.ldif
然后,采用平常的方式通过ldapadd添加.ldif文件到数据库内:
# ldapadd -x -D "cn=Manager,dc=carlasworld,dc=net" -W -f passwd.ldif
结论
OpenLDAP是一个重要的程序。他也是非常复杂的。希望本系列能够帮助你获得最初的速度冲击,你现在已经有了可以运行的服务器,你可用它来进行测试或者学习。在Resources中,我列出了我能找到的最有用的资源,他们可帮助你理解最难的LDAP组件:模式、ACLs,和加密。
我还建议你寻找你的Linux版本中包括的有用文档,因为每个版本安装和配置OpenLDAP以及其他设备如TLS和SASL的方法大不相同。
Resources
OpenSSL

Cyrus SASL

Building an Address Book with OpenLDAP

Using OpenLDAP For Authentication; Revision 2

�C This is an excellent document that also teaches client configuration
PADL Software

Openldap.org



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19910/showart_138287.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP