我正在研究跨多台计算机为用户提供单一身份的软件。 也就是说,用户应该在每台计算机上具有相同的权限,并且用户应该可以访问每台计算机上的所有文件(漫游主目录)。 对于这个总体思路似乎有很多解决scheme,但是我正在努力为我确定最好的一个。 以下是一些细节和要求:
我听说过几种技术/组合来实现我的目标,但是我不确定每个技术的影响。
除了build议我应该研究哪条路,有没有人有任何指导,特别有用? 正如大胆的文字指出的那样,LDAP看起来是最好的select,但是我对安全性方面的实现细节(Keberos?NFS?)特别感兴趣。
这不是您的问题的完整答案,但我认为这可能有助于解决有关NIS与LDAP与Kerberos的问题。
从这里开始,它提供了authentication和授权之间差异的一个很好的概述,这对于理解这种讨论很重要。
正如你所说,Kerberos 只是一个authentication协议。 给定一组凭据 – 例如用户名和密码 – 它会告诉你他们是否有效。 这就是它所做的一切。
相反,NIS和LDAP都是目录服务。 它们允许客户端查询他们的用户信息(你的主目录是什么?你的用户名是什么?)。 两者都可以用作不同程度的问题的authentication来源。
NIS并不真正为您执行任何身份validation。 相反,它会向客户端机器公开密码散列,而本地系统以与本地帐户相同的方式执行实际的authentication步骤。 这里的问题是,任何一个在你的NIS客户端上拥有一个帐户的人都可以获取你所有的密码哈希值,然后在他们的闲暇时间对其进行powershell攻击。
由于身份validation步骤实际上是在服务器上执行的,因此LDAP更安全一些。 您必须确保您使用SSL或TLS来encryption您的LDAP会话,否则密码将以明文forms暴露在networking中,并且容易受到数据包嗅探的影响。
使用Kerberos进行身份validation非常普遍,然后使用NIS或LDAP进行授权(通常这意味着“组成员资格”)和目录信息。 我认为,NIS一旦删除了密码哈希(通过将身份validation移动到Kerberos)并不比LDAP安全,并且具有在任何现代Linux发行版中“开箱即用”的优点。
另一方面,LDAP通常更具可扩展性,如果拥有大量用户(或其他目录对象),可提供更丰富的查询,并且通常更易于pipe理,则可扩展性更好。 LDAP在各种应用程序中也是本地支持的,而NIS与核心操作系统有着不可思议的乱伦关系,这可能是不可取的。
如果你从头开始构build,我会build议使用Kerberos进行身份validation,使用LDAP来进行目录服务。
NFS有一个很大的优势:你已经有了它,它被广泛部署,而且一般是稳定的。 NFS有两个主要缺点:
并行I / O不能很好地扩展。 如果你有大量的机器碰到相同的文件系统,你的单一NFS服务器可能会很难保持。 这就是为什么较大的集群通常使用集群文件系统(如Lustre,GlusterFS,GPFS,GFS等),其目的是支持并行I / O。
它有一个不好的安全模型。 通常,NFS安全决定完全基于您的数字用户标识。 如果您的系统上安装了可以挂载NFS文件系统的root用户,则可以访问所有文件 – 因为您始终可以使用适当的用户标识创build本地用户。 这是不正确的,因为NFSv3和NFSv4都有不同级别的Kerberos身份validation支持,但我还没有遇到任何人使用这个…所以你的milage可能会有所不同。
对于小型部署,大多数人只是使用NFS,尽pipe有其局限性。
还有很多其他的解决scheme – 上面提到的集群文件系统,以及AFS和其他的 – 但是其中大部分都需要你做一些工作,让它们在你select的任何发行版上运行。 我最近听说过有关GlusterFS的好处,所以如果我正在寻找一个可能是我看起来第一个的NFS备选scheme。
这是一个部分的答案。
NIS / NIS +
不要使用NIS。 使用LDAP和nis架构。
OpenLDAP (在Ubuntu上也称为slapd)
一定要设置适当的ACL和SSF(安全强度因素)。
如果你不小心,发送密码很容易。
http://www.openldap.org/doc/
NFS
NFS不是encryption的。
它可以用一些骗局包装在ssl中。
没有Kerberos是依靠ip_addr进行身份validation。
使用Kerberos有可能使用SASL来encryption所有的东西。
Kerberos的
要求OpenLDAP具有用于LDAP身份validation的SASL传递身份validation。 (不难。)
应该使用DNS条目。 (不要求,但非常有用)。
GSSAPI可以用来代替ssh-keys。 (可以共存)
KDC机器应该与客户机器分开。
的OpenAFS
用DESencryption。 (不被认为是安全的)
需要kerberos或它自己的传统authserver。
有它自己的文件系统ACL。