zoukankan      html  css  js  c++  java
  • 网站遭受CC攻击的解决办法

         前两天,网站的注册发送手机短信验证码的接口受到攻击,一个半小时,1万条短信都发出去了。可见,我们的安全防护做的多么不好。

          分析攻击方式:

          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{

                    location /{   

                        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 即可

            

  • 相关阅读:
    Mysql创建nextval函数
    宝塔配置tomcat的配置
    小程序获取授权信息
    pycharm 2017新建文件添加编码方式等
    Linux下利用expect,不用交互模式,直接登陆远程主机
    linux文件权限解析(摘)
    linux环境下根据文件的某一列进行去重
    oracle查询用户权限及角色(摘)
    插入排序-python实现
    css清除浮动方法
  • 原文地址:https://www.cnblogs.com/mingaixin/p/4962904.html
Copyright © 2011-2022 走看看