下面是小编整理的Nginx多站点防止跨目录浏览WEB安全,本文共2篇,希望能帮助到大家!

篇1:Nginx多站点防止跨目录浏览WEB安全
Nginx跨站攻击很让人头疼,在多个网站运行的主机上如果攻破其中一个上传了类似webshell之类的木马程序后可以轻松浏览到相邻别的网站程序目录,由于nginx是后端FCGI程序处理php,统一设置open_basedir后会导致访问出现问题,只能通过每站分别处理的方式来设置,当然还有通过修改PHP程序等方式实现,贴上一个我目前正在使用的方法。
这种方式最好把网站集中到一个目录下,另外网站目录名字最好规范统一方便辨认。否则启动和维护起来非常麻烦容易混淆。
第一步修改php-fpm配置文件,为每个站点单独建立一个配置文件,
cd /usr/loca/php/etc/
cp php-fpm.conf php-fpm-www.zhaoyi.info.conf
修改其中
Pid file
Error log file
以及
第二步修改php-fpm启动脚本
cd /usr/local/php/sbin
# vim /usr/local/sbin/php-fpm
vhost=$2 ###
php_fpm_BIN=/usr/local/bin/php-cgi
php_fpm_CONF=/usr/local/etc/php-fpm-$vhost.conf ##
php_fpm_PID=/usr/local/logs/php-fpm-$vhost.pid ###
#php_opts=”–fpm-config $php_fpm_CONF”
php_opts=“-d open_basedir=/www/$vhost/ --fpm-config $php_fpm_CONF” #此处为网站目录
启动方式为php-fpm start www.zhaoyi.info 多个虚拟主机以此类推
第三步修改网站conf配置文件中
fastcgi_pass unix:/tmp/php-cgi-www.zhaoyi.info.sock; 要与php-fpm配置中的对应,tcp方式的启单独端口
OK,测试一下
/usr/local/php/sbin/php-fpm stop
/usr/local/php/sbin/php-fpm start www.zhaoyi.info
ps -ef | grep php中可以看到open_basedir=/www/www.zhaoyi.info就成功了
reload一下nginx的配置文件基本就可以实现各个主机隔离了,
我用phpspy测试已经访问不到别的目录了
nginx配置文件最好也采用每个网站单独一个的方式统一放在vhosts下
为了方便启动php-fpm可以写个脚本一起启动
#!/bin/bash
auto=$1
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.zhaoyi.info &&
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.xx.com &&
/bin/bash /usr/local/webserver/php/sbin/php-fpm $auto www.xxxx.com
保存为start.sh
开启sh start.sh start
关闭sh start.sh stop
在放入/etc/rc.local中开机启动
篇2:Nginx下多网站单独phpfpm进程目录权限防跨站WEB安全
Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问,
先了解一下网站正常运行所用到的用户、目录权限:
Nginx进程运行用户:接收用户请求,处理静态文件,如果是PHP则转给PHP-CGI处理,网站目录拥有读权限。
PHP-cgi进程用户:处理PHP文件,网站目录拥有读权限,个别目录需要写入权限。
让每个网站使用单独的PHP-CGI进程,创建PHP-FPM配置文件,修改以下:
启动PHP-CGI进程:
/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/www.myhack58.com.conf
设置网站目录权限,设Nginx运行用户为www:
chown -R www.myhack58.com:www /home/wwwroot/www.myhack58.com
chmod -R 550 /home/wwwroot/www.myhack58.com
chmod 701 /home/wwwroot/
再修改Nginx网站配置文件,解析PHP所使用的PHP-CGI进程:
location ~ .*.(php|php5)?$
{
fastcgi_pass unix:/tmp/www.myhack58.com.sock;
fastcgi_index index.php;
include fcgi.conf;
}
★Linux下PhpMyAdmin程序目录的安全管理WEB安全
文档为doc格式