分类: LINUX
2008-04-26 17:22:07
在一个分布式环境中的问题是,如果发生账号改动的情况,每台机器上的passwd文件和shadow文件需要一个一个地去修改,账号改动包括修改密码、添加/删除账号、账号名修改(任何情况下,修改UID/GID是一个大问题)、添加/删除登陆计算机的权限等。我也将叙述如何用Kerberos解决分布式计算环境中的认证问题,在第二部分,我将叙述一个解决认证问题的解决方案。
认证一个连接到计算机的用户大多数是通过密码来解决的,尽管有其他方法(包括智能卡和生物特征)是可用的,这些密码存储在/etc/passwd中,现在使用影子密码,它存储在/etc/shadow中,因为这些文件是在本地计算机上的,要保持是最新状态是很大的一个问题,目录服务如NIS、NIS+和LDAP能解决这个问题,但是这些服务引入了新的问题:它们工作在网络上,密码也是暴露在网络上的,它们只使用了很弱的加密。
通过Kerberos实施的认证协议联合网络服务的优势,完全不需要在两台计算机之间传输密码了,要实现这个,Kerberos需要你在一个安全的服务器上运行两个后台进程,密钥分发中心(KDC)后台进程处理所有的密码验证请求,并生成Kerberos证书,叫做凭证授予凭证(TGT),第二个后台进程,Kerberos管理进程,它允许你远程添加、删除和修改账号,而不用登陆到运行Kerberos管理进程的计算机上,它也处理来自用户的密码修改请求,使用Kerberos,只有一个密码修改需要通过网络传输一个强壮的加密密码。
在认证用户的过程中,Kerberos KDC给用户授予一个临时的证书,TGT,典型地,这些证书有10或24小时的有效期,这个有效期是可以配置的,但是不能超过24小时,万一TGT被偷,小偷只能在TGT的有效期时间内使用,如果你只使用Kerberos进行身份认证,证书失效了不会引起问题,但是,如果你正在使用Kerberized服务,你需要培训你的用户在他们目前的证书失效后获取新的证书,即使他们仍然可以登陆。
Kerberos是在MIT创造出来的,最新的版本是Kerberos 5,它的协议定义在RFC 1510。今天,Kerberos有两个实现是可用的,参考文章后面的资源。MIT的Kerberos 5包括在Red Hat Linux中,而Heimdal包括在SuSe和Debian Linux发行版中,Kerberos 5实现也包括在微软的windows(2000以及更高版本)、Sun的Solaris(SEAM,Solaris2.6及更高版本)和Apple的Mac OS X中,我使用MIT的Kerberos发布版贯穿本文,因为它提供了简单密码质量检查功能,密码老化和密码历史,这些功能都是开箱即用的。