分析攻击方式:
1) 多台机器模拟人工操作,随机输入手机号,就点击发送短信;
2) 多台机器上的部署的相同的脚本,在对网站发起攻击;
针对可能的第一种攻击方式: 在前端加了一个滑动解决的功能(一个jquery插件),必须手动拖动滑动解锁,输入框才是可点的;
针对可能的第二种攻击方式,应对策略:
1)在服务端接口加上验证,限制相同的IP,多长时间之内可以访问几次;限制相同的手机号,多长时间之内可以发送短信几次;具体实现是在redis/memcache中存储两个值;key1=该IP第一次访问的时间,key2=该IP总访问的次数;比如10分钟内可访问3次,超过3次就不让发送短信了。手机号的限制方式也是一样的;
2)配置nginx,限制IP在一定时间内的访问次数,以及同一时刻的并发数;
参考网址:http://boyseegirl.iteye.com/blog/2033717 (nginx限制特定ip的并发连接数)
http://blog.csdn.net/gebitan505/article/details/17610485 (nginx限制某个IP同一时间段的访问次数)
http://blog.csdn.net/dingyingguidyg/article/details/8523421 (nginx利用limit模块设置IP并发防CC攻击)
http://blog.csdn.net/plunger2011/article/details/37812843 (nginx配置limit_conn_zone来限制并发连接数以及下载带宽)
http{
…….
……..
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s; #1秒发起2个请求)
limit_conn_zone $binary_remote_addr zone=perip:10m;
}
server{
limit_req zone=one burst=1 nodelay;
limit_conn perip 2; #连接数限
}
}
3)通过分析nginx的access日志,筛选出访问量最高的IP,封掉;
按照某个时间点统计ip的访问次数,并排序
cat access.log |grep “11/Nov/2015:12:30*” | awk ‘{print $1}’ | sort | uniq -c | sort -rn > iptong.txt
筛选出IP之后新建一个blockIp.conf文件,文件内容为:
deny xx.xx.xx.xx ;
deny xx.xx.xx.xx ;
deny xx.xx.xx.xx ;
在nginx.conf中http{
include blockIp.conf;
}
重启nginx , nginx -s reload 即可
原文链接:https://www.cnblogs.com/mingaixin/p/4962904.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22387