前两天,网站的注册发送手机短信验证码的接口受到攻击,一个半小时,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 即可

网站遭受CC攻击的解决办法的更多相关文章

  1. 什么是CC攻击,如何防止网站被CC攻击的方法总汇

    CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...

  2. 网站防止CC攻击的方法

    CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...

  3. Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:

    Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:常见问题:HTTP 错误 500.0 - Internal Server Error无法显示页面,因为发生内 ...

  4. Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法

    检测到目标URL存在http host头攻击漏洞 详细描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST ...

  5. NTP服务放大攻击的解决办法

    什么是NTP服务? 网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保 ...

  6. 单页面网站关于id冲突的解决办法

    最近做了一个单页面的网站,所有的页面加载都是通过局部刷新的方式,并且不用iframe,并且我们引入了动态tab页签: 所有的页签里的内容都只是一个元素,都在同一个html页面上,没有任何iframe分 ...

  7. 网站如何防止sql注入攻击的解决办法

    首先我们来了解下什么是SQL注入,SQL注入简单来讲就是将一些非法参数插入到网站数据库中去,执行一些sql命令,比如查询数据库的账号密码,数据库的版本,数据库服务器的IP等等的一些操作,sql注入是目 ...

  8. WIN7 IIS ASP网站 打不开的解决办法

    WIN7 IIS ASP网站 打不开,通常是访问ACCESS数据库的报错了但在未对IIS和IE作设置的情况,是不能正确的显示错误的,从而也不能解决问题 为解决这个问题,我在网上找了很久,虽然最终解决了 ...

  9. windows 2008R2部署网站后出现 ‘PageHandlerFactory-Integrated’ 的解决办法

    原因:运行4.0的网站,需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0的web项目了. 解决方法:1.在cmd中切换到4.0所在的目录,命令如下:cd C ...

随机推荐

  1. 【struts2】Action的生命周期

    Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例.可以稍微改造一下代码来验证一下. 给HelloWorldAction加上一个public无参的构造 ...

  2. objgraph无法生成分析图的原因

    x = [1, 2, 3]y = [x, dict(key1=x)]z = [y, (x, y)] import objgraphobjgraph.show_refs([y],filename='sa ...

  3. dbms_random.seed

    语法: DBMS_RANDOM.SEED ( val IN BINARY_INTEGER); DBMS_RANDOM.SEED ( val IN VARCHAR2); val: Seed number ...

  4. shell脚本监控Linux系统的登录情况

    一.登录日志记录 vi /etc/profile 在最后面添加一行: echo "`who`" > /var/log/login.log 二.监控日志文件 #!/bin/ba ...

  5. Unix网络编程 之 基本套接字调用(一)

    Unix/Linux支持伯克利风格的套接字编程,它同一时候支持面向连接和面向无连接类型的套接字. 套接字最经常使用的一些系统调用: socket() bind() connect() listen() ...

  6. python os.chdir() 用法

    概述 os.chdir() 方法用于改变当前工作目录到指定的路径. 语法 chdir()方法语法格式如下: os.chdir(path) 参数 path -- 要切换到的新路径. 返回值 如果允许访问 ...

  7. webpack 4.0的一些小坑

    一.需要指定开发模式还是生产模式,需要改动两个地方: 1.package.json 中加入 --mode development "scripts": { "dev&qu ...

  8. 摘抄JPA官方文档原文 防呆

    Spring Data JPA - Reference Documentation Oliver GierkeThomas DarimontChristoph StroblMark PaluchVer ...

  9. BIO NIO AIO 简介

    原文: https://github.com/zhongmingmao/nio_demo 简介 NIO与AIO的简单使用 基本概念 同步与异步 同步和异步是针对应用程序和内核的交互而言的:同步指的是用 ...

  10. SNF微信公众号客户端演示-微信开发客户端能干什么

    关注测试微信号: 关注后菜单页面如下: 一.扫描二维码进行订单查询演示 1.点击菜单“软件产品”->选择“扫描查询” 2.扫描如下二维码进行订单查询演示. 3.扫描结果如下: 二.微信“输入订单 ...