网站遭受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 即可
网站遭受CC攻击的解决办法的更多相关文章
- 什么是CC攻击,如何防止网站被CC攻击的方法总汇
CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...
- 网站防止CC攻击的方法
CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...
- Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:
Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:常见问题:HTTP 错误 500.0 - Internal Server Error无法显示页面,因为发生内 ...
- Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法
检测到目标URL存在http host头攻击漏洞 详细描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST ...
- NTP服务放大攻击的解决办法
什么是NTP服务? 网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保 ...
- 单页面网站关于id冲突的解决办法
最近做了一个单页面的网站,所有的页面加载都是通过局部刷新的方式,并且不用iframe,并且我们引入了动态tab页签: 所有的页签里的内容都只是一个元素,都在同一个html页面上,没有任何iframe分 ...
- 网站如何防止sql注入攻击的解决办法
首先我们来了解下什么是SQL注入,SQL注入简单来讲就是将一些非法参数插入到网站数据库中去,执行一些sql命令,比如查询数据库的账号密码,数据库的版本,数据库服务器的IP等等的一些操作,sql注入是目 ...
- WIN7 IIS ASP网站 打不开的解决办法
WIN7 IIS ASP网站 打不开,通常是访问ACCESS数据库的报错了但在未对IIS和IE作设置的情况,是不能正确的显示错误的,从而也不能解决问题 为解决这个问题,我在网上找了很久,虽然最终解决了 ...
- windows 2008R2部署网站后出现 ‘PageHandlerFactory-Integrated’ 的解决办法
原因:运行4.0的网站,需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0的web项目了. 解决方法:1.在cmd中切换到4.0所在的目录,命令如下:cd C ...
随机推荐
- MS SQL Server查询优化方法 查询速度慢的原因很多,常见如下几种
1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大 ...
- Mac OS X 下使用清理软件,这是我他妈干过最傻的事情,之一
Mac OS X 系统设计良好,数据都是有序地存储在不同的文件夹下,配置和安装软件几乎都是极其简单的事情,不过几个月前刚入手mac,我还是好奇地使用了一个mac 下的清理软件,也不记得叫什么名字了,自 ...
- Mac OS X 下多个JDK版本的切换小技巧
如果在系统中安装了多个Java JDK 版本,可能会根据项目或编译环境的不同来回切换,下面有两种非常方便的方法供大家选择. 我的机器上有 Java 7 和 Java 8,大家根据自己的 JDK 版本自 ...
- go包管理工具glide
一.命令 安装 $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 初始化项目并在当前项目下 ...
- Macos mysql 8.0.11 添加配置文件
mac 安装mysql 后,没有配置文件,如果需要添加配置文件,需要在/etc 目录下面添加 my.cnf 文件. 添加方法 打开文件命令:sudo vi /etc/my.cnf 文件添加内容: [ ...
- jmeter压测前清理内存
jmeter 压测时设置了内存为sed -i 's/HEAP="-Xms512m -Xmx512m"/HEAP="-Xms36096m -Xmx360096m" ...
- unity, Collider2D.attachedRigidbody
boss根节点上挂RigidBody2D(且boss根节点以下任何子节点均不挂RigidBody2D),boss腿部骨骼节点挂collider2D,标签为"bossLeg",bos ...
- ubuntu 安装 2.10.x版本的scala
Ubuntu 14.04.1 LTS上默认的scala版本是2.9的,而最新版本的spark-1.3需要最低版本的scala版本为2.10.x,先使用apt-get remove scala将机器上的 ...
- Android Studio 1.1.0 向导页(首页) 解析,以及版本控制 (SVN 和 GIT 的检出)
使用Android Studio首先要理清楚, Android Studio 的 project 相当于Eclipse的 Workspace Android Studio 的 module 相当于E ...
- 关于第三方cookie的作用域以及针对用户行为的使用
cookie,很多网站都会用的一个机制,可以保存用户的相关信息,token等等,很多人熟知的应该是第一方cookie,可以针对二级域名进行信息的保存,如果遇到跨域的情况,那么第一方cookie是没有用 ...