管理 /tmp 和 /var/tmp,为什么不能全局写入?

管理 /tmp 和 /var/tmp,为什么不能全局写入?

我一直在尝试锁定我的服务器上的一些安全漏洞,最后我找到了 tmp 文件夹。它们都将存储其他资源使用的文件,但阅读更多内容后,我发现 /tmp 可以保存一些涉及服务器本身的数据,而不是 /var/tmp。

我的问题是,保护 /tmp 和 /var/tmp 的写访问权限意味着什么。我已经尝试保护 /var/tmp,到目前为止没有发生任何不好的事情。

阻止 /tmp 并拒绝保存可能损坏我的服务器的文件是否安全,或者是否存在影响我安全的垃圾邮件或类似内容?如果我允许在我的服务器上访问这些文件夹,比如说具有 777 权限的可写文件夹(就像它们默认的那样),那么漏洞是什么?

谢谢

答案1

/tmp并且/var/tmp应该使其具有全球可写性,以便所有程序/用户都可以在那里创建临时文件。粘性位确保只有所有者(当然还有 root)可以移动/重命名/删除文件(请参阅chmod(1))。当然,应用程序仍然可以对文件设置不安全的权限,允许错误的用户进行读取或写入访问,但这取决于应用程序,与这些目录的权限无关。

答案2

/tmp并且/var/tmp历史上是程序存储临时文件的著名位置。但是,要正常运行,它们必须是全球可写的(并且)。这种方法虽然可行,但同时也带来了各种潜在的安全问题:一个程序会写入临时文件,而另一个程序则会读取这些临时文件,从而导致第二个程序以不可预知的方式运行。

第一个“修复”是让所有写入临时文件的程序使用系统调用生成随机文件名。这种方法可行,但依赖于 (1) 实际使用它的程序;(2) 是否拥有安全的 RNG;以及 (3) 运气。

Fedora 项目正在采取一项举措,让每个系统服务都使用独立的私人临时目录仅对该服务可访问。每个程序都可以看到并使用,/tmp但实际上它们由系统管理的命名空间绑定挂载。非常聪明的解决方案,我猜想它很快就会出现在其他 Linux 发行版中。

相关内容