>计算机网络是运行Ubuntu的Amazon EC2实例.
>我们使用SSH访问这些机器.
>此LAN上的某些计算机可能有不同的用途,但我只讨论某些用途的计算机(运行多租户平台).
>系统不一定拥有恒定数量的机器.
>我们可能必须永久或暂时改变运行的机器数量.这就是为什么我要研究集中认证/存储的原因.
>这种效果的实施应该是安全的.
>我们不确定用户是否可以直接访问shell,但他们的软件可能会在我们的系统上运行(当然,在受限制的Linux用户名下),这与直接shell访问一样好.
>让我们假设他们的软件为了安全起见可能是恶意的.
我听说过几种技术/组合来实现我的目标,但我不确定每种技术/组合的后果.
>较旧的ServerFault帖子推荐NFS& NIS,虽然根据this old article by Symantec,该组合存在安全问题.该文章建议转移到NIS,但是,由于它已经陈旧,this Wikipedia article引用了一些声明,表明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?)特别感兴趣.
解决方法
这不是您问题的完整答案,但我认为这可能有助于解决有关NIS与LDAP和Kerberos的问题.
从this开始,它可以很好地概述身份验证和授权之间的区别,这对于理解这种讨论非常重要.
正如您所说,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替代品.