网络身份验证+漫游主目录-我应该考虑使用哪种技术?


9

我正在研究为用户提供跨多台计算机的单一身份的软件。也就是说,用户应在每台计算机上具有相同的权限,并且该用户应有权访问每台计算机上的所有他或她的文件(漫游主目录)。这个一般想法似乎有很多解决方案,但我正在尝试为我确定最佳解决方案。以下是一些详细信息以及要求:

  1. 机器网络是运行Ubuntu的Amazon EC2实例。
    • 我们使用SSH访问机器。
    • 该LAN上的某些计算机可能有不同的用途,但我仅讨论特定用途的计算机(运行多租户平台)。
  2. 该系统不一定具有恒定数量的机器。
    • 我们可能必须永久或临时更改正在运行的计算机数量。这就是为什么我要研究集中式身份验证/存储的原因。
  3. 实现这种效果应该是安全的。
    • 我们不确定用户是否可以直接进行shell访问,但是他们的软件可能会在我们的系统上运行(当然,使用受限的Linux用户名),这与直接shell访问一样好。
    • 为了安全起见,假设他们的软件可能是恶意的。

我听说过多种技术/组合可以实现我的目标,但是我不确定每种组合的后果。

  • 较早的ServerFault帖子推荐使用NFS和NIS,尽管根据Symantec的旧文章,此组合存在安全问题。该文章建议使用NIS +,但由于年代久远,这篇Wikipedia文章引用了一些声明,暗示Sun逐渐偏离NIS +。推荐的替代品是我听说的另一件事...
  • LDAP。看起来LDAP可用于将用户信息保存在网络上的集中位置。仍然需要使用NFS来满足“漫游主文件夹”的要求,但是我看到它们被一起使用。既然Symantec文章指出了NIS和NFS中的安全性问题,是否有软件可以替代NFS,还是我应该注意该文章的建议以将其锁定?之所以趋向于LDAP,是因为我们架构的另一个基本部分RabbitMQ具有针对LDAP的身份验证/授权插件。RabbitMQ将以受限方式供系统上的用户访问,因此,我希望将安全系统捆绑在一起。
  • Kerberos是我听说过的另一种安全身份验证协议。几年前,我在一个密码学课上学到了一些关于它的知识,但对它却不太记得。我在网上看到了一些建议,可以通过多种方式将其 LDAP 结合使用。这有必要吗?没有Kerberos的LDAP有哪些安全风险?我还记得在卡耐基梅隆大学开发的另一款软件中使用了Kerberos ...
  • 安德鲁文件系统或AFS。可以使用OpenAFS,尽管其设置似乎有些复杂。在我的大学中,AFS同时满足这两个要求...我可以登录到任何计算机,并且“ AFS文件夹”始终可用(至少在获得AFS令牌时)。

除了我应该寻找的建议之外,是否有人有特别有用的指南?粗体指出,LDAP似乎是最佳选择,但是我对与安全性有关的实现细节(Keberos?NFS?)特别感兴趣。

Answers:


7

认证,授权和目录信息

这不是您问题的完整答案,但我认为这可能有助于解决有关NIS,LDAP,Kerberos的问题。

从此开始,它很好地概述了身份验证授权之间的区别,这对于此类讨论很重要。

正如您所说,Kerberos 只是一种身份验证协议。给定一组凭据(例如,用户名和密码),它将告诉您它们是否有效。这就是全部。

相反,NIS和LDAP都是目录服务。它们允许客户端查询有关用户的信息(您的主目录是什么?您的用户ID是什么?)。两者都可以用作身份验证源,但问题会有所不同。

NIS本身并不会真正为您执行任何身份验证。而是,它将密码哈希公开给客户端计算机,并且本地系统以与本地帐户相同的方式执行实际的身份验证步骤。这里的问题是,在您的一个NIS客户端上拥有帐户的任何人都可以获取您的所有密码哈希,然后在闲暇时对其进行暴力攻击。

LDAP在某种程度上更安全​​,因为身份验证步骤实际上是在服务器上执行的。您必须确保使用SSL或TLS对LDAP会话进行加密,否则密码将以明文形式显示在网络上,容易受到数据包嗅探。

使用Kerberos进行身份验证,然后使用NIS或LDAP进行授权(通常是指“组成员身份”)和目录信息是很常见的。我认为,一旦删除了密码哈希(通过将身份验证转移到Kerberos),NIS的安全性就不会比LDAP差,并且具有可在任何现代Linux发行版中“立即可用”的优点。

另一方面,LDAP通常具有更大的可扩展性,如果您有大量的用户(或其他目录对象),则可扩展性更好,可提供丰富的查询,并且通常更易于管理。LDAP在各种应用程序中也受本机支持,而NIS与核心操作系统之间存在奇怪的乱伦关系,这可能是不希望的。

如果您是从头开始构建的,则建议使用Kerberos进行身份验证,并使用LDAP进行目录服务。

文件系统

NFS有一个很大的优势:您已经拥有了它,它已经被广泛部署,并且通常是稳定的。NFS有两个主要缺点:

  • 对于并行I / O,它不能很好地扩展。如果您有大量计算机命中相同的文件系统,则单个NFS服务器可能很难跟上。这就是为什么大型集群通常使用旨在支持并行I / O的集群文件系统(例如Lustre,GlusterFS,GPFS,GFS等)的原因。

  • 它的安全模型不好。通常,NFS安全决策完全基于您的数字用户ID。如果您在可以挂载NFS文件系统的系统上具有root用户,则可以访问所有文件-因为您始终可以使用适当的用户ID创建本地用户。这并不是严格意义上的,因为NFSv3和NFSv4都对Kerberos身份验证提供了各种级别的支持,但是我还没有遇到任何使用Kerberos身份验证的人...所以您的里程可能会有所不同。

对于小型部署,尽管存在限制,但大多数人还是使用NFS。

还有许多其他解决方案-我上面提到的群集文件系统以及AFS和其他解决方案-但其中大多数将需要您自己进行一些工作才能使其在您选择的任何发行版上运行。最近,我听说过有关GlusterFS的好消息,因此,如果我正在寻找NFS替代品,那可能是我的第一要务。


感谢您清理这些东西。实际上,我在授权与身份验证方面拥有良好的基础;我只是不确定每个软件的功能。储存部分也很重要。您知道Kerberos / LDAP的安全模型如何与NFS关联吗?
布莱恩(Brian)

我已经用有关NFS的一些信息更新了答案。
larsk 2011年

在这种情况下,我认为没有理由仅限于单个NFS服务器,尽管一个服务器可能就足够了,以后可以添加更多服务器。help.ubuntu.com/community/AutofsLDAP
84104

我已经尝试过该AutofsLDAP指南以及其他指南。由于我的结果有所不同,它要么写得不好,要么过时了,我无法超越某一点。:(
布莱恩

您可能需要使用适当的详细信息来打开一个新问题。
larsk 2011年

0

这是部分答案。

NIS / NIS +
不要使用NIS。将LDAP与nis模式一起使用。

OpenLDAP(在Ubuntu上也称为slapd)
确保设置正确的ACL和SSF(安全强度因素)。
如果不小心,很容易以明文形式发送密码。
http://www.openldap.org/doc/

NFS
NFS不是加密的。
可以将其包裹在ssl中并进行一些欺骗。
如果没有Kerberos,则依赖ip_addr进行身份验证。
使用Kerberos,可能会将SASL用于加密所有内容。

Kerberos
要求OpenLDAP具有SAS身份验证的SASL直通身份验证。(不难。)
应使用DNS条目。(不是必需的,但非常有用)。
可以使用GSSAPI代替ssh-key。(可以共存。)
KDC计算机应与客户端计算机分开。

OpenAFS
用DES加密。(不认为是安全的。)
需要使用kerberos或它自己的旧版authserver。
有自己的文件系统ACL。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.