接下来,我们需要Windows PDC支持Kerberos PAM模块。利用Active Directory Users和Computers应用程序,就可以建立以客户机(不是计算机帐号)命名的用户帐号。使用开头名字、全名及用户登录名
字段当中的Linux服务器的DNS主机名。你会希望对帐号进行限制,但务必要对变更进行全面测试。
我们把客户机及其域帐号命为linux。你应该为这些用户机器在域中建立新的cannister/group,以便明确哪些帐号用于实际域用户、哪些帐号是Kerberos用户机器帐号。
我们需要安装Windows 2000支持工具来运行ktpass应用程序,这些工具放在服务器光盘名为support的目录上:\Program Files\Support Tools。该工具会为使用Windows 2000 KDC的Kerberos服务生成一个密钥文件。在PDC的命令行上运行以下命令:
ktpass -princ host/ linux@ DOMAIN.NET -mapuser linux -pass -out
linux.keytab
注意使用用户机器帐号名linux和域名DOMAIN.NET以及口令,口令应该与你在建立linux用户机器帐号时使用的一样。程序输出结果应该如下:
Successfully mapped host/linux to linux.
Key created.
Output keytab to linux.keytab:
Keytab version: 0x502
keysize 48 host/linux@ DOMAIN.NET ptype 1 (KRB5_NT_PRINCIPAL) vno 1 etype 0x1
(DES-CBC-CRC) keylength 8 (0xa27a8af1fe67ec07)
Account has been set for DES-only encryption.
然后把该文件安全地拷贝到Linux主机上,保存为/etc/krb5.keytab。密钥文件提供在所谓的Kerberos Principle和Active Directory中的用户之间提供了映像。不要覆盖现有的密钥,不然你会失去基于Kerberos的其它访问权。为此请使用ktutil。
确保系统时钟与KDC系统时钟保持同步(保持在2分钟以内)。不然,Kerberos验证会由于时钟脉冲相位差(clock skew)出现问题而失败。可以利用网络定时协议(NTP)服务器保持同步。
困难部分已解决。下一步即配置POP和IMAP服务器使用Kerberos验证想必大家很熟悉。首先要确保POP和IMAP服务已安装,如“修改后的POP PAM配置”图所示。
修改后的POP PAM配置
这种修改适用于普通POP和基于SSL的POP。如果你偏爱使用IMAP,就应该对/etc/pam.d/imap作同样的修改。如果使用这些协议的SSL变种,就不必建立SSL证书和密钥对,因为它们随Red Hat 7.2一同交付。然而,这种证书是所谓的自签名证书,它会促使电子邮件客户程序告诉用户:它们无法认可证书签名者的权限。
欲了解使用由一家公认的认证机构(CA)签名的证书方面的信息,请参阅Red Hat 7.2文档。
确保通过编辑/etc/xinetd.d/ipop3、/etc/xinetd.d/pop3s、/etc/xinetd.d/imap和/etc/xinetd.d/imaps来运行POP或IMAP服务,它们分别代表POP访问、基于SSL的POP访问、IMAP访问及基于SSL的IMAP访问。确保每个文件里面都有disable=no这一行。
然后重新启动xinetd,激活电子邮件服务器:
/etc/init/d/xinetd restart
通过Kerberos的POP服务验证
最后,配置电子邮件客户程序以便可以使用POP或IMAP(无论标准的还是基于SSL的)连接到Linux服务器。我们要再次确保建立的Linux服务器上的用户帐号与Windows Active Directory域中那些帐号相匹配。配置电子邮件客户程序,以便可以向Windows发送用户ID和口令,这样你就可以通过Active Directory证书使用基于Linux的电子邮件。
附文:PAM中的Windows Domain验证
为了依托微软Windows域验证Linux系统当中的各种服务,你需要Red Hat 7.2 Linux安装光盘所没有的PAM模块。可从ftp://ftp.samba.org/pub/samba/pam_smb/下载。截至写稿日期,最新版本是1.1.6。把它安装到你的Linux系统上,然后运行下列命令:
tar zxvf pam_smb-1.1.6.tar.gz
cd pam_smb
./configure
make
cp pam_smb_auth.so /lib/security/
你要编辑/etc/pam_smb.conf文件,以便内容类似:
DOMAIN
PDC
BDC1
BDC2
DOMAIN是Windows域的名字, PDC 是主域控制器的NetBIOS名字。BDC行和后备域控制器的NetBIOS名字是可选项。事实上,任何Windows NT或2000服务器在这里都可以使用,只要在同一个域。利用PDC和BDC,就能确保始终有服务器在运行、响应。最后,编辑/etc/hosts文件,添加以下行:
192.168.1.1 pdc.domain.net pdc 192.168.1.2 bdc1.domain.net bdc1 192.168.1.3
bdc2.domain.net bdc2
你所用的IP地址就是PDC和BDC的地址,而完全符合标准的域名即FQDN(pdc.domain.net)就是这些机器的实际DNS名。每行的最后一个名字就是NetBIOS名字。如果NetBIOS名字与每个域控制器DNS主机名相匹配、如果Linux服务器不用完全符合标准的域名通过DNS解析域控制器的名字,那这最后一步也许没有必要。换句话说,如果PDC的NetBIOS名字是PDC,那么你在Linux服务器上输入后ping pdc,应该会得到ping响应。否则,你必须按照上述格式编辑/etc/hosts。然而运行ping pdc会得到正常结果,pam_smb也会一样。欲了解有关Windows域当中的口令发问/应答验证工作原理的详细情况,请参阅us1.samba.org/samba/ftp/docs/textdocs/ENCRYPTION.txt。
附文:面向Unix的Windows服务
我们把精力集中到了验证任务上,没有密切关注如何在Linux和Windows之间保持帐号管理同步。这无异是项困难的任务。为了方便,Active Directory提供了一项重要特性:LDAP接口。
从理论上来说,Linux可以使用LDAP接口获得帐号信息。然而实际上,这功能不大有用。名为pam_ldap的一个模块可以通过PAM来使用LDAP目录,但需要Active Directory的LDAP接口在默认状态下没有的某些属性。Active Directory中的默认模式对Unix主机来说直接没有用处,因为它没有Unix组、用户ID、群组ID甚至Unix口令散列等概念。
为了正常使用,就要在PDC上安装微软的Windows 2000 Unix版服务(SFU),这是通常单独购买的一个附加产品。
但我们要注意这对PDC产生的影响。SFU通过把域安装到PDC上使自己位于Active Directory域。一旦安装完毕,域会更改目录模式,以便对Unix更加友好(从理论上来说,用户可以手工更改目录。)
SFU带来的不仅仅是模块更改,它还使我们能够为Unix当中的成批帐号管理采用标准机制:网络信息服务(NIS)。
除了模式增强及NIS服务外,SFU还提供其它服务,譬如NFS客户机、服务器和网关;用户名映射;NFS验证服务器;口令同步;ActiveState;ActivePerl以及一些Unix实用程序。
通过SMB口令发问/应答的SSH服务验证