LNMP环境如何限制带宽、并发与防跨站

  • A+
所属分类:教程分享

安全是个老生常谈的话题,可是又有谁能做到真正的安全,估计没有谁保证自己的程序一点问题都没有,就连搞安全软件的也是不是的要更新一些BUG,时不时的找人测试。而对于我们这些虾米来说,要安全那是不可能的,没钱有没有技术,想到刚开始玩vps的时候,纯粹的安装了环境连密码都是所谓的弱密码,没过几天就被人黑掉了,嘿嘿!今天分享一篇文章“LNMP环境如何限制带宽、并发与防跨站”

限制带宽和并发

vim /usr/local/nginx/conf/nginx.conf

DDOS攻击说实话只有硬防以及高带宽来清洗,而限制带宽和并发仅仅为了防DDoS之类的,通过限制可以软防,防止服务器资源耗尽,虽然在被攻击时用户可能无法访问网站,但是服务器不容易死,攻击结束后就可以正常访问。防DDoS、洪水攻击等,装个防火墙效果更好。

下面配置不仅会限制单一IP来源的连接数,同时也会限制单一虚拟服务器的总连接数:

http {
   limit_conn_zone $binary_remote_addr zone=perip:10m;
   limit_conn_zone $server_name zone=perserver:10m;
server {
    ...
   limit_conn perserver 200;#虚拟空间总并发
   limit_conn addr 10;#单IP连接数
   limit_rate 300k;#单连接带宽
}
}

倘若你用下载器下载服务器上一个文件,家里宽带不受带宽限制,下载速度就是 10*300KB/S。实际下载中,速度会上下浮动一点。

重启Nginx : service nginx restart

防跨站

这是一个很重要的问题,如果VPS主机上一个站点被黑,如果未处理好防跨站的问题,那么主机上其他站点就会很危险。首先运行PHP不能给需要的权限即可,建一个www用户组。比如,一般都PHP不需要/bin/bash权限。

限制PHP访问目录,修改php.ini :

open_basedir=/home/wwwroot/:/tmp/

将php限制在所有站点的父目录,由于会用到缓存等,也要给/tmp/的访问权限,这样至少阻止了php访问服务器上web目录以外的目录。

然后修改fastcgi.conf,加入如下配置信息:

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";

也可以加在server{}里,本人觉得这样更方便,一般 server{} 都会包含 fastcgi.conf 。某些PHP版本中此方法失效,原因未知,经测试 PHP5.3~5.6 都没问题。

重启nginx+php。

service nginx restart
service php-fpm restart

到此就整理完毕了,喜欢折腾的伙伴可以去试试吧!反正现在的vps主机也是白菜价!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: