针对 SSH 隧道保护 NFS

Cra*_*sta 7 ssh nfs ssh-tunnel

我正在阅读http://nfs.sourceforge.net/nfs-howto/ar01s06.html试图理解为什么当我到达“6.4. 通过 SSH 隧道传输 NFS”部分时 localhost 导出很糟糕。该部分中关于导出本地主机的可能安全漏洞的所有内容,因为它允许其他人通过 ssh 端口转发并访问共享是有意义的。

这是我的问题,如果用户可以通过 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)
Run Code Online (Sandbox Code Playgroud)

如您所见,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
Run Code Online (Sandbox Code Playgroud)

似乎 A 的股票出口到 B 容易受到任何可以通过 ssh 进入 B 的人的攻击。是这种情况吗?除了简单地确保可以登录到 B 的任何人都是非常值得信赖的用户之外,还有什么方法可以防止这种情况发生?

Mar*_*ino 5

您强调的问题不是缺陷,而是功能!是的,这是 SSH 协议的一个特性,如果配置不当的 SSH 服务可用于广泛的漏洞利用,例如:

  • 绕过主机防火墙
  • 绕过 IP 限制
  • 远程访问仅在“本地主机”接口上侦听的服务 [ mysql?]

作为常见错误配置和安全问题的一个示例,将/sbin/nologinshell设置为用户并不会阻止它使用 OpenSSH 守护程序的大多数默认配置生成 ssh 隧道!

根据您的问题,您应该避免使用 NFSv2/NFSv3 并使用更安全的 NFSv4,它转向不同的安全模型,它对单个用户而不是主机进行身份验证。或者,通过正确配置 OpenSSH 服务,禁止普通用户使用 SSH 隧道。


use*_*517 4

这是一份非常古老的文档,您可以看到它谈论的是 2001 年发布的内核版本 2.4,在过去 12 年中发生了很多变化。尽管有些事情还是一样。

我只有 CentOS 6.x 机器可以玩,默认情况下使用 nfsv4。为了允许通过中间机器进行连接,我必须使用insecureset 导出文件系统。

因此,要回答您的问题,请使用 nfsv4 并使用默认secure模式。如果你对B有足够的权限,你还可以设置

AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)

在 /etc/ssh/sshd_config 中。

与安全一样,如果你给予人们特权,你就必须信任他们。