我在第一次配置我的web服务器。NGINX - 防止目录遍历攻击
- Ubuntu的,NGINX,PHP,上海社会科学院等最新更新的安装
- 创建自己的用户帐户,所以我没有使用root到处
- 检查发现我没有开 不必要的端口
- 创建自己的文件夹到各个领域
- 每个域上PHP5-FPM池自己的袜子运行,以自己的用户名
我的文件夹结构就像THI S:
/无功/网络/网站/ exampledomain1 /公/
/无功/网络/网站/ exampledomain2 /公/
/无功/网络/网站/ exampledomain2 /公/
我对每个公用文件夹和/ var /,/ var/www /制作了“test.txt”文件。然后我做了一个简单的php文件,试图包含来自不同地方的test.txt文件,并且我还试图包含/ etc/passwd。我很高兴地注意到,我可以将所有文件包含在我的公共PHP文件中,甚至是/ etc/passwd文件中。
我创建了“域”用户,并将它们仅限于www数据组。除www/..之外的所有内容都未改动,所以/ var/passwd等是root:root。
在/ var/WWW/755 WWW的数据:WWW的数据
/无功/网络/网站/ 755 WWW的数据:WWW的数据
/无功/网络/网站/ exampledomain1/711 exampledomain1:www数据
/无功/网络/网站/ exampledomain2/711 exampledomain2:www数据
/无功/网络/网站/ exampledomain3/711 exampledomain3:www数据
在/ var/WWW /网站/为例edomain1 /大众711 exampledomain1:www数据
/无功/网络/网站/ exampledomain2 /大众711 exampledomain2:www数据
/无功/网络/网站/ exampledomain3 /大众711 exampledomain3:www数据
目前所有的index.php文件都是701.所有者可以读,写和执行,同一组的用户不能做任何事情,公众可以执行。
我的目标是不能包含其他文件夹中的任何内容。因此,如果我的某个域名被利用并被黑客入侵,破解者可以运行自己的代码,所以它不能包含来自其他域名或来自更深层的任何文件。
感谢您的快速回答!我编辑了php.ini,行“open_basedir”,并写了所有好的目录。然后,我添加了fastcgi_param PHP_VALUE open_basedir =“/ var/www/sites/exampledomain1/public”;到每个php5-fpm池服务器块。我尝试了我的“安全测试”php文件,现在它不能包含任何我不希望它包含的内容。 – Jamma 2014-11-22 22:20:04