保护安全SFTP服务器的文件系统


12

这似乎不是一个发展问题,但实质上是。让我解释一下。我们的主要开发重点是动态内容页面。一些客户要求我们为他们的旧静态内容留在服务器中(由他们支付)空间。我们通过为客户提供一个到其他域的ftp帐户来实现此目的。(例如,客户域是customer.com,但是他们正在通过otherdomain.com/customerstatic访问其静态内容)。

现在,我们要提高安全性,为客户在Linux服务器中提供sftp帐户。我在其shell环境中使用openssh / sftp-server,因此他们无法登录或执行命令。

问题是,从本质上说,默认情况下许多文件系统文件都是默认的(drwxr-xr-x),这意味着任何用户都将能够读取目录中的内容以及某些文件。我不认为将整个文件系统更改为-rwxr-x--x是明智之举,因为我不知道有多少系统文件需要该读取权限。

过去有人遇到过这个问题。如果有的话,您能启发一下吗?

谢谢


好的问题和简洁的完整答案-主持人可能应该更改标题并将其变成非Wiki问题。
MikeyB

取消维基问题是不可能的;抱歉
Jeff Atwood

Answers:


22

SFTP本质上不是不安全的。让它们进入您的整个文件系统。请查看此内容,以了解如何启用基于chroot的 SFTP访问,这将锁定他们可以访问的目录(例如,他们的主目录)或要上传到的目录。

在Linux上,我要注意这一部分(配置/ etc / ssh / sshd_config):

  Match Group sftponly
         ChrootDirectory %h
         ForceCommand internal-sftp 
         AllowTcpForwarding no

这意味着“ sftponly”用户组中的任何人都将只能使用其主目录。

有关更多信息,请参见链接,另请阅读sshd_config手册页。希望能有所帮助。


另外,internal-sftp当客户端请求sftp子系统时,您可能需要告诉OpenSSH使用它-它可能已设置为使用外部sftp-server程序。为此,请Subsystem sftp internal-sftp在配置文件的主要部分(而不是该Match部分的下面)中添加或更改该行。
Nate

乔什(Josh),您有没有想过一种方法,使它不需要用户主目录的root所有权?
马特·西蒙斯


1

当您说“许多文件系统默认为755权限”时,实际上意味着默认的umask设置为022。您可以通过将umask设置为027来更改此默认值(对于新文件),这将使默认权限为750,或者将umask设置为007,这将使默认权限为770。


0

您可能会考虑设置一个OpenVZ服务器,然后为每个公司创建一个单独的小型VM ftp / sftp“容器”。这将它们分开,一旦您掌握了OpenVZ的功能,便可以轻松地处理这些小事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.