【问题标题】:How to set secure permissions in webserver directory如何在网络服务器目录中设置安全权限
【发布时间】:2014-12-07 22:26:06
【问题描述】:

我真的很困惑这个问题。我阅读了很多教程,但每个教程都提出了不同的做法。

我在 /var/www 目录中有一个 webserve 在该目录中,每个网站都在新文件夹(博客等)中。我认为文件夹的权限必须是 755,文件的权限必须是 644,好的。 但是用户和组是这些文件和文件夹的所有者呢?我读到有人说必须是 root:www-data 其他人说 www-data:www-data,其他人说出于安全原因不要这些做法。 对我来说太复杂了,因为我们必须能够创建文件,有时有时会执行进程,同时又要安全。 什么是最佳实践? 任何人都可以解释我 提前致谢

【问题讨论】:

    标签: file permissions directory file-permissions


    【解决方案1】:

    这是不存在最终答案的事情,没有“正确”或“错误”。

    这取决于你的个人理念,但也许一些一般规则会有所帮助:

    1. 始终尝试授予尽可能少的权限,以便在不费力的情况下保持尽可能高的安全性

    2. 更喜欢将不同角色的读写权限分开,理想的情况是只有本地帐户能够写入网络资源,而网络服务器进程只能读取这些文件。

    3. 适用于许多现代“Web 应用程序”,其中大多数请求正是该帐户的写入权限。这显然会带来很大的安全风险,因为您必须完全依赖其他人实现的代码质量。这是一个糟糕的情况,尤其是在 Web 编程领域,其中安全漏洞可以从外部访问。因此,至少尝试将这些权利限制在那些真正需要写入的资源中:

      3.1 仅授予数据文件夹之类的写入权限,也可能是嵌入式数据库文件

      3.2 仅在真正需要时才授予对实现文件本身的写访问权限,例如在更新期间临时

      3.3 如果可能,还尝试将 Web 应用程序的运行时数据和实现文件存储为单独的位置。

    4. 确保 http 服务器进程由本地用户帐户拥有,该用户帐户没有授予本地登录权限(请参阅/etc/passwd,应该配置了无效的 shell,或者一些类似的预防措施)。

    5. 对执行权要格外小心。只有极少数情况下,http 服务器进程确实需要对已发布文档/文件中的文件具有执行权限。

    6. 授予对物理文件的直接访问权限,始终通过处理程序“流式传输”文件(其内容),因此脚本能够控制、验证和拒绝此类请求。

    7. 仅激活 http 服务器中真正需要的那些模块和功能。

    和往常一样,最重要的规则:

    1. 了解你在做什么,不要不要盲目地听从任何解释、建议或提示。

    2. 定期检查您的日志文件,并不要推开您眼前出现的东西。

    【讨论】:

    • 非常感谢您的一般规则!也许我理解您的建议是文件和文件夹的用户所有者,并且 www-data 组的这个用户部分应该是一种安全且实用的做法? (当然文件 644 和文件夹 755 权限)
    • 好吧,如果 http 服务器进程根本不需要对 Web 资源的写权限,那么这听起来很合理。尽管您提到了这些权限,但不需要该组,因为它无论如何都没有写权限。
    • 我想为组(www-data)添加写权限,只有一些文件夹(例如“uploads”)'chmod g+w uploads'想使系统上的其他用户更难窥探。谢谢
    • 很好,你明白了。如果您真的害怕“其他用户”(在服务器上?),那么您可能希望将一般权限降低到 640/750。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2011-02-26
    • 2011-07-31
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多