V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
webdev
V2EX  ›  Linux

linux 下 apache/nginx/web server 的目录权限配置

  •  
  •   webdev · 2016-05-20 21:34:07 +08:00 · 2493 次点击
    这是一个创建于 2910 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基于安全的考虑,希望能把 web 的目录配置的更安全些,只给必要的权限,比如 python, php 的执行权限,某些目录的读写权限等

    能否给点 tips 或者最佳实践

    9 条回复    2016-05-21 12:39:55 +08:00
    whatot
        1
    whatot  
       2016-05-20 22:09:50 +08:00
    如果用 centos ,配好 selinux 那就差不多了。推荐 redhat 的的 selinux 文档。
    ryd994
        2
    ryd994  
       2016-05-21 05:57:44 +08:00 via Android
    简单办法进 docker
    最佳实践就是不需要的打死也不给
    文件应该由 root 持有
    web 服务器给 group 给 r 就行(文件夹需要 x )
    上传文件夹单独 mount ,加 noexec
    网站脚本用另外的组跑,反正 fcgi 又不是同一个用户
    Apache 就不行,但是 Apache 能限制脚本文件必须有 x ,而 fcgi 是不受此限制的
    ryd994
        3
    ryd994  
       2016-05-21 05:58:18 +08:00 via Android
    docker 里啥都不给我不信他能翻出天去
    fcicq
        4
    fcicq  
       2016-05-21 09:11:42 +08:00
    @ryd994 配合 docker 内任何可执行程序的一个 exploit 打穿 namespace 又不是新鲜事, 阿里的人就展示过了. 新版本内核有修正不等于稳定版 maintainer 会把这种东西看上眼 backport 回去, 所以完全可以说绝大多数 docker 用户就是在裸奔. 虚拟机再套一层是没办法的办法. 以内核社区保守的现状来看, 达到 solaris 或者 openbsd 现在的水平用多久都不可能了.
    ryd994
        5
    ryd994  
       2016-05-21 10:12:49 +08:00 via Android
    @fcicq 非 root 也可以吗?
    ryd994
        6
    ryd994  
       2016-05-21 10:23:06 +08:00 via Android
    @fcicq 我上面说的是啥都不给……
    很多人把 docker 当虚拟机用,这当然是会出事
    目前非 root 应该还是安全的
    fcicq
        7
    fcicq  
       2016-05-21 10:46:24 +08:00


    这个影响范围没记错的话应该是 2.6.32 ~ 3.8.x 吧. syscall 有问题和 root 不 root 就没有关系了. 能找到这样洞的人, userspace 下搞个 exploit 肯定和玩一样.
    webdev
        8
    webdev  
    OP
       2016-05-21 11:48:42 +08:00 via iPhone
    @fcicq 给点最佳实践?
    fcicq
        9
    fcicq  
       2016-05-21 12:39:55 +08:00
    @webdev 大致只能听天由命. 安全是个系统工程, 而千里之堤可以溃于蚁穴. 有钱可以请白帽去审查或者建安全团队, 拿钱悬赏买 bug, 搞内部安全讲座, 请牛人去引入安全的开发流程甚至自研私有算法. 没钱对着 OWASP 检查检查也就算了吧.

    一个比较有趣的事实是, 如 GAE 那样跑在 sandbox 里然后还严重限制代码写法的方式, 或者换更安全操作系统自讨苦吃的方式也只有成熟开发者能明白. 偶愿意承认阿里在安全上有建树, 但跑在上面的普通人的应用单靠一个防火墙是远远不够的, 也自然没有太好的方案去解这个问题. rust 是这条路上一个不错的范例, 但离最终目标还是太远而且不可能所有应用都重写.

    实在对不起楼主. 楼主的问题并不好答. linux 目前可行的是在进程运行后用 seccomp 限制可用的 syscall, 在 openbsd 下这个叫 pledge 或者 tame. 脚本语言如果把 fork 进程的能力去掉, 普通的应用还能不能正常跑很难说. 最好是能实现最低权限的原则但这并不容易.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4171 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:13 · PVG 12:13 · LAX 21:13 · JFK 00:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.