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


我正在寻找能够在多台计算机上为用户提供单一身份的软件。也就是说,用户应该在每台计算机上拥有相同的权限,并且用户应该可以访问每台计算机上的所有文件(漫游主目录)。对于这个总体思路似乎有很多解决方案,但我正在努力为我确定最好的解决方案。以下是一些细节以及要求:

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

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

  • 较旧的ServerFault帖子推荐使用NFS和NIS,尽管这种组合存在安全问题 赛门铁克的这篇旧文章。文章建议转移到NIS +,但是,因为它已经老了, 这篇维基百科文章 已经引用了一些声明,表明Sun已经远离NIS +。推荐的替代品是我听说过的另一件事......
  • LDAP。看起来LDAP可用于将用户信息保存在网络上的集中位置。 NFS仍然需要用于覆盖“漫游主文件夹”的要求,但我看到它们的引用被一起使用。由于赛门铁克的文章指出NIS和NFS都存在安全问题,是否有替代NFS的软件,或者我是否应该注意该文章关于将其锁定的建议? 我正在倾向于LDAP 因为我们的架构的另一个基本部分RabbitMQ具有LDAP的身份验证/授权插件。 RabbitMQ将以受限制的方式访问系统上的用户,因此我希望尽可能将安全系统绑定在一起。
  • Kerberos是我听说过的另一种安全身份验证协议。几年前我在密码学课上学到了一点但不记得太多。我在网上看到可以合并的建议  LDAP有几种方式。这有必要吗?没有Kerberos的LDAP有哪些安全风险?我还记得在Carnegie Mellon大学开发的另一款软件中使用的Kerberos ......
  • 安德鲁文件系统,或AFS。 OpenAFS可以使用,虽然它的设置看起来有点复杂。在我的大学,AFS提供了两个要求......我可以登录到任何机器,我的“AFS文件夹”始终可用(至少在我获得AFS令牌时)。

除了建议我应该研究哪条路径之外,是否有人有任何特别有用的指南?正如粗体文本指出的那样,LDAP看起来是最好的选择,但我对安全方面的实现细节(Keberos?NFS?)特别感兴趣。


8
2017-09-09 18:08






答案:


身份验证,授权和目录信息

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

从...开始 这个,它提供了良好的概述之间的区别 认证 和 授权,这对于理解这种讨论很重要。

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

相比之下,NIS和LDAP都是目录服务。它们允许客户端查询它们以获取有关用户的信息(您的主目录是什么?您的用户ID是什么?)。两者都可以用作具有不同问题的认证来源。

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

LDAP更安全一些,因为身份验证步骤实际上是在服务器上执行的。您必须确保使用SSL或TLS加密LDAP会话,否则密码将在网络上以明文形式公开,因为它很容易受到数据包嗅探。

使用Kerberos进行身份验证然后使用NIS或LDAP进行授权(通常这意味着“组成员资格”)和目录信息是很常见的。我认为NIS,一旦你删除了密码哈希(通过将你的身份验证移到Kerberos)并不比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身份验证支持,但我还没有遇到任何人使用这个...所以你的milage可能会有所不同。

对于小型部署,大多数人只是使用NFS,尽管有其局限性。

还有其他各种解决方案 - 我上面提到的集群文件系统,以及AFS和其他解决方案 - 但是大多数这些解决方案需要您做一些工作才能让它们在您选择的任何分发上运行。我最近听说过关于GlusterFS的好东西,所以如果我正在寻找可能是我看的第一个NFS替代品。


6
2017-09-09 20:35



谢谢你清理那些东西。我实际上在授权与认证方面有很好的基础;我只是不确定每个软件的功能。存储部分也很重要;你知道Kerberos / LDAP的安全模型如何与NFS绑定吗? - Brian
我已经用一些有关NFS的信息更新了答案。 - larsks
在这种情况下,我认为没有理由限于单个NFS服务器,尽管可能就足够了,以后可以添加更多。 help.ubuntu.com/community/AutofsLDAP - 84104
我尝试过使用AutofsLDAP指南以及其他指南。它写得不好或过时,因为我的结果不同,我不能超越某一点。 :( - Brian
您可能希望使用适当的详细信息打开一个新问题。 - larsks


这是部分答案。

NIS / NIS +
不要使用NIS。将LDAP与nis架构一起使用。

OpenLDAP的 (关于Ubuntu的a.k.a. slapd)
务必设置正确的ACL和SSF(安全强度因子)。
如果您不小心,可以很容易地以明文形式发送密码。
http://www.openldap.org/doc/

NFS
NFS不是加密的。
它可以用一些技巧包装在ssl中。
没有Kerberos依赖于ip_addr进行身份验证。
使用Kerberos就可以了 可能 SASL用于加密所有内容。

Kerberos的
需要OpenLDAP才能对LDAP身份验证进行SASL传递身份验证。 (不难。)
应该使用DNS条目。 (不是必需的,但非常有用)。
可以使用GSSAPI代替ssh-keys。 (可以共存。)
KDC计算机应与客户端计算机分开。

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


0
2017-09-09 21:40