AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 486188
Accepted
CrazyCasta
CrazyCasta
Asked: 2013-03-09 21:50:00 +0800 CST2013-03-09 21:50:00 +0800 CST 2013-03-09 21:50:00 +0800 CST

针对 SSH 隧道保护 NFS

  • 772

我懒洋洋地阅读http://nfs.sourceforge.net/nfs-howto/ar01s06.html试图理解为什么当我到达“6.4。通过 SSH 建立 NFS 隧道”部分时 localhost 出口不好。该部分中关于导出 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)

如您所见,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 容易受到任何可以通过 ssh 进入 B 的人的攻击。是这样吗?除了简单地确保可以登录 B 的任何人都是非常受信任的用户之外,是否有其他方法可以防止这种情况发生?

ssh
  • 4 4 个回答
  • 4121 Views

4 个回答

  • Voted
  1. Martino Dino
    2013-03-10T01:00:00+08:002013-03-10T01:00:00+08:00

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

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

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

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

    • 5
  2. Best Answer
    user9517
    2013-03-10T03:28:05+08:002013-03-10T03:28:05+08:00

    这是一个非常古老的文件,你看它谈到了 2001 年发布的内核版本 2.4,在过去的 12 年里发生了很多变化。虽然有些东西还是一样。

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

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

    AllowTcpForwarding no
    

    在 /etc/ssh/sshd_config 中。

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

    • 4
  3. mr.spuratic
    2013-03-10T03:46:05+08:002013-03-10T03:46:05+08:00

    该文件相当旧(2006 年!)。在没有更好的安全机制(即 NFSv4 + GSS)的情况下,将主机添加到导出意味着您隐含地信任该主机、它的用户和进程。

    SSH 端口转发不是你唯一的问题,你可以禁止它(sshd's AllowTcpForwarding no),但sshd_config(5)如前所述

    请注意,禁用 TCP 转发不会提高安全性,除非用户也被拒绝 shell 访问,因为他们始终可以安装自己的转发器。

    因此,将 SOCKS 添加到列表socat中netcat(OpenSSH 也支持它,尽管只有 TCP)、OpenSSHtun隧道支持,即使bash有了它的/dev/tcp支持,您也可以看到问题……太多了,无法一一列举。

    如果 B 具有允许每个用户规则的主机防火墙(即 Linux /iptables with --uid-owner),您可以锁定 B,以便 A 可以更加信任它。否则尝试使用 GSS 和 Kerberos 的 NFSv4,这会给你每个用户的信任。

    • 2
  4. Dan
    2013-03-17T05:00:24+08:002013-03-17T05:00:24+08:00

    这很容易被击败

    1. 确保你的出口被标记secure
    2. 不允许计算机 C 对计算机 B 进行 root 访问

    的手册页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 的端口发起连接。

    在我的一个系统上测试,我看到以下内容:

    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 上将其帐户提升为 root 的人都可以绕过此保护,因此您需要充分锁定 NFS 客户端计算机。

    • 1

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve