记一次被自己DDOS攻击
服务器报警
7月24号下午5点半开始,突然服务器报警,检查监控,发现CPU异常100%。
该服务器正常情况下CPU使用率在40%已经算高了,另外负载经过调试都保持在CPU承受范围内。
系统负载同时飙升
数据包的量直上云霄
TCP连接数上2W,正常情况下最多6K
悲剧的是刚好今晚和妹子约会,为什么每次出去都要遇到这种事,在家的时候几乎没出现过问题。所以最开始没有处理,一般来说ddos不会持续太久,结果7点服务器开始响应变慢反馈,必须处理了,辛亏有随身远程应急预案。
此服务器代码半年没动过,之前都正常的,只是中午的时候更新了下漏洞补丁,原则上是不会导致这个问题才对。通过linux命令分析了一下相关的进程,应该不是补丁导致的,否则打完补丁就应该出问题,而不是等到5点。
一开始为了应付CPU过高的问题,怀疑是我之前设置的php-fpm子线程过大(500),服务器上下文频繁切换,导致本身就已经高负载?索性就把值设为小到280试试看什么情况,但是并没有好转,php-fpm慢日志还建议调大,又调回之前的设置。
再来看数据包,已经要上天了,初步评估是ddos攻击。
初步分析
经过了1个多小时的日志分析,定位到心跳写数据库异常,导致数据库连接爆满卡死,影响到了别的业务。所以禁用了该接口,服务器相对可用。
晚上11点多回到家,依旧没有恢复的意思,并且还出现了每隔5分钟一次攻击(00:16之后)。决定用cache的inc记录看一下接口调用情况。
基本上是每秒1K+的访问,偶尔会有高并发,短时间调用了76W+次,其他接口几乎为0,现在是接近凌晨2点钟,理论上设备这个点钟已经关的差不多了,而且默认设备是5分钟调用一次心跳接口,不可能在这个时候大面积并发。
DDOS无误,但是这个量好像有点小,并且一般也不会通过接口调用形式攻击吧,阿里云都没有触发ddos流量清洗。
进一步分析
接下来就是看哪个IP发送的了。用netstate查了下感觉好像又比较正常。
根据该方法的日志,看到这些IP在几秒内调用接口300次左右,有些不可思议,但是这些IP确实是对应的设备IP,难道是被自己的设备DDOS了?!
再来5分钟一次心跳,不就是监控中后来的5分钟一次异常情况?每五分钟会出现一次峰值。
但是他们是如何做到秒级的百次调用呢?除非APK有问题,但是之前又没见出现?
再次深入分析,尝试禁封某些设备IP无效,反而更加猖狂,应该是设备APK集体出现BUG了,导致实例化了N个线程同时进行接口调用……怎么办?设备端的APK是友方开发,并且长时间没有更新维护了,又没办法让设备重启,最后决定分析设备日志。
最终分析
第二天联系运维人员取了一台并发量很高的设备日志。刚好这台设备记录了事件的全过程,分析结果如下:
1、7月24号5点半之前,设备运转良好
2、之后出现心跳时token失效的情况,然后开始以指数级新增心跳线程。
可以看到重新获取token之后,就出现了2个心跳包发送请求
3、反编译APK发现重新获取token部分的代码是有bug的
这里应该是if和else,否则在没有重新获取到token的情况下,又立马执行一次runnable,导致又再次报错一次。
4、这个异常情况只会在token过期的时候出现,正常情况理论不会过期,所以这个bug一直没有发现。
分析出问题之后,服务端临时去掉了token校验,联系友方修复bug,发布更新,问题解决。
总结
昨晚搞到4点钟,今天继续分析到4点,历时10个小时心中的石头终于落下。
1、设备端应至少有重启指令,以防万一。
2、一个小小的逻辑代码,可以使服务器直接崩溃。
3、日志监控真的很重要。
4、对于一些特殊情况,普通的测试很难遇到,除非是有经验的测试人员,否则只能等线上才能发现了。
记一次被自己DDOS攻击的更多相关文章
- 记一次DDOS攻击防御实录
前言 笔者所在单位是一家小型创业公司,目前产品正在成长阶段,日活跃用户只有区区几万人次,并发只有日均 85/QPS,自建机房,带宽 100MB.在这样的背景下,完全没想过一个小产品会招来黑客的 ...
- 记一次阿里云服务器被用作DDOS攻击肉鸡
事件描述:阿里云报警 ——检测该异常事件意味着您服务器上开启了"Chargen/DNS/NTP/SNMP/SSDP"这些UDP端口服务,黑客通过向该ECS发送伪造源IP和源端口的恶 ...
- 记一次ntp反射放大ddos攻击
2018/3/26 ,共计310G左右的DDoS攻击 临时解决办法:将web服务转移到同生产一个内网段的备份服务器a上,a提供web端口80,数据库通过内网连接还是沿用生产数据库. 后续解决办法:通过 ...
- Linux下防御DDOS攻击的操作梳理
DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求.耗尽目标主机资源 ...
- NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用
NET MVC全局异常处理(一) 目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...
- 通俗版解释网关,IP地址,ARP欺骗,DDOS攻击
计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...
- 【转】《从入门到精通云服务器》第四讲—DDOS攻击
上周咱们深入分析了云服务器的配置问题,好了,现在手上有了云服务器之后,我们又不得不提它:DDOS攻击.这是所有运维者的心头痛,也是任何公司听闻后都将心惊胆战的强大对手.下面我们将用浅显易懂的方式讲述什 ...
- 防DDOS攻击SHELL脚本
最近一段时间服务器频繁遭到DDOS攻击,目前只能通过封IP来源来暂时解决.IP不源变化多端,光靠手工来添加简直是恶梦,想了个方法,用SHELL来做. 比较简单,但很实用:) 以下内容根据作者原文进行适 ...
- 漫画告诉你什么是DDoS攻击?
本文作者:魏杰 文章转载自:绿盟科技博客,原文标题:看ADS如何治愈DDoS伤痛 根据<2015 H1绿盟科技DDoS威胁报告>指出,如今大流量网络攻击正逐渐呈现增长趋势,前不久锤子科技的 ...
随机推荐
- 映射器Mapping
1) org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(核心) 将程序员定义的Action所对应的<bean& ...
- ZUK Z2 AospExtended-v6.7 Android 9.0可用的谷歌相机Mod.md
目录 参考资料 系统版本: AospExtended-v6.7-z2_plus-20190821-1940-OFFICIAL.zip cstark27 ×PXv4.1.1_GoogleCamera_7 ...
- 一百零六:CMS系统之修改邮箱功能完成
这里采用把验证码放到memcached中,所以封装一个memcached的操作 import memcache cache = memcache.Client(['127.0.0.1:11211'], ...
- mysql 高性能日记之索引(持续更新)
本文仅限于自己读写的笔记,需要具有一定 mysql(inodb,myisam 引擎)基础的高端玩家,不感兴趣的玩家们就不用在意了 Inodb 引擎 1,每个新建索引,都需要考虑清楚看是否是必须的,很多 ...
- spring 配置参数从配置文件中加载到PropertiesFactoryBean 和配置参数从数据库加载到PropertiesFactoryBean 的实现,及项目中的相关应用
1.加载.properties文件中的配置参数加载到PropertiesFactoryBean容器中 <bean id="configProperties" class=&q ...
- AP注册
1.ac发现ap 两种模式:二层发现.三层发现 按ap与ac所处ip网段不同,可以把注册过程分为二层模式和三层模式: 两种模式均通过发送discovery报文进行,二层模式discovery报文仅在同 ...
- python3 速查参考- python基础 8 -> 面向对象基础:类的创建与基础使用,类属性,property、类方法、静态方法、常用知识点概念(封装、继承等等见下一章)
基础概念 1.速查笔记: #-- 最普通的类 class C1(C2, C3): spam = 42 # 数据属性 def __init__(self, name): # 函数属性:构造函数 self ...
- CISC和RISC的区别
转载于http://blog.sina.com.cn/s/blog_9d5430ce0100x5pb.html RISC(Reduced Instruction Set Computer)和CISC( ...
- xss 学习(一)
存储型 .反射型.DOM 型这是最常见的三种分类: 存储型存储型XSS也叫持久型XSS,存储的意思就是Payload是有经过存储的,当一个页面存在存储型XSS的时候,XSS注入成功后,那么每次访问该页 ...
- GitHub项目精选(持续更新)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190815110442972.jpg?x-oss-process=image/watermark,type_Zm ...