是否正确设置了 Windows 上 OpenSSH 的用户权限?

是否正确设置了 Windows 上 OpenSSH 的用户权限?

我正在尝试在 Windows 上设置 OpenSSH 以提供 SFTP 站点。我在用户安全设置方面遇到了一些问题。

以下是我创建用户的基本步骤:

  1. 在主机上创建新用户
  2. 将用户添加到 openssh 密码文件中,并针对 cygwin 调整文件路径,使其指向客户端的主文件夹(例如:/cygdrive/e/homefolders/username)
  3. 允许用户对其文件夹进行读/写访问

我遇到的问题是,用户需要具有 OpenSSH 程序文件夹的执行权限才能登录。我发现我可以禁用对特定文件夹(例如“etc”)的访问,但我担心我必须在此处提供权限。使用 FileZilla 时,我会看到文件夹层次结构“/cygdrive/e/homefolders/username”,并且可以通过“/”浏览具有读取权限的文件夹。

我应该使用什么特定策略来确保此设置中的安全?我可能需要为特定文件或文件夹提供执行权限,但仅此而已?我想完全锁定除对自己文件夹的读/写访问权限之外的所有内容,但这似乎不可能。

答案1

您有多想要 SFTP?Cygwin 有点不靠谱,而 Windows 版 OpenSSH 已经过时了。我的方法是使用 WebDAV,它可以解决您遇到的大多数问题:

  • 读取和写入文件
  • 加密保护身份验证令牌和文件
  • 几乎在所有操作系统上都受支持
  • 抵御过度防火墙配置

IIS 支持它,即使是在服务器 2000 附带的版本上。

答案2

经过进一步研究,我发现我下面最初建议的使用内置 chroot 功能在 cygwin 下不受支持。

你最好考虑其他替代方案。也许是 webdav,也许是 ftps 服务器 (filezilla),或者也许是其他所有权sftp 服务器。

如果你必须使用 cygwin OpenSSH 执行此操作,则可以使用 scponly shell。下面是一个pdf描述该过程。


不确定您在 Windows 上使用的是哪个版本的 openssh。但听起来您想设置 sftp chroot。

您可能想查看这些相关问题。

答案3

我遇到的问题是,用户需要具有 OpenSSH 程序文件夹的执行权限才能登录。我发现我可以禁用对特定文件夹(例如“etc”)的访问,但我担心我必须在此处提供权限。使用 FileZilla 时,我会看到文件夹层次结构“/cygdrive/e/homefolders/username”,并且可以通过“/”浏览具有读取权限的文件夹。

这是 OpenSSH priv-sep 设置的一部分。

这篇(PDF)是一篇关于它和其他 OpenSSH 安全功能的好论文

简而言之,主守护进程切换到非特权进程,试图阻止程序其余部分的任何漏洞允许“root”访问。

您可能还想使用chroot 类似设置完全阻止用户主目录之外的访问。

我也会支持 webdav 的建议,即使我已经放弃让它在 OS X 客户端以外的任何客户端上运行。

相关内容