CHMOD和我服务器上目录的安全性

时间:2009-02-26 02:22:59

标签: security sysadmin chmod

我的服务器上有一个文件夹,我已将权限更改为777(读取,写入和执行全部),以允许用户上传他们的图片。

所以我想知道,这涉及到哪些安全风险?

我已经实现了代码来限制可以上传的文件格式,但是如果有人要找到目录的位置会发生什么情况,这会对我的服务器造成任何威胁吗?

他们可以开始上传他们想要的任何文件吗?

感谢。

4 个答案:

答案 0 :(得分:3)

当用户通过Web表单和某些PHP脚本将文件上传到您的服务器时,服务器上的磁盘访问会发生在运行Web服务器的用户ID(通常是nobody,www-data,apache,_httpd甚至根)。

请注意,无论哪个用户上传文件,都会使用此单用户ID

只要没有本地用户通过其他方式访问系统(例如ssh),将上传目录权限设置为0777就不会产生太大影响 - appart from有人利用系统中其他地方的安全漏洞,无论如何都没有人适用这些权限,这样的攻击者可能只会使用/tmp

最好只在实际需要的文件或目录上设置这些权限。在这种情况下,这可能意味着:

drwxrws--- 5 www-data www-data          4096 Nov 17 16:44 upload/

我假设除了Web服务器之外的其他本地用户都想访问这些文件,比如sysadmin或web设计器。将这些用户添加到您的Web服务器运行的组中,并且他们不需要sudo或root权限来访问该目录。此外,+s表示upload/中的新文件和目录将自动归同一组所有。

至于你的上一个问题:只是因为攻击者知道目录在哪里,并不意味着他可以神奇地让文件出现在那里。仍然需要运行某种服务来接受文件并将其存储在那里......所以不,将权限设置为0777不会直接使其安全性降低。

但是,在整个设置中,您无法使用文件权限解决“安全”和“安全”等多个维度:

  • 上传者仍然可以覆盖彼此的文件,因为它们都使用相同的用户ID
  • 有人可以将恶意PHP脚本上传到上传目录并从那里运行,可能利用系统上的其他漏洞并获得root权限
  • 有人可以使用您的服务器分发儿童色情
  • 有人可以在上传类似于paypal.com之后从您的服务器运行网上诱骗网站

......可能还有更多。您可能已经在上传脚本中解决了其中一些问题,但是再一次了解unix文件权限以及它们应用的位置通常在开始时了解安全问题,这表明您可能尚未准备好解决所有问题可能存在的问题。

有人看了你的代码!

答案 1 :(得分:1)

这些用户通过什么方式上传他们的照片?如果是在网络上,那么您只需要让Web服务器或CGI脚本用户访问该文件夹。

这里最大的危险是用户可以覆盖其他用户文件,或删除其他用户文件。没有人访问此文件夹的任何人都无法写入该文件夹(除非您有某种访客/匿名用户)。

如果你需要一个每个人都可以创建文件的目录,你想要的是模仿/ tmp目录的权限。

$ chown root:root dir; chmod 777 dir; chmod + t dir;

这样任何用户都可以创建文件,但不能删除其他用户拥有的文件。

与其他人所说的相反,unix系统中目录上的可执行位意味着您可以将该目录设为当前目录(cd到它)。它与执行无关(执行目录是没有意义的)。如果删除可执行位,则任何人都无法“cd”到它。

答案 2 :(得分:0)

如果没有别的,我会删除所有用户的可执行权限(如果不是所有者和组)。启用此选项后,有人可以上传一个看起来像图片但实际上是可执行文件的文件,这可能会导致无法完成损坏。

除非您需要匿名访问,否则可能会删除所有用户的读写权限,并将其限制为所有者和组。

答案 3 :(得分:-1)

您不希望可执行位开启。就* nix而言,可执行位意味着您可以实际运行该文件。因此,例如,php脚本可以作为JPEG类型上传,然后有人可以运行该脚本,如果他们知道位置并且它在web目录中。