在Linux上建立LDAP服务器一步一步.docx
- 文档编号:14061150
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:9
- 大小:26.42KB
在Linux上建立LDAP服务器一步一步.docx
《在Linux上建立LDAP服务器一步一步.docx》由会员分享,可在线阅读,更多相关《在Linux上建立LDAP服务器一步一步.docx(9页珍藏版)》请在冰点文库上搜索。
在Linux上建立LDAP服务器一步一步
在Linux上建立LDAP服务器
在Linux上建立LDAP服务器
(一)翻译:
kennywang
你的网络在规模和复杂性方面正处于成长期。
一路传播每件事物、发展壮大每件事物然后再丢弃每件事物将占用了它一生的时间。
当你痛苦的双手抱头,试图弄清楚的时候,你的用户不知道从哪里发现了你的秘密电话号码,他用无穷无尽的问题和要求来纠缠你——这就是我发现它的地方;我并不想记住一打不同的密码;没有工作应该是这样子的。
目录 LDAP能做什么 LDAP不能做什么 到数据库或者不到数据库 根和层 易于升级 ACIs的和ACLs 用户认证 一块卓越的奶酪 预告 几种可能的方案中,考虑两个:
1)找到一个新的隐藏地点或者2)实现一个LDAP服务器。
尽管找到一个新的隐藏点听起来很理想,他也只是一个我们留给以后的文章的主题。
这个系列将会阐释LDAP好在哪里,如何建立LDAP服务器的细节,以及你能用他做什么。
LDAP能做什么 简要地说,LDAP提供了访问、认证和授权的集中管理。
他是很容易自定义的并且能够:
·用户和用户组管理集中化 ·信息存储集中化 ·设置安全和访问控制 ·安全委托读取和修改权 ·服务于几乎所有平台 ·有效地缩放 LDAP不能做什么 ·成为一个负载过重的关联或交互数据库 ·成为一个文件系统 ·在许多范围内跳过高层结构LDAP协议跨平台、网络意识强、并且基于标准。
市场上现在有来自于各个投资商的各种各样的LDAP实现。
本系列将主要讨论Linux上的OpenLDAP。
到数据库或者不到数据库 现在我们来当一回书生(请戴上你的讨厌胡须和书生用的袖珍保护套)。
LDAP——轻型目录访问协议——是一个协议,不是一个数据库。
它可访问一种特殊类型的数据库,这种数据库为了快速阅读而最优化。
使用LDAP可得到相关的静态信息,如公司目录、用户数据、消费者数据、密码和安全钥匙。
OpenLDAP使用了SleepycatBerkeleyDB。
说了这么多,我可不是一个老夫子,我只是很满意调用它来运转数据库并且对它所作的工作很满意。
LDAP不是一个好的选择,尽管有时你需要快速而频繁的修改——例如为了零售后台。
它不是一个关联数据库如Oracle、mySQL或者Postgres。
实际上,它的结构与关联数据库有着天壤之别。
与其将信息存储在行列中,并且设置一组固定的索引和字段,还不如将数据储存在属性类型/属性值对中。
这种结构为设计记录提供了巨大的灵活性。
例如:
一份特殊的用户记录不必重新设计整个数据库就可以添加一种新的类型。
任何类型的文本或者二进制数据都可以储存。
根和层 LDAP目录遵循熟悉的Unix文件系统结构——树的顶部有根目录,由根目录分支成许多子目录。
典型设计就是一个公司只有一个主要的根目录。
然后根据部门、位置、功能,雇员的好坏等等对你来说有用和有意义的任何事物来组织子目录。
这不但是组织主目录的一个很好的整理方法,它还允许你使用一种精确的、受约束的方式授予对中心数据池的特殊部分的访问权。
下一步就是采用一种明智的方式分布比特。
任何单独的子目录都可复制到其他地方——例如复制到它从属的部门所在的服务器。
在任何你喜欢的时间间隔内,对主目录的更新可同步进行,它为用户提供冗余和更快访问,而且使得主服务器上的紧张程度降低。
更新可以根据指示开始进行——或者,如果你需要一个使用术语的理由,那就用"push"或者"pull."吧。
例如:
财政部可先更新他们的目录,然后将更新推进到主服务器上——再次,节省了管理部门许多单调的而且不必要的劳动。
它还保存了带宽和系统资源。
易于升级 关于LDAP的分布式特征真正灵活的是你可以从小的开始。
你可以采用一种限制性的方式来实现一个LDAP目录,对他进行测试和悬挂,然后在空闲时间内轻而易举地将它放大并迁移更多的功能把它上面。
ACIs的和ACLsLDAP访问控制范例(ACIs),共同形成了一个访问控制清单(ACL),它允许非常细粒度的控制。
下面是几个简单例子:
·用户可以修改他们自己的个人信息——例如家庭住址、电话扩充、工作email等等——但是其他人不可以。
·某个特殊用户的所有信息可保存在单独的记录中,但是对单项的访问完全是可以配置的。
·给与经理确切级别的阅读权和对于他们小组的读/写权利。
它满足的一个特殊需要就是给与经理充分的访问权,以监督项目文件和报告,但是不给钱。
·允许小组或者小组领导判断哪个人可以得到哪种他们控制下的资源访问权。
我绝对不喜欢被次要的琐事如共享文档和项目目录所纠缠,放权给群众好了。
·将密码和用户名以及其他敏感数据置于勤奋的系统管理员的严格控制之下。
用户认证LDAP支持SASL(简单认证和安全层),它合并了Kerberos、GSSAPI、和DIGEST-MD。
添加LDAP用户认证到一个现有的网络上一点也不可怕。
有几个非常好的设备可用来迁移PADL软件(见Resources)提供的、你现有的用户和密码数据。
一块卓越的奶酪 推荐在专注的、卓越的服务器上运行OpenLDAP。
在一个更小的、低要求的网络上你可以侥幸不使用共享服务器。
在文档化的过程中,你可以看到许多对slapd和slurpd的引用。
Slapd是LDAPdaemon程序,而slurpd则处理复制。
预告 在part2中,我们将一步步的演示安装、服务器配置和LDAP纪录的创建过程。
Part3将讨论用户认证和创建单一登录。
【originaltext】在《在Linux上建立LDAP服务器
(一)》中,我们学习了LDAP的基本概念以及LDAP的用途。
今天我们将安装和配置一个OpenLDAP目录。
在开始之前请注意:
这是LDAP101。
我们不安装任何种类的加密或者强认证;我们将在第三部分讨论这部分内容。
根据我的经验,在小型块中学习最有效。
(也许我有点笨,哈哈)所以请坐下来,系好安全带,手别放在方向盘上。
目录 简单的方法 从源代码安装 配置slapd.conf 类型/值对 IBCNU 预告 简单的方法 明智的系统管理员会先查看相关的文件;OpenLDAP打包后可能会运行的很好(或者产生不可知的后果)。
我只求方便——如果你的其他版本能够提供一个容易的方法,就用它好了。
RPM也可从处获得,详细地列出了所有需要的附带软件包。
当然Debian运行的也很好。
apt-get做这个工作也不错;聪明的bit能够找到软件包的名字。
Debian用户希望ldap-utils;slapd,即OpenLDAP;以及libdb4.1获得SleepycatDB。
这三个组件足够你用的了。
apt-get可带你完成最小配置,并且自动启动slapd,即LDAP服务器监控程序。
从源代码安装 基本安装至少需要两个tarball:
·BerkeleySleepycatDB ·OpenLDAPtarballBerkeleyDB必须在OpenLDAP之前安装。
OpenLDAP没有它不能建立。
(如何安装BerkeleyDB请看Resources)OpenLDAPtarball不足2兆,那就是说即使我们拨号下载,也是很轻松的。
本文中使用的稳定版为openldap-stable-.tgz。
我喜欢将它放在/usr/src/目录下,并在此解包:
root@windbag:
/usr/src#tarxfzopenldap-stable-.tgz这就创建了openldap-目录:
root@windbag:
/usr/src#cdopenldap-现在就有了README、INSTALL、LICENSE、ANNOUNCEMENT、以及COPYRIGHT文档。
先花点时间看看这些文档,看他们里面有什么重要信息。
要快速查看编译选项,请键入:
root@windbag:
/usr/src#./configure--help这个阅读相当吸引人,它的默认项标记清楚,选项能够自我说明。
现在我们来看看默认项。
输入下列三个命令:
#./configure#makedepend#make每个命令输入完都会出现许多东西;放心的等待吧。
等他们都完成之后,运行简单的内建测试脚本对他们进行校验:
#maketest如果出错的话,我建议你放弃它,另外向你推荐OpenLDAP.org(见Resources)。
如果运行良好,最后一个步骤就是真正的安装新创建的二进制文件和man界面。
在OpenLDAP根目录下运行:
#makeinstall请注意'makeinstall'的输出;它包含许多有用信息。
为了详细阅读,将它导入文件内:
#makeinstall|teeopenldap-install.txt 配置slapd.conf 这是用于我们新OpenLDAP服务器的主要配置文件。
它可以放在任何层数的虚拟目录内——我个人喜欢在安装软件后运行updatedb,这样我能迅速的找到需要的东西。
在我的Libranet系统上,它是/etc/ldap/slapd.conf。
小心保护该文件。
最好备份一下。
原来的文件包含有用的默认值。
为了安全起见,默认许可为600(只有root用户才能读写该文件)。
s lapd.conf定义了三种类型的信息:
整体设置,与指定后端相关的设置,与指定数据库相关的设置。
这个bit相当重要,如果运行正确的话能够帮你减少麻烦:
后端和数据库指令优先于整体设置,数据库指令优先于后端指令。
空白行和注释可以忽略。
以空白开头的行是上一行的继续——这个小技巧可让你浏览时不至于毫无头绪。
更多的空白可用于指令中:
指令可以有参数,甚至多个参数。
这些参数使用空白隔开。
带有空白的参数必须附上双引号:
如"loudargument."包含双引号或者反斜线符号的参数退出时必须使用反斜线:
如"really"loud"argument,"。
毫无疑问,在这里简单的安装对于slapd.conf中的配置是不够的。
下列东西应该足够让这个球滚动起来。
如果你的slapd.conf没有包括标题如"GlobalDirectives"和"BackendDirectives,"你可以添加它们。
重要的是依次添加下列三个部分:
整体、后端、以及数据库。
在GlobalDirectives下,添加日志级别的指令:
loglevel256在BackendDirectives下,添加bdb:
backendbdb在DatabaseDirectives下,添加:
databasebdbsuffix"dc=carlasworld,dc=net"rootdn"cn=Manager,dc=carlasworld,dc=net"rootpwsecretdirectory"/var/lib/ldap"我相信你能够找到需要修改以适应系统的bit。
注意:
域已经分裂成两个类型/值对。
这件事以后再做,以防万一值需要修改或者值需要出现在另一个目录下。
类型/值对 尽管LDAP非常灵活,还是有某些类型和值已经定义了,如访问级、数据库后端、和调试级。
这一点请参考基本的(和优秀的)"OpenLDAP2.1Administrator'sGuide"(再次见Resources)。
IBCNU 不错,我们现在要指出在哪里可以找到所有这些缩写的意思。
说不定你还可以用它们在你的朋友面前炫一把:
DN=贵宾名O=组织OU=组织单元DC=域组件CN=普通名SN=姓名UID=用户ID希望看起来像天才吗?
请看文件core.schema,它标识了所有这些缩写(有二三十个那么多)。
这是启动slapd的好时机。
依靠你的安装,它已经在运行了——首先检查psax|grepslapd。
如果没有运行,键入whichslapd,找出执行文件,然后无参数运行。
安装程序应该自动配置启动文件,在引导时就开始运行,这样你就不必重复了。
OpenLDAP是完全自我测试的;运行/slapd–t,确认你的slapd.conf没有语法错误。
【originaltext】预告在part3部分,我们将组装数据库,描述如何使用LDAP来实现单一登录。
Resourcesmanslapdmanslapd.confQuick-StartGuideOpenLDAP2.1Administrator'sGuideLDAPmanSchemaReferencepage在《在Linux上建立LDAP服务器
(二)》中,我们描述了它的安装以及它的非常基本的配置。
今天我们将使用真实数据来组装我们的目录,引导你毫无费力的避开一些常见误区。
目录 它能运行吗?
修改slapd.conf 添加条目 .ldif的缺陷 添加用户 模式 结论 Resources 我们先回顾一下第二部分中我们的slapd.conf配置:
##DatabaseDirectives##databasebdbsuffix"dc=carlasworld,dc=net"rootdn"cn=Manager,dc=carlasworld,dc=net"rootpwsecretdirectory"/var/lib/ldap"我们来详细讨论配置中的每一行。
·首先,确定用你的真实域取代""。
·rootdn非常重要。
这是你创建授权用户输入条目到数据库的地方。
这里我称之为管理员(Manager)。
你可以随便称呼它:
管理员、老板、ldap最高统治者——你想称呼它什么,就称呼什么。
·rootpw也是非常重要的。
它是授权用户的(管理员的)密码。
现在,我们要使用明文密码。
在上述的例子中,它为"secret";但是密码你可以随意设定。
·directory是OpenLDAP存储实际数据库文件的地方,它在下一行。
目录在启动slapd之前必须存在。
"/var/lib/ldap"是安装者创建的一个常用目录,尽管你的Linux版本可能已经将它放在其他地方了。
你也可以创建一个你自己选择的目录。
但是,我们的目的是要找到它,而不是只创建目录——查看更多细节,请参考OpenLDAPAdministrator'sGuide。
目录下已经安装了下列文件:
$ls/var/lib/ldap__db.001__db.003__db.005id2entry.bdbobjectClass.bdb__db.002__db.004dn2id.bdblog.0000000001 它能运行吗?
首先,检查slapd.conf有无语法错误:
#slapd-t然后,运行下列命令(不要写错了):
$ldapsearch-x-b''-sbase'(objectclass=*)'namingContexts他会返回几行费解的代码;看这行:
dn:
namingContexts:
dc=carlasworld,dc=net修改slapd.conf只要你修改了slapd.conf,就必须重新启动:
#/etc/init.d/slapdrestart 添加条目 现在我们进入有趣的部分。
手动创建条目有两个步骤。
首先,创建一个.ldif文件,然后使用命令ldapadd,输入新的条目到数据库中。
在.ldif文件中——我们统统称之为test.ldif——定义了你公司的一些属性:
##mycompany##dn:
dc=carlasworld,dc=netobjectclass:
dcObjectobjectclass:
organizationo:
Tuxcomputing,inc.dc:
carlasworlddn:
cn=Manager,dc=carlasworld,dc=netobjectclass:
organizationalRolecn:
Manager .ldif的缺陷 请确定你已经去除了首尾空白,以及空白行。
尽管行结尾的尾空白可以告诉ldapadd:
下一行是前一行的继续,但是任何首空白或者尾空白都会让ldapadd相信这里什么都没有。
请使用空白行分隔条目。
下一步就是添加test.ldif文件到ldap:
#ldapadd-x-D"cn=Manager,dc=carlasworld,dc=net"-W-ftest.ldif想了解不同标记代表的含义请参考manldapadd。
ldap要求你输入LDAP密码,然后才批准添加条目。
如果你不幸得到"ldap_bind:
Invalidcredentials(49)"错误,就表示你要么给出了错误的"cn="条目,要么给出了错误的密码。
只有普通名(cn)和密码在slapd.conf中都正确,才不会出现任何关于他们的任何莫名其妙的信息。
注意:
我们稍候会删除这些。
(虽然创建新数据库时需要他们,稍候我们添加更强的授权时就会替换它们。
)我们看看现在我们的数据库看起来像什么:
#ldapsearch-x-b'dc=carlasworld,dc=net''(objectclass=*)'它会显示数据库中的每一条。
添加用户 好,现在让我们使用users.ldif文件,添加一些真正的用户:
#TuxEntrydn:
cn=TuxPTuxedo,dc=carlasworld,dc=netcn:
TuxPTuxedocn:
TuxTuxedoobjectClass:
personsn:
Tuxedo#ldapadd-x-D"cn=Manager,dc=carlasworld,dc=net"-W-fusers.ldifEnterLDAPPassword:
addingnewentry"cn=TuxPTuxedo,dc=carlasworld,dc=net"#ldapsearch-x-b'dc=carlasworld,dc=net''(objectclass=*)'#extendedLDIF##LDAPv3#basewithscopesub#filter:
(objectclass=*)#requesting:
ALL##dn:
dc=carlasworld,dc=netobjectClass:
topobjectClass:
dcObjectobjectClass:
organizationo:
Tuxcomputing,Inc.#TuxPTuxedo,dn:
cn=TuxPTuxedo,dc=carlasworld,dc=netcn:
TuxPTuxedocn:
TuxTuxedoobjectClass:
personsn:
Tuxedo太棒了!
他真的有用,它真的有用!
注意:
原来的.ldif文件内不能有条目,因为它必须只包含新条目。
如果ldapadd找到任何现有的条目,它就会停止,不推进更多的条目。
Debian的差别如果你使用apt-get安装OpenLDAP,,dpkg将自动配置它,安装root域、公司以及授权的ldap管理员和密码。
你也可以在slapd.conf中创建另外一个LDAP管理员/密码组,就像我们前面做过的一样,任意使用其中一个。
模式 我们容易混淆的主要地方是schema和objectclasses。
在slapd.conf中可以看到:
#SchemaandobjectClassdefinitionsinclude/etc/ldap/schema/core.schemainclude/etc/ldap/schema/cosine.schemainclude/etc/ldap/schema/nis.schemainclude/etc/ldap/schema/inetorgperson.schema这些文件包含用在你LDAP记录中的属性。
花点时间读读这些属性。
我知道这是一个痛苦的练习,但是理解模式就是理解如何使用LDAP的关键。
现在是时候提到一个用于LDAP的GUI前端GQLDAPClient。
他对于观察不同属性之间的关系大有帮助。
优秀Web站点LDAPmanSchemaReference也是你观察时一个很有价值的工具。
结论 好,看起来好像我们还需要不止一篇LDAP文章。
在part4中,我们将进行加密,认证真正的用户。
我们将使用一些详细的配置范例来包装此文(和此系列)。
【originaltext】ResourcesBuildinganLDAPServeronLinux,Part1BuildinganLDAPServeronLinux,Part2OpenLDAPAdministrator'sGuideGQLDAPClientLDAPmanSchemaReferencepage.在《在Linux上建立LDAP服务器(三)》我们使用真实数据来组装我们的目录,引导你毫无费力的避开一些常见误区。
在本系列的最后一个安装部分,我们将讨论如何保护我们OpenLDAP服务器的安全。
目录 密码散列 加密 生成TLS证书 重写slapd.conf 迁移用户数据 结论 Resources 我们先回顾一下,part1介绍了轻型目录访问协议,细述了协议能做什么,不能做什么。
part2阐述了安装和非常基本的配置。
part3展示了使用真实数据组装目录以及如何避免一些常见错误。
今天的安全论述先从散列你的密码开始。
密码散列 我们不想将rootpw存储在服务器上的明文内,所以我们改用散列。
有几种普遍使用的散列方法可通过slappasswd命令来实现,包括SHA、SSHA、MD5、和CRYPT在内。
CRYPT最差,不要用它。
SSHA是默认方法,MD5也不错。
使用slappasswd可以生成一个很好的散列rootpw:
$slappasswdNewpassword:
Re-enternewpassword:
{SSHA}Lr7P++EoH6GpIS4GZ36vkV4R422RuW7R现在复制粘贴这个很好的新散列到/etc/ldap/slapd.conf内:
rootpw{SSHA}Lr7P++EoH6GpIS4GZ36vkV4R422RuW7R这可以是一个永久设置,很适合用在小型的简单的LAN上。
更好的解决方案就是创建一个LDAP记录,该记录定义了LDAP管理员,还为LDAP管理员使用slapd.conf中的ACLs(accesscontrollists)定义了访问权限。
请看OpenLDAP管理员的指南中的重要章节chapteronACLs——它是我看到的关于ACLs的最好的指南。
加密 OpenLDAP默认采用明文在网络上传送信息,包括密码和注册在内。
加密可以防止中途截取和窃听。
加密需要以下工具:
OpenSSLCyrusSASL这些在你的系统上应该有。
如果没有,不妨先骂它两句,然后访问你的安装盘或者你的版本的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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 建立 LDAP 服务器 一步一步