默认 Nginx 使用 Nginx:Nginx,无权访问 www-data:www-data 创建的 unix socket,导致无法处理 php 请求,搜了一圈大多数方法是 fpm 接口改为 127.0.0.1:9000,但我想使用 sock 接口权限该如何设置呢?
目前两种想法
1.Nginx 加入 www-data 组
2.socket 的 listen&抗投诉服务器amp;write 权限由 www-data 改为 Nginx
不知哪种更符合安全?
如果没有不同服务共用 用户 用户组,两种方法没区别
如果有其他服务共用服务,可能会造成一定的安全隐患
如果要做非常细致的权限隔离,docker 欢迎你
不考虑 docker 的话
nginx 和 php 共用一个 www 用户
代码部署用 deploy 用户,log 文件夹给 www 写权限,其他只读
127.0.0.1:9000 就是本机可访问,有什么安全隐患?
道听途说 socket 方式优于 127.0.0.1:9000,所以推荐第一种。
/>SSRF, 可以傳 payload 到 fpm 跑任何想跑的 code
首先要解决怎么连上的问题,其次才能谈传什么
www-data 应该是 debian 系的?
nginx 不是系统自带的包吗?
考虑到 nginx 也得提供静态文件服务,应该把它改为 www-data 身份
上 docker 吧,权限配错了问题也不大的。
chmod 777 ****.socket
请谷歌 SSRF
看错了,是应该先连上去
[[email&~]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
[[email&~]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
[[email&~]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
给楼主参考一下,应该会有所帮助。
/>如果本機在跑的 php/其他服務有 SSRF 的漏洞
(你很難保證永遠不會有 SSRF 漏洞的啊)
就有可能直連 127.0.0.1:9000 跑 payload 的
關鍵字: SSRF fcgi
樓主應該是顧慮這個可能的隱患才會想只用 unix socket 的...?
app 有问题,没有有效过滤上传内容和参数。关 fpm 什么事?