我正忙着读http://nfs.sourceforge.net/nfs-howto/ar01s06.html试图了解为什么本地主机导出不好,当我到了“6.4。通过SSH隧道NFS”部分。 这一节中的所有内容都是导出本地主机时可能存在的一个安全漏洞,因为它允许其他人ssh端口转发并访问共享。
这是我的问题,如果用户能够连接到可以连接到NFS服务器的计算机,那么如何防止ssh隧道破坏系统的安全? 例如,想象计算机A( 192.168.1.1
),B( 192.168.1.2
)和C( 192.168.1.3
)。 设A是具有以下导出文件的服务器:
/home 192.168.1.2(rw)
正如您所看到的,A正在授予B权限来使用/ home共享。 现在,让C ssh到B与:
$ ssh 192.168.1.2 -L 250:192.168.1.1:2049 -f sleep 60m $ ssh 192.168.1.2 -L 251:192.168.1.1:32767 -f sleep 60m
看起来A的出口给B的股票很容易受到任何人的支配。这是这种情况吗? 除了简单地确保任何可以loginB的人都是非常值得信赖的用户,有没有一种方法可以防止这种情况呢?
这是一个非常古老的文档,你看它在2001年出来的关于内核版本2.4的讨论,在过去的12年中发生了很多变化。 虽然有些事情保持不变。
我只有CentOS 6.x机器,默认使用nfsv4。 为了允许通过中间机器进行连接,我必须导出带有insecure
集的文件系统。
所以要回答你的问题使用nfsv4并使用默认的secure
模式。 如果你有足够的特权B你也可以设置
AllowTcpForwarding no
在/ etc / ssh / sshd_config中。
尽pipe安全,如果你给人的特权,你必须相信他们。
你突出的问题不是一个缺陷,这是一个function! 是的,这是SSH协议的一个特性,并且给出了configuration不当的SSH服务可以用于多种漏洞攻击,如:
mysql
?] 作为常见configuration错误和安全问题的一个例子,将/sbin/nologin
shell设置为一个用户,并不妨碍它为OpenSSH守护进程产生大多数默认configuration的ssh隧道。
根据你的问题,你应该避免使用NFSv2 / NFSv3,并使用更安全的NFSv4,这将转向不同的安全模式,在这种模式下,它对单个用户而不是主机进行身份validation。 或者作为替代,通过正确configurationOpenSSH服务,禁止普通用户使用SSH隧道。
那个文件比较老(2006!)。 在没有更好的安全机制(例如NFSv4 + GSS)的情况下,将主机添加到导出意味着您隐式信任该主机,其用户和进程。
SSH端口转发不是你唯一的问题,你可以禁止它(sshd的AllowTcpForwarding no
),但作为sshd_config(5)
说
请注意,禁用TCP转发不会提高安全性,除非用户也被拒绝访问shell,因为他们始终可以安装自己的转发器。
因此,添加到列表socat
, netcat
,SOCKS(OpenSSH也支持,虽然只有TCP),OpenSSH tun
隧道支持,甚至bash
的/dev/tcp
支持,你可以看到问题…太多列出。
如果B有主机防火墙允许每用户规则(即Linux / iptables与 – --uid-owner
),您可能能够lockingB,使A可以更多地信任它。 否则,请尝试使用GSS和Kerberos的NFSv4,以便您获得每个用户的信任。
这很容易被打败
secure
exports(5)
手册页exports(5)
说:
secure This option requires that requests originate on an internet port less than IPPORT_RESERVED (1024). This option is on by default. To turn it off, specify insecure.
请注意,这是默认情况下。
从计算机C连接到计算机B的任何用户将作为普通用户连接。 如您所描述的,通过SSH转发的NFS连接看起来像来自运行在B上的进程的源自该用户。 这意味着连接受到B上通常的安全控制,特别是普通用户不能从低于1024的端口发起连接。
testing我的一个系统,我看到以下内容:
djs@tuonela:~$ sudo mount -o port=250,mountport=251,tcp localhost:/srv/users /mnt/x -t nfs mount.nfs: access denied by server while mounting localhost:/srv/users
当然,任何人都可以提升他们的帐户在电脑B的根目录可以击败这种保护,所以你需要充分lockingNFS客户端计算机。