我正在尝试在 Windows 上设置 OpenSSH 以提供 SFTP 站点。我在用户安全设置方面遇到了一些问题。
以下是我创建用户的基本步骤:
- 在主机上创建新用户
- 将用户添加到 openssh 密码文件中,并针对 cygwin 调整文件路径,使其指向客户端的主文件夹(例如:/cygdrive/e/homefolders/username)
- 允许用户对其文件夹进行读/写访问
我遇到的问题是,用户需要具有 OpenSSH 程序文件夹的执行权限才能登录。我发现我可以禁用对特定文件夹(例如“etc”)的访问,但我担心我必须在此处提供权限。使用 FileZilla 时,我会看到文件夹层次结构“/cygdrive/e/homefolders/username”,并且可以通过“/”浏览具有读取权限的文件夹。
我应该使用什么特定策略来确保此设置中的安全?我可能需要为特定文件或文件夹提供执行权限,但仅此而已?我想完全锁定除对自己文件夹的读/写访问权限之外的所有内容,但这似乎不可能。
答案1
您有多想要 SFTP?Cygwin 有点不靠谱,而 Windows 版 OpenSSH 已经过时了。我的方法是使用 WebDAV,它可以解决您遇到的大多数问题:
- 读取和写入文件
- 加密保护身份验证令牌和文件
- 几乎在所有操作系统上都受支持
- 抵御过度防火墙配置
IIS 支持它,即使是在服务器 2000 附带的版本上。
答案2
答案3
我遇到的问题是,用户需要具有 OpenSSH 程序文件夹的执行权限才能登录。我发现我可以禁用对特定文件夹(例如“etc”)的访问,但我担心我必须在此处提供权限。使用 FileZilla 时,我会看到文件夹层次结构“/cygdrive/e/homefolders/username”,并且可以通过“/”浏览具有读取权限的文件夹。
这是 OpenSSH priv-sep 设置的一部分。
这篇(PDF)是一篇关于它和其他 OpenSSH 安全功能的好论文
简而言之,主守护进程切换到非特权进程,试图阻止程序其余部分的任何漏洞允许“root”访问。
您可能还想使用chroot 类似设置完全阻止用户主目录之外的访问。
我也会支持 webdav 的建议,即使我已经放弃让它在 OS X 客户端以外的任何客户端上运行。