文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在Linux上建立LDAP服务器(四)

在Linux上建立LDAP服务器(四)

时间:2006-07-09  来源:oscarlin

在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
相关阅读 更多 +
排行榜 更多 +
龙珠格斗火柴人

龙珠格斗火柴人

飞行射击 下载
荒野恐龙猎手安卓版

荒野恐龙猎手安卓版

飞行射击 下载
超凡坦克英雄

超凡坦克英雄

飞行射击 下载