用于Linux的安全networking文件系统:人们在做什么?

NFSv3是普遍的,但默认的安全模型是… 古怪 。 CIFS可以使用Kerberos身份validation,但是如果没有POSIX语义,则它是非启动器。 AFS从来没有encryptionnetworking上的stream量,是krb4 – 基本上是一个死的项目。 花哨的新实验性文件系统要么从未实现,要么专注于速度(如果幸运的话,数据可靠性) – 例如,Lustre使用与NFSv3相同的客户端信任模型。 对于家庭使用,sshfs是漂亮的,但是肯定不会缩放。

然后当然还有NFSv4,sec = krb5p。 理论上很好,但是十年之后,似乎在现实世界中还没有得到应用。 Linux客户端刚刚删除了实验性标签。 而如果你看看EMC Celerra,Isilon等等,那都是NFSv3。 (Celerra支持NFSv4,但是它真的被埋在了文档里面,Isilon显然是在为FreeBSD添加RPCGSS支持,所以也许到了,但是现在还没有。)我甚至不能把这个post标记为“nfsv4”,因为我这里新的, 这将是一个新的标签

所以, 真的 。 你在做什么?

既然这是一个具体的问题(你们都在做什么),我们来回答一下:什么都没有。 大多数pipe理员和用户都不用担心NFS的安全问题,所以每个人都使用NFSv3。 它通常是一个受控制的环境(从某种意义上说,只有知名的机器才能连接到networking上)。 如果有人被滥用,他们会被解雇或被关进监狱。

对于你不希望任何人能够读取的数据,你可以明确地encryption它们,例如Firefox密码数据库,ssh密钥或者pgp密钥。 你这样做是因为你知道pipe理员可以在文件服务器上读取它们,所以networking文件系统的安全性不会有任何帮助。

你似乎在这里问两个问题:

我们实际使用的是什么? 这是什么?

实际上使用的是CIFS,在我的使用情况下POSIX不那么重要,所以我没有任何问题。 NFS3用于安全性不重要的领域,比如我的SLES安装服务器。 最后是简单的用户共享的sshfs / gvfs。 有线encryption不被认为是必要的,所以这对我们来说不是一个有意义的因素。

至于另外一个问题,对于你要找的东西似乎有六个主要的要求:

  1. encryptionnetworking上的stream量。
  2. encryption身份validation。
  3. Posix语义。
  4. 强大的基于服务器的ACL强制执行。
  5. 不是userland。
  6. 是实际使用的。

我怀疑第5点和第6点会成为这里的杀手,但是在这里(这也是一个表格非常方便的地方,但是Markdown / StackExchange不支持)。

NFSv3 + IPSec

  1. 在电线上encryption,通过
  2. 没有encryptionauthentication, 失败
  3. Posix语义,通过
  4. 没有强大的基于服务器的ACL强制执行失败
  5. 不是userland,通过
  6. 实际上是使用,通过

NFSv4 + Krb + IPSec

  1. 在电线上encryption,通过
  2. encryption的authentication,通过
  3. Posix语义,通过
  4. 强大的基于服务器的ACL强制执行,通过
  5. 不是userland,通过
  6. 实际上没有使用, 失败

CIFS

  1. 没有encryption的电线, 失败
  2. encryption的身份validation
  3. Posix的语义,通过(Samba和内核现在,Windows已经有一个Posix层自新台币天)
  4. 强大的基于服务器的ACL强制执行,通过
  5. 不是userland,通过
  6. 实际上是使用,通过

CIFS + IPSec

  1. 在电线上encryption,通过
  2. encryption的身份validation
  3. Posix语义,传递(Samba&Kernel现在)
  4. 强大的基于服务器的ACL强制执行,通过
  5. 不是userland,通过
  6. 实际上没有使用, 失败

SSHFS

  1. 在电线上encryption,通过
  2. encryption的authentication,通过
  3. Posix语义,通过
  4. 强大的基于服务器的ACL强制执行,通过
  5. 是userland, 失败
  6. 实际上是使用,通过

AFP / NetATalk

  1. 在电线上encryption, 失败
  2. encryption的authentication,通过
  3. Posix语义,通过
  4. 强大的基于服务器的ACL强制执行,通过
  5. 不是userland,通过
  6. 实际上是使用, 失败

而且我没有触及那里的分布式文件系统。 根本没有一件事情可以做到。 一些接近(CIFS),一些已经在那里,但没有人使用它们(NFS4 + IPSec,CIFS + IPSec)。 出于某种原因,安全的networking文件系统多年来一直受到很多妥协。

多年来,我一直在用Linux和Windows客户端来使用openafs。 它工作的很好,有一个积极的开发社区,并且在过去的几年中,由于各种Linux发行版已经包含了它,所以安装和pipe理变得更加容易。 它有它的瑕疵,但是我发现它们被更多的pipe理灵活性所抵消,能够让客户端和服务器被慢速链接分开,易于异地备份以及其他积极的AFS。

我特别喜欢的一件事是在openafs上运行生产面向Internet的Web服务器,ACL被locking。 没有Kerberos票据,机器上没有任何进程,即使是以root身份运行的进程,也可以写入文件系统。 我不能指望有多less次我们注意到由于这个简单的措施,攻击完全失败了。

有一些非常大的openafs用户 – 我知道的最大的商业用户是摩根士丹利。

如果OpenAFS仍然活着,并且它下面有一个VPN,因为它目前唯一的encryption是DES。

我看到这个主题中的很多人都在谈论数据隐藏,即攻击不能窥探你的数据。 考虑数据完整性和真实性同样重要。 这些nfs包真的来自您的nfs服务器吗? 一个nfs数据包在运输过程中是否改变了?

那么,对我来说,这听起来像其中一个分布式文件系统将为你。 我不太想推荐OpenAFS,因为它是旧的,不支持IPv6,

我对GlusterFS本人很满意。 Gluster相当成熟,performance不错,并具有良好的function集。 然而,正如IRC最近所讨论的那样,Gluster也不能稳定地支持IPv6。 这个function预定为3.6或3.7。

还有一个名为HekaFS的项目,它build立在Gluster上,增加了更高级的身份validationfunction和SSL。 它是非常有据可查的,devise得非常好。

你可能感兴趣的是XtreemFS ,它是为全球网格计算而devise的,所以它默认带有SSL和东西。 尽pipe我的使用select落在了Gluster上,因为这个社区似乎更加活跃,并且更好地logging下来。

当然,两者都是符合posix的。

我使用NFS。 但是服务器到服务器的NFS是通过一个专门的networking骨干来完成的,所以不需要encryption,authentication也是毫无意义的。 只需将每个导出设置为仅将基于IP的select目录共享到服务器即可。

在所有应有的尊重,你完全看错了这个问题,你应该离开控制台几个小时。

几乎所有存储io都是未encryption的,因为在抽象堆栈的这一层并不重要。 对此感到怀疑? 把你的锦缎光纤交换机上的一个水龙头,你会看到这个光纤通道,就像iscsi和nfs,都是一个未encryption的混乱 – devise。 解决这是一个中等问题,而不是存储协议问题。 例如,要安全和encryptionnfs? 使用ipsec / ssl / tls或纯粹的硬件解决scheme创build一个encryption的点到nfs客户端和服务器之间的lan。