LDAP集成和迁移Word格式.docx

上传人:b****5 文档编号:20571742 上传时间:2023-01-24 格式:DOCX 页数:43 大小:113.83KB
下载 相关 举报
LDAP集成和迁移Word格式.docx_第1页
第1页 / 共43页
LDAP集成和迁移Word格式.docx_第2页
第2页 / 共43页
LDAP集成和迁移Word格式.docx_第3页
第3页 / 共43页
LDAP集成和迁移Word格式.docx_第4页
第4页 / 共43页
LDAP集成和迁移Word格式.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

LDAP集成和迁移Word格式.docx

《LDAP集成和迁移Word格式.docx》由会员分享,可在线阅读,更多相关《LDAP集成和迁移Word格式.docx(43页珍藏版)》请在冰豆网上搜索。

LDAP集成和迁移Word格式.docx

ethers

把以太网地址映射到IP地址。

因为出现了AddressResolutionProtocol(ARP),最近很少使用它了。

group

包含一个组列表以及属于这些组的用户。

hosts

把IP地址映射到主机名。

netgroup

用来把服务器分组在一起。

常常用于NIS和NetworkFileSystem(NFS)安全性。

networks

把网络名映射到数字。

因为了解网络名没有太多的用处,所以不常使用。

passwd

存储用户帐户信息,比如名称、用户id、描述、主组、主目录,有时还包含密码。

protocols

把IP协议映射到它们的名称。

publickey

用来发布NFS和NIS+的密钥。

rpc

把RemoteProcedureCall(RPC)函数名映射到数字。

services

把TCP和UDP服务名映射到端口号。

shadow

受保护的加密的密码文件。

通常把/etc/passwd中的密码字段以加密形式存储在这个文件中。

NSS在/etc/nsswitchconf中进行配置,对于表3中的每个数据库包含一个配置行。

清单1给出一个nsswitch.conf示例。

清单1.nsswitch.conf示例

passwd:

filesnis

shadow:

group:

hosts:

filesnisdns

清单1配置四个映射:

passwd、shadow、group和hosts。

映射名称后面是一个冒号(:

),然后是访问数据的方式的有序列表。

清单1中的前三行是相同的:

它们首先在文件中检查所请求的信息,然后检查NIS(有时候称为黄页)。

只有在文件中没有找到信息时,才会检查NIS。

这个示例的最后一行对于任何主机请求依次检查文件(/etc/hosts)、NIS和DNS。

nsswitch.conf中可用的方法都在/lib中有一个对应的库,这些库以libnss_开头。

例如,适用于文件的功能放在/lib/libnss_files-2.5.so中(版本号并不重要,因为它由动态链接器ld-linux.so解析)。

在NSS中引入LDAP

在讨论了动态库和nsswitch.conf的格式之后,就应该通过共享库libnss_ldap处理LDAP与NSS的集成,并通过/etc/nsswitch.conf中的ldap关键字引用LDAP。

这个共享库从/etc/ldap.conf获得它自己的配置(不要把这个文件与命令行客户机所用的OpenLDAP配置文件/etc/openldap/ldap.conf相混淆)。

清单2给出一个ldap.conf示例。

清单2.一个配置libnss_ldap的ldap.conf示例

#ServerIPaddress(orspace-separatedaddresses)

host192.168.1.138

#Searchbase

basedc=ertw,dc=com

#optional:

bindcredentials

binddn:

cn=nssldap,dc=ertw,dc=com

bindpw:

letmein

#Ifrootismakingtherequest,usethisdninstead

#Thepasswordisstoredin/etc/ldap.secretandonlyreadablebyroot

rootbinddncn=root,dc=ertw,dc=com

#Pointthepasswd,shadow,andgroupdatabasesataDN

#the?

onedefinesthescope

nss_base_passwdou=People,dc=ertw,dc=com?

one

nss_base_shadowou=People,dc=ertw,dc=com?

nss_base_groupou=Group,dc=ertw,dc=com?

#Don'

tlookforsecondarygroupsforanyoftheseusers

nss_initgroups_ignoreusersroot,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd

除了清单2所示的/etc/ldap.conf的内容之外,还需要在/etc/nsswitch.conf中的passwd、shadow和group行中添加关键字ldap。

一定要确保把files放在第一位;

否则,缓慢的服务器可能导致超时—甚至可能锁住系统(如果由于nsswitch.conf中的问题导致锁住系统,就需要以单用户模式引导,把nsswitch.conf重新设置为files,然后重新引导)。

可以对所有数据库使用LDAP,但是这里列出的三行是最有意义的。

其他映射很少修改,应该单独管理。

例外是hosts数据库,它可以使用LDAP,但是DNS是更好的选择。

测试

如果正确地配置了nsswitch.conf和ldap.conf,那么只要能够使用以下属性,就应该能够用LDAP用户登录:

∙uid:

登录名

∙uidNumber:

数字用户id

∙gidNumber:

主组的数字id

∙homeDirectory:

用户的主目录

∙userPassword:

用户的密码,由{crypt}例程加密(使用slappasswd生成这个加密密码)

通过posixAccount对象类添加这些属性和其他属性。

为了进行测试,以一名属于LDAP树但未保存在本地密码文件的用户身份尝试登录。

还可以使用getentpasswd命令查看NSS了解的所有用户条目。

如果getent是有效的,但是登录不成功,就说明userPassword属性可能不正确。

如果检查了客户机上的配置,NSS和LDAP仍然无法一起工作,就在OpenLDAP服务器上启用stats级日志记录,检查服务器是否看到了查询,以及是否允许这些查询。

回页首

配置PAM来使用LDAP

PAM与NSS的相似之处在于,它从实际实现中抽象出一组库调用。

但是,与NSS不同,PAM并不替换现有的UNIX调用;

而是提供一组新的调用供应用程序使用。

理解PAM

PAM被实现为一个由应用程序使用的库。

应用程序通过调用这个库使用PAM管理函数,比如身份验证、帐户管理、会话管理和密码管理。

检查身份验证是PAM的主要用途。

应用程序向PAM库询问用户是否通过了身份验证。

PAM库按照系统管理员设置的规则,提示用户输入密码或执行其他检查。

在用户提供有效的凭证之后,进行帐户管理,将检查是否允许登录。

在某些时间或者对于某些应用程序,可能会拒绝登录。

会话管理使应用程序在成功登录之后能够设置环境。

常常需要向登录到控制台的用户授予一些额外权限,比如使用本地CDROM或其他设备;

这种操作在会话管理的级别进行。

最后,密码管理提供一种灵活地修改密码的方法。

这个功能允许用户通过熟悉的passwd

(1)程序修改他们的LDAP密码。

PAM密码管理还允许指定独立于密码后端的密码强度策略。

要想为一个服务配置PAM,必须创建一个根据/etc/pam.d中的服务命名的文件,例如为sshd服务创建/etc/pam.d/sshd文件。

这不是一个硬性规则,因为应用程序会指定它自己的PAM服务名。

如果有疑问,可以使用二进制文件的名称,并检查错误日志。

/etc/pam.d中的每个配置文件指定每个PAM管理函数的有序指令列表。

文件中的每行采用“函数控制模块参数”形式。

“函数”是管理函数,使用关键字auth、account、session和password。

“控制”指定如何使用指令的返回值,它是以下关键字之一:

∙required——必须通过这个检查,函数才能成功执行。

如果这个检查失败,PAM就会继续检查给定函数的其他指令,但是结果是没有意义的。

∙requisite——必须通过这个检查,函数才能成功执行。

如果这个检查失败,PAM会停止检查其他指令并返回一个失败。

∙sufficient——如果检查成功,就停止处理,函数成功返回(如果前面“必要的”检查全部成功的话)。

如果检查失败,就忽略这个失败并继续处理。

∙optional——忽略检查的结果。

“模块”和“参数”实现检查本身。

相同的模块可以实现一个或多个函数,所以可能多次看到相同的模块。

常用的一种模块是pam_stack,它允许从其他文件调用指令集。

清单3给出一个使用pam_stack的PAM文件。

清单3.使用pam_stack调用其他指令集

authrequiredpam_nologin.so

authrequiredpam_stack.soservice=system-auth

accountrequiredpam_stack.soservice=system-auth

sessionrequiredpam_stack.soservice=system-auth

passwordrequiredpam_stack.soservice=system-auth

清单3显示了PAM文件的格式。

auth函数有两行,这两个检查都设置为required,因此它们必须都成功,身份验证才会成功。

第一个auth行调用pam_nologin,它的作用是当/etc/nologin文件存在时,如果非根用户试图登录,就会返回失败。

下一个auth行调用pam_stack模块并传递参数service=system-auth。

然后,pam_stack.so会读取/etc/pam.d/system-auth的内容并检查auth函数下的所有指令。

如果这返回成功,pam_stack就向清单3中的文件返回一个成功的结果。

另外三个函数(account、session和password)只引用pam_stack和system-auth服务。

如果system-auth中的对应函数成功地返回,就认为结果是成功的。

许多系统使用同一组身份验证例程,所以在大多数文件中都使用pam_stack,而system-auth(或等效的文件)包含所需的所有函数。

在本节的余下部分中,将使用system-auth文件在PAM过程中注入LDAP。

在PAM引入LDAP

NSS和PAM模块都使用/etc/ldap.conf进行配置,所以如果继续设置,就可以建立一个有效的PAM-LDAP系统。

可以同时使用NSS和PAM,这样就使支持PAM的应用程序和遗留应用程序都能够用LDAP进行身份验证。

PAM在NSS基础上提供了一些新特性,包括:

∙允许用户修改密码

∙对身份验证需求进行更细粒度的配置

∙支持更多的密码加密类型

∙集中地管理用户帐户

确保在/etc/ldap.conf中有pam_passwordmd5,并删除任何其他pam_password行(如果有的话)。

在修改密码时,这种配置让pam_ldap库先在本地用MessageDigest5(MD5)计算密码的散列值,然后把它发送给LDAP服务器。

编辑/etc/pam.d/system-auth(或等效的文件),在其中添加对pam_ldap的引用,见清单4。

这一行应该出现在对pam_unix的任何引用的后面(这使本地帐户优先于LDAP帐户),但是应该出现在对pam_allow和pam_deny的任何引用(它们提供默认允许或拒绝)的前面。

清单4.使用pam_ldap的system-auth

authsufficientpam_unix.sonulloktry_first_pass

authsufficientpam_ldap.souse_first_pass

authrequiredpam_deny.so

accountrequiredpam_unix.sobroken_shadow

accountsufficientpam_ldap.so

accountrequiredpam_permit.so

passwordrequisitepam_cracklib.sotry_first_passretry=3

passwordsufficientpam_unix.somd5shadownulloktry_first_passuse_authtok

passwordsufficientpam_ldap.souse_authtok

passwordrequiredpam_deny.so

sessionrequiredpam_limits.so

sessionrequiredpam_unix.so

sessionoptionalpam_ldap.so

粗体显示的行是PAM配置文件中增加的内容。

注意,在pam_unix的account函数中增加了broken_shadow。

这样的话,如果用户没有影子密码条目(因为用户帐户在LDAP中),pam_unix.so并不会返回失败。

pam_ldap的auth模块的use_first_pass选项要求pam_ldap.so使用从pam_unix.so获得的密码,而不是询问新的密码。

use_authtok对password函数起相似的作用。

对于授权,新的配置使UNIX密码和LDAP密码都足以用来登录:

也就是说,只要第一个密码检查成功,就允许用户登录。

如果这两个检查都返回失败(或“nosuchuser”),那么pam_deny就导致失败。

尝试通过passwd命令修改一个用户的密码,然后检查在LDAP目录中密码是否改变了。

最后,确认用户仍然可以登录。

如果能够使NSS正常工作,PAM也应该没问题。

发生错误最主要的原因是在PAM配置中有拼写错误,把条目放在了错误的文件中,或者把它们放在了文件中错误的位置。

NIS到LDAP的迁移

本节讨论SeniorLevelLinuxProfessional(LPIC-3)考试301的305.2主题的内容。

这个主题的权值为1。

∙在迁移到LDAP之前分析NIS结构

∙在与LDAP集成之前分析NIS结构

∙自动执行NIS到LDAP的迁移

∙创建NIS到LDAP的网关

NIS是对UNIX机器进行集中身份验证的传统方法。

NIS便于设置而且效果很好。

尽管LDAP身份验证要复杂一些,但是它与NIS相比有几方面的优势:

∙LDAP比NIS更安全,因为可以对通信流进行加密并锁住数据库。

∙LDAP可以存储身份验证之外的其他信息,而NIS在这方面功能有限。

∙LDAP比NIS支持更多的客户机访问。

可以用LDAP替代NIS,也可以同时使用它们。

在同时使用它们时,LDAP是标准数据源,而NIS服务器使用来自LDAP(而不是本地文件)的数据。

这种方式很适合比较长期的迁移过程,还适合支持那些无法使用LDAP的遗留操作系统。

方式1:

迁移到LDAP

从NIS迁移到LDAP的一般过程如下:

1.判断需要替换哪些NIS数据库。

2.把NIS数据装载到LDAP中。

3.重新配置客户机,让它们使用LDAP而不是NIS。

从步骤2开头到步骤3结束之间,有两个活动的数据库,但是它们之间没有连接。

任何修改(比如添加用户名或修改用户的密码)必须在两个数据库中进行;

否则,数据就会不一致。

可以选择冻结所有修改,也可以使用下一节所讨论的集成策略。

分析现有的NIS结构

在执行任何迁移之前,必须判断NIS托管哪些数据库。

登录到NIS主服务器,查看数据库目录。

在大多数系统上,这些文件存储在/var/yp/中与域名相同的目录中。

清单5显示典型的NIS服务器数据库目录中的文件。

清单5.判断NIS使用哪些数据库

#ls/var/yp/`domainname`

group.bygid

group.byname

hosts.byaddr

hosts.byname

mail.aliases

netid.byname

passwd.byname

passwdbyuid

protocols.byname

protocols.bynumber

rpc.byname

rpc.bynumber

services.byname

services.byservicename

ypservers

清单5使用domainname命令显示域名。

如果放在反撇号(`)中,这个命令的结果就被插入命令行中。

除了ypservers文件之外,这个目录中的其他所有文件都代表一个NIS数据库。

通过收集惟一数据库名的列表,就可以判断出需要把哪些数据库迁移到LDAP。

NIS用不同的搜索键存储相同的数据,比如密码文件有按名称和UID两种搜索方式;

在这种情况下,它们都代表密码数据库。

有些文件与数据库的对应关系并不明显:

例如,mail.aliases是别名表。

如果有疑问,可以查看/var/yp/Makefile。

查看服务器之后,可能希望查看一些NIS客户机,了解它们使用哪些映射。

为此,应该在/etc/nsswitch.conf中查找nis关键字。

您可能会发现,服务器存储的映射比使用的映射多。

使用迁移工具

对于把NIS数据迁移到LDAP,最流行的工具是由PADLsoftware提供的,这家公司是pam_ldap、nss_ldap和NIS-LDAP网关的开发商。

您的发行版很可能包含这些工具;

如果没有,可以在参考资料一节中找到这些工具的链接。

PADL迁移工具可以从本地文件、NIS或NIS+获取数据,然后把数据转储到LDAP服务器上。

在使用PADL工具之前,必须启动LDAP服务器并在无数据的情况下运行。

工具会生成所需的所有条目;

为了避免出现重复的条目,LDAP服务器中不应该有数据。

迁移工具由一组shell和perl脚本组成。

在RedHat系统上,这些脚本在openldap-servers包中,可以在/usr/share/openldap/migration目录中找到。

Debian用户需要migrationtools包。

请查找migrate_base.pl文件,或者从PADL下载最新版本。

这些脚本从各种数据源获得数据,把数据转换为LDIF,然后把数据添加到服务器中。

可以用ldapadd命令以在线模式添加数据,也可以通过slapadd以离线模式添加数据,前者需要管理员凭证,后者需要停止LDAP进程。

在开始之前,有必要设置一些环境变量,从而设置树的基域名(DN)和根DN。

清单6给出准备迁移到域所用的bash命令。

清单6.设置环境变量,准备LDAP迁移

exportLDAP_BASEDN="

dc=ertw,dc=com"

exportLDAP_BINDDN="

cn=root,dc=ertw,dc=com"

exportLDAP_DEFAULT_MAIL_DOMAIN=

清单6的第一行是LDAP树的基DN,使用这个DN生成后面的所有DN。

第二行是根DN。

只有在使用在线模式时,才需要密码。

清单6的最后一行设置电子邮件地址的默认域名。

一些工具不提示输入这一信息,所以现在设置它以避免麻烦。

工具分为两类。

第一类中的文件的名称以migrate_all_开头。

其他文件属于第二类,它们的名称以migrate_开头,后面是文件名或数据库名。

第一类中的脚本用来收集数据;

第二类中的脚本用来把原来的格式转换为LDIF。

现在可以采用两种方式。

可以使用migrate_all_脚本之一,它

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1