在Linux上建立LDAP服务器(四)-Linux应用
·当前位置: 学海荡舟-论文 >> 电脑技术 >> Linux-DOS >> Linux应用 >> 教程正文
在Linux上建立LDAP服务器(四)


在《在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

– This is an excellent document that also teaches client configuration

PADL Software

Openldap.org

小编说话:如果你想阐述自己的观点,请在下面的“发表评论”中发言


(责任编辑:赵纪雷)
   
  • 上一篇教程:
  • 下一篇教程:
  • :查看相关:
  • 双机互联的工具LapLink的使用

  • MS-DOS:解决Windows 所不能

  • DOS和Linux近年来的发展比较

  • Attrib、Data、Lable命令使用说明

  • Append、Debug、Diskcomp命令使用说明