V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
seers
V2EX  ›  NGINX

Nginx& PHP -fpm.sock 文件权限如何设置

  •  
  •   seers · 2018-02-09 00:12:08 +08:00 · 4009 次点击
    这是一个创建于 2258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    默认 Nginx 使用 Nginx:Nginx,无权访问 www-data:www-data 创建的 unix socket,导致无法处理 php 请求,搜了一圈大多数方法是 fpm 接口改为 127.0.0.1:9000,但我想使用 sock 接口权限该如何设置呢?

    目前两种想法 1.Nginx 加入 www-data 组 2.socket 的 listen&write 权限由 www-data 改为 Nginx

    不知哪种更符合安全?

    16 条回复    2022-01-25 13:04:03 +08:00
    gstqc
        1
    gstqc  
       2018-02-09 00:33:22 +08:00
    如果没有不同服务共用 用户 用户组,两种方法没区别
    如果有其他服务共用服务,可能会造成一定的安全隐患

    如果要做非常细致的权限隔离,docker 欢迎你
    cxbig
        2
    cxbig  
       2018-02-09 02:38:21 +08:00 via iPhone
    不考虑 docker 的话
    nginx 和 php 共用一个 www 用户
    代码部署用 deploy 用户,log 文件夹给 www 写权限,其他只读
    cxbig
        3
    cxbig  
       2018-02-09 02:41:53 +08:00 via iPhone
    127.0.0.1:9000 就是本机可访问,有什么安全隐患?
    stabc
        4
    stabc  
       2018-02-09 03:23:44 +08:00
    道听途说 socket 方式优于 127.0.0.1:9000,所以推荐第一种。
    cs8425
        5
    cs8425  
       2018-02-09 03:30:34 +08:00
    @cxbig #3
    SSRF, 可以傳 payload 到 fpm 跑任何想跑的 code
    julyclyde
        6
    julyclyde  
       2018-02-09 08:11:49 +08:00
    @cs8425 首先要解决怎么连上的问题,其次才能谈传什么
    julyclyde
        7
    julyclyde  
       2018-02-09 08:12:47 +08:00
    www-data 应该是 debian 系的?
    nginx 不是系统自带的包吗?

    考虑到 nginx 也得提供静态文件服务,应该把它改为 www-data 身份
    singer
        8
    singer  
       2018-02-09 08:44:32 +08:00 via iPhone
    上 docker 吧,权限配错了问题也不大的。
    eoo
        9
    eoo  
       2018-02-09 09:11:27 +08:00 via Android
    chmod 777 ****.socket
    DuckJK
        10
    DuckJK  
       2018-02-09 09:17:07 +08:00
    @julyclyde 请谷歌 SSRF
    DuckJK
        11
    DuckJK  
       2018-02-09 09:18:25 +08:00
    @julyclyde 看错了,是应该先连上去
    Xrong
        12
    Xrong  
       2018-02-09 09:48:12 +08:00
    [root@proxy ~]# ps -ef | grep nginx
    root 10349 10314 0 09:41 pts/0 00:00:00 grep --color=auto nginx
    root 10708 1 0 Feb08 ? 00:00:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf
    nginx 10709 10708 0 Feb08 ? 00:01:54 nginx: worker process
    nginx 10710 10708 0 Feb08 ? 00:01:33 nginx: worker process

    [root@proxy ~]# ps -ef | grep php-fpm
    root 1197 1 0 Feb08 ? 00:00:04 php-fpm: master process (/etc/php-fpm.conf)
    php-fpm 2890 1197 0 07:50 ? 00:00:49 php-fpm: pool www
    php-fpm 3288 1197 0 07:59 ? 00:00:47 php-fpm: pool www
    php-fpm 4409 1197 0 08:19 ? 00:00:40 php-fpm: pool www

    [root@proxy ~]# ls -tal /run/php-fpm/www.sock
    srw-rw---- 1 nginx nginx 0 Feb 8 11:29 /run/php-fpm/www.sock

    然后 /etc/php-fpm.d/www.conf 里头的几个重要配置如下
    listen = /run/php-fpm/www.sock
    user = php-fpm
    group = php-fpm
    listen.owner = nginx
    listen.group = nginx

    给楼主参考一下,应该会有所帮助。
    cs8425
        13
    cs8425  
       2018-02-09 16:12:41 +08:00
    @julyclyde #6
    如果本機在跑的 php/其他服務有 SSRF 的漏洞
    (你很難保證永遠不會有 SSRF 漏洞的啊)
    就有可能直連 127.0.0.1:9000 跑 payload 的
    關鍵字: SSRF fcgi
    樓主應該是顧慮這個可能的隱患才會想只用 unix socket 的...?
    cxbig
        14
    cxbig  
       2018-02-09 17:08:37 +08:00 via iPhone
    @cs8425 app 有问题,没有有效过滤上传内容和参数。关 fpm 什么事?
    DogeOW
        15
    DogeOW  
       2022-01-25 11:56:23 +08:00
    @julyclyde 我用了快十年了,没听说过 nginx 是系统自带的。
    julyclyde
        16
    julyclyde  
       2022-01-25 13:04:03 +08:00
    @DogeOW 我指的是 linux 发行版里包含的软件包
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3625 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 04:47 · PVG 12:47 · LAX 21:47 · JFK 00:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.