【发布时间】:2015-01-20 20:13:46
【问题描述】:
我是第一次自己配置我的网络服务器。
- Ubuntu、NGINX、PHP、SASS 等已安装最新更新
- 创建了自己的用户帐户,这样我就不必到处使用 root 了
- 检查我没有打开不需要的端口
- 为每个域创建自己的文件夹
- 每个域都使用自己的用户名在 PHP5-fpm 池上的自己的 sock 上运行
我的文件夹结构是这样的:
/var/www/sites/exampledomain1/public/
/var/www/sites/exampledomain2/public/
/var/www/sites/exampledomain2/public/
我为每个公用文件夹和 /var/、/var/www/ 制作了“test.txt”文件。然后我制作了一个简单的 php 文件,它试图包含来自不同地方的 test.txt 文件,并且我还尝试包含 /etc/passwd。我很“高兴”地注意到我可以在我的公共 PHP 文件中包含所有文件,甚至 /etc/passwd 文件。
我创建了“域”用户并将其仅放入 www-data 组。除了 www/.. 之外的所有内容都未触及,因此 /var/passwd 等是 root:root。
/var/www/ 755 www-data:www-data
/var/www/sites/ 755 www-data:www-data
/var/www/sites/exampledomain1/ 711 exampledomain1:www-data
/var/www/sites/exampledomain2/ 711 exampledomain2:www-data
/var/www/sites/exampledomain3/ 711 exampledomain3:www-data
/var/www/sites/exampledomain1/public 711 exampledomain1:www-data
/var/www/sites/exampledomain2/public 711 exampledomain2:www-data
/var/www/sites/exampledomain3/public 711 exampledomain3:www-data
目前所有index.php文件都是701。所有者可以读、写和执行,同一组的用户不能做任何事情,公共可以执行。
我的目标是您不能包含其他文件夹中的任何内容。因此,如果我的某个域具有漏洞利用并且被黑/破解者可以运行自己的代码,那么它就不能包含来自其他域或更深层次的任何文件。
【问题讨论】:
标签: php security nginx permissions