分类: LINUX
2008-04-26 18:15:24
启用Kerberos认证的最容易的方法是使用可插拔认证模块(PAM),因为它使用的是Kerberos API调用,它工作需要配置文件/etc/krb5.conf,因此,第一步是从你的KDC上拷贝/etc/krb5.conf到各个客户端机器。
Kerberos不仅提供对用户的认证,也对计算机提供认证,防止你使用一个劫持的ip地址登陆到机器,要这样工作,每个计算机都需要它自己的Kerberos委托人和存储在文件(keytab文件)中的密钥(密码),计算机委托人构成如下:
host/
第一步是为每个客户端计算机创建一个新的委托人,下面的命令用client1作为计算机名当例子,用客户端计算机主机名替换client1,登陆到你的每个客户端计算机并执行:
% sudo /usr/local/sbin/kadmin
kadmin: addprinc -randkey host/
它给新委托人指定一个随机密码,然后,提取密钥放入keytab文件:
kadmin: ktadd
它创建了/etc/krb5.keytab文件,要获得对/etc/目录的写入许可,你需要用suho运行kadmin命令,简单创建一个委托人不需要这些特殊的权限,小心/etc/krb5.keytab所有权和文件许可,无论如何,它只能对root是可读的,否则,这个机器的安全就会受到威胁。
有几个为Kerberos 5准备的PAM可用,它们都叫pam_krb5。因为在MIT Kerberos 5 1.3版本中有一些API发生了变化,它们中的大部分都不再工作,你现在最好的选择是使用来自你的Linux发行版中的PAM模块,请查看前面的小节了解如何从源代码创建一个PAM模块。
现在,通过编辑文件/etc/pam.d/system-auth (在Red Hat系统上)来添加一个新的PAM模块到你的系统认证堆栈:
auth required /lib/security/$ISA/pam_env.so auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok auth sufficient /lib/security/$ISA/pam_krb5.so use_first_pass auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_unix.so account [default=bad success=ok user_unknown=ignore ↪service_err=ignore system_err=ignore] ↪/lib/security/$ISA/pam_krb5.so password required /lib/security/$ISA/pam_cracklib.so ↪retry=3 type= password sufficient /lib/security/$ISA/pam_unix.so ↪nullok use_authtok md5 shadow password sufficient /lib/security/$ISA/pam_krb5.so ↪use_authtok password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_limits.so session required /lib/security/$ISA/pam_unix.so session optional /lib/security/$ISA/pam_krb5.so |
这些改变使每个程序都要使用system-auth PAM堆栈(它的配置文件在/etc/pam.d/目录下)完成Kerberos认证。
与非Linux客户端的内部操作
如果你已经安装了一个windows活动目录(AD)KDC,你可以将它作为你Linux/Unix机器的主KDC,假如这样,你可以跳过全部服务器的安装,只需要安装上面叙述的设置你的客户端,你的/etc/krb5.conf文件需要定义windows KDC而不是Unix KDC,关于如何创建和拷贝keytab文件的更多信息请参考资源部分列出的文章。
如果在你的工作组中有许多的windows机器,你也可以使用Unix KDC为它们提供服务,但是仅当你的windows客户端不属于windows AD域时才可以。
在你的Kerberos 5区域中使用Mac OS X客户端很容易,只需要在你的Mac上配置好你的Unix KDC的名字就可以了。再说一下,账号名必须匹配。