扫一扫
关注微信公众号

疯狂的企鹅系列 单点登录和企业目录(二)(1)
2008-03-21   

上一篇文章我们已经帮助你快速地建立起单点登陆和企业目录并运行起来,在这篇文章中,我们将配置一些Linux客户端和Mac OS X客户端来利用上个月辛勤劳作的成果,这一次我们不需要研究什么了,但是涉及的面还是很广的,因此让我们开始吧!本文涉及到的所有配置文件和脚本文件都在本文结尾资源部分列出的清单中。

这篇文章,我们研究如何连接Gentoo Linux和RedHat企业版Linux(RHEL)v3和v4,但是大多数Linux客户端都应该差不多使用同样的配置,只是很少的一部分不同,我们也涉及到了Mac OS X v10.4(aka Tiger)客户端集成,在后面的文章中,我们将解释如何配置微软windows客户端以使用认证和身份管理系统,因为它依靠配置和安装Samba程序包。
对于单点登陆,Linux和Tiger客户端需要一个Kerberos主机keytab文件,我们用创建其他keytab文件相同的方法创建一个,对于这两种客户端来说,keytab保存在/etc/krb5.keytab文件中。

Linux客户端配置

不是所有用户(特别是远程笔记本电脑用户)都想或能够将他们的机器加入到Kerberos领域中来,除非你完全控制了那些用户将连接的机器,你需要允许传统的密码认证,使用Kerberos可以战胜在网络上传输密码的安全问题,只要你知道这是作为一个系统管理和预防限制它的使用,没有比你选择不使用Kerberos的情况更糟糕的,Kerberos比传统的机制(如使用/etc/passwd、NIS或LDAP)存储密码更有优势,这样比起传统的机制来说更容易实施密码规则,存储在Kerberos数据库中的密码会更安全,确保阅读了Alf Wachsmann关于启用Kerberos PAM认证的文章“Centralized Authentication with Kerberos 5, Part I”,文章链接参见本文后面的资源列表。
在Craig Swanson和Matt Lung的文章“OpenLDAP Everywhere”中,作者简略谈到了/etc/nsswitch.conf、/etc/ldap.conf和/etc/openldap/ldap.conf,我们将从速度和安全出发调整这些文件。首先,让我们先查看/etc/openldap/ldap.conf,这个文件定义了OpenLDAP命令行工具的默认设置,如ldapadd和ldapserach,我们的/etc/openldap/ldap.conf文件看起来象列表1。

列表1 /etc/openldap/ldap.conf
BASE "o=ci,dc=example,dc=com"
URI ldaps://ldap.example.com ldaps://kdc.example.com
TLS_CACERTDIR /etc/ssl/certs
TLS_REQCERT allow

更多的选项和信息请参考ldap.conf(5),因为在/etc/openldap/ldap.conf文件中无法指定使用StartTLS,我们必须明确地使用一个ldaps:// URl,现在我们可以简单地使用ldapsearch,它默认使用SASL认证,然后参考/etc/openldap/ldap.conf默认主机和base。

我们现在名称服务转换(NSS)上工作得很好,确保nss_ldap软件包已经安装,同时,注意这个包的旧版本不能处理某些服务如netgroups的LDAP存储,因此尽量使用最新的版本,首先通过编辑/etc/ldap.conf来配置nss_ldap包,这个文件不同于/etc/openldap/ldap.conf,它只为OpenLDAP工具设置,而/etc/ldap.conf文件为nss_ldap的配置文件,列表2展示了/etc/ldap.conf的样子:

列表2 /etc/ldap.conf
host ldap.example.com kdc.example.com
base o=ci,dc=example,dc=com

ssl start_tls
tls_checkpeer no
tls_cacertfile /etc/ssl/certs/ci-cert.pem

nss_base_passwd ou=people,o=ci,dc=example,dc=com
nss_base_group ou=group,o=ci,dc=example,dc=com
nss_base_hosts ou=hosts,o=ci,dc=example,dc=com
nss_base_services ou=services,o=ci,dc=example,dc=com
nss_base_netgroup ou=netgroups,o=ci,dc=example,dc=com

让我们看看这些不同的行是做什么的,因为这个文件没有帮助记录,最前面的两行定义了LDAP服务器的节点和查询的基准,接下来的三行解释如何启动TLS连接,正如你看到的,nss_ldap知道StartTLS,因此我们这个那个方法来启动一个TLS连接,最后一行描述了从多个nsswitch控制属性进行检索的基准,因为性能原因我设置了这些选项,如果我们所有的用户名都在这颗树的分支下,那我们在用用户名进行检索时就不需要检索整个目录了,例如:nss_base_passwd指出了传统的用/etc/passwd进行检索的基准,无论如何,如果你将用户名存储在多个分支下的话,你可以使用这个选项,许多其他的选项也可以在这个文件中定义,为了一探这些选项,请你自行阅读nss_ldap程序包中的ldap.conf样本文件。
确认你在/etc/ssl/certs有CA证书,并运行c_rehash,这个进程是任何想要通过SSL连接到LDAP服务器的机器需要的。

接下来,编辑/etc/nsswitch.conf指定在LDAP中需要的信息,不要为主机将ldap作为第一个条目,如果你这样做了,你将不能解析LDAP服务器的主机名,如果你添加了一个用户到本地的/etc/passwd或/etc/shadow,你不想使用LDAP提供的服务,那么请移除它或注释掉它,然后在测试工作是否正常:

# getent passwd leggett
leggett:x:1001:100:Ti Leggett:/home/leggett:/bin/bash

# id leggett
uid=1001(leggett) gid=100(users)

如果这两个目录都工作正常,你就准备好了,部分程序需要重新启动以便重新组织一下/etc/nsswitch.conf中的改变,OpenSSH就是其中之一,因此重新启动sshd然后尝试登陆。

迄今为止,我们已经完成的事情引导我们启用了Gentoo和RHEL客户端,还是让我们一起回顾一下用到的东西。

下面的文件是Kerberos认证需要的:

/etc/krb5.conf

/etc/krb5.keytab

/etc/pam.d/system-auth

下面的文件定义了OpenLDAP帐号管理

/etc/openldap/ldap.conf

/etc/ldap.conf

/etc/nsswitch.conf

/etc/ssl/certs/ci-cert.pem (Gentoo)

/usr/share/ssl/certs/ci-cert.pem (RHEL)

写本文的时候,这里有一个对于RHEL4的警告,当你在/etc/ldap.conf中用主机名替代ip地址的话会引发一个Bug,因此用LDAP在/etc/nsswitch.conf中为主机数据库作一个检查,并使用DHCP获取客户端ip地址,如果你注意到dhcp客户端引起了一个网络设备故障,请在/etc/ldap.conf中将主机名改为ip地址。

在Gentoo和RHEL4下为sshd配置单点登陆是一件很容易的事情,你需要确保下面的选项都在/etc/ssh/sshd_confif中:

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes


共4页: 1 [2] [3] [4] 下一页
 第 1 页:  第 2 页:Linux客户端配置(2)
 第 3 页:Mac OS X客户端  第 4 页:资源

热词搜索:

上一篇:疯狂的企鹅系列 单点登录和企业目录(一)(1)
下一篇:疯狂的企鹅系列 单点登录和企业目录(三)(1)

分享到: 收藏