前言

    笔者所在单位是一家小型创业公司,目前产品正在成长阶段,日活跃用户只有区区几万人次,并发只有日均 85/QPS,自建机房,带宽 100MB。在这样的背景下,完全没想过一个小产品会招来黑客的光顾,而且一来就是好几天。

起因

    事情的起因来源于某个惬意的下午,从市场接收到客户反馈,部分地区客户无法打开产品页面,由于是周末且之前也发生过机房网络故障,运维并未引起重视,以为是网络问题,放置不管。但是到傍晚19点左右,情况突然变得很严重,90%的客户都在反馈无法打开产品页面;
这一下子就炸锅了。

    首先,马上安排运维人员排查机房网络问题,然后技术人员查看服务日志、流量监控是否正常。马上就发现了问题,服务器CPU运行平稳,流量只有 3次/s,很明显,流量未进入服务器,被拦截在防火墙外面了;过了5分钟,收到运维人员反馈:机房反馈,突然收到大量数据包请求,
流量高达30GB,目前已启动限流措施!
事情非常明了,服务遭到了 DDOS 攻击!
怎么办,怎么办,怎么办!

防御

    大家都在干等着,什么也做不了,等机房处理,这是运维人员的处理意见。等机房处理是非常愚蠢的想法,后面会讲到。

    攻击持续了大约 3 个小时,晚上 22:00 左右,攻击停止,服务恢复,这期间,市场只能一直安抚客户,而大家也一致认为这是一场随机的攻击,居然也都洗洗睡了,事实证明大错特错。
第二天白天流量恢复正常,大家还认为这就是个恶作剧,然后傍晚 17 点左右,又有部分客户反馈无法打开产品页面,这次持续了 10 分钟后停止,机房也未收到任何警报(小机房坑爹啊),
晚上 19:00 又准时开始攻击,这次持续了 10 个小时,整个产品线几乎瘫痪,只有微信端很小的流量进来。

    这次情况就很难受了,大家都不好过,我的建议是马上上高防IP,联系机房,说是提供 3000RMB/月 的流量防御,最高 30GB,我说好,先上着,寥胜于无吧。第二天,马上安排财务付款购买,上了机房自带的高防IP后,果然奏效了,产品浏览正常,好事多磨,这是谁说的,
下午的攻击又准时的出现,这次高防IP发挥了左右,扛住了 10 分钟,然后也瘫痪了!!!

换IP!

    马上安排运维人员更换 IP 地址,然后扛住了 30 分钟,新IP也宣告沦陷,我就奇怪了,黑客也太厉害了,这么快就找到新 IP 了?,机房告知:更换 IP 只支持更换 C 段,我....
流量不够,IP暴露,事情的发展对我方很不利。

    这个时候我在想,要是认了个爸爸该多好!爸爸,哎爸爸,马爸爸啊,找阿里云啊,此时已是周四了,距离收到攻击报告已过去了3天了。

    马上到阿里云查看高防IP服务,果然有,果断买;联系客服,下单,拉了个钉钉群,技术专家对接;
准备接入的时候发现,要接入高防IP服务,域名必须在阿里备案,没问题,我们的域名都在在阿里买的,但是备案的时候需要服务器,运维安排买!买了以后发现,还是无法备案,提示购买时长必须是 3 个月以上,他们买了 1 个月,哈哈啊哈哈,我的天啊。财务外出,无法续费。
联系阿里高防IP服务技术专家,说可以内部提供加速服务(不收费),我说好,你们沟通一下,我马上去提个工单,把工单号发给技术专家内部安排沟通,备案问题得以顺利解决。
接下来就是接入高防IP服务。

    不得不说,阿里的敬业精神,对接群里面分别拉了技术、商务、运维、客服,各种问题全方位快速响应,在周五下班前,完美接入了高防IP服务,基础 30GB,弹性 60GB。

波澜又起

    下班后,我坐在电脑前想,IP暴露的问题还是没有解决,这个是非常大的隐患啊,还没来得及细想,攻击就来了 还是 30GB流量,不过,高防IP服务全部都清洗过去了,只造成了些许困扰,大家认为,肯定是没有问题了,都下班走人。到了晚上,部分客户反馈,安卓客户端无法浏览部分网页,
报证书链不完整的问题,钉钉电话联系阿里技术专家,彼时技术专家已下班,从电话里依稀听到孩子嬉戏的声音。

    经过详细沟通后,重新上传 https 证书,合并证书链后解决。
第二天周六,一如往常的平静,到下午 14:00 ,突然收到阿里高防IP服务警报,服务黑洞中....登录云盾查看流量,收到DDOS流量包超过 60GB,最高达到 100 GB,高防IP服务自动停止防御,发送警报短信,联系技术专家后,解决方案是提示防御弹性到 300GB,手动
解除黑洞,故障解除,接下来的周日、周一,又收到几波攻击,最高达到 150GB,但是都有惊无险的安全度过。

转机

    事情的转机出现在某个夜深人静的晚上,从遥远的华中地区来的一个电话,某个市场区域代理反馈,接到一个自称黑客要求合作的电话,已将录音发送给技术团队,我们一听,就是勒索啊,说这几天都在由于他们在“测试”,帮我们产品找漏洞,如果付钱给他们,
他们可以保证我们的产品在“全球”范围内不会再发生这种事情,我们商量了一下,觉得和他进一步的接触。

    经过两天的沟通,还是无法得到对方的有效信息,就此作罢,黑客约定第二天“展示实力”,第二天,预约的时间,攻击没有到来,1个小时后,收到阿里高防IP服务短信反馈,监控到一波 30GB的流量攻击,已平稳度过,截至发文时,服务运行平稳,流量稳定,无攻击,阿门!

总结

  • 从此事件中可以看出,我方对安全问题不重视,这也是初创企业普遍存在的问题,运维人员意识出现幸存者偏差,有侥幸心里。
  • 在攻击初始出现的时候,没有预案,无法应对,被动等待机房处理,而机房能力和服务水平较弱,无法应对这种小规模的攻击。
    唯一能做的就是将我方业务下线,俗称“拔线”,完全不理我方感受,简单粗暴,所以在初创时期,千万不要作死自建机房,除非有成熟的机房运作经验
  • 我方只有单机房,无法更换B段以上IP,IP地址直接暴露,更是自己找死。
  • 经此事件后,我方决定部分业务上云,特别要建立堡垒机方案,全面排查系统、业务、应用级别漏洞。
  • 建立多机房备灾和故障转移方案,建立应对突发事件的预案,建立预警方案。
  • 在事故处理期间还检测出防火墙老化产生的问题,更换了防火墙、IP地址,加强运维人员管理意识,提升业务水平。

结语

    系统的升级非一朝一夕,意识最重要,不怕事故,就怕没有处理方案,出了事情千万不能瞒报、误报,主管领导要全方位的了解各种情况,深挖问题,结合实际,做出最快、最优的处理决定。
从业者都应该保持对这份职业的敬重。

记一次DDOS攻击防御实录的更多相关文章

  1. 【Network】DDoS攻击防御

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大,最难防御的攻击之一. 按照发起的方式 ...

  2. 抗D十招:十个方法完美解决DDoS攻击防御难题

    可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...

  3. 记一次DDos攻击--2016/12/8

    先上图 图一 图二 午休之后~ 睡意朦胧,报警来了.看到121121Mbps的流量攻击,精神一震. 不到两秒,又来了一个短信,开始心塞.网站入口IP被封了.打开网站,全站瘫痪.紧接着运营就来了,让运营 ...

  4. 浅谈 DDoS 攻击与防御

    浅谈 DDoS 攻击与防御 原创: iMike 运维之美  什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...

  5. DDos攻击的常见方法及防御方法

    什么是DDoS? DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡 ...

  6. 从分析攻击方式来谈如何防御DDoS攻击

    DDoS攻击的定义: DDoS攻击全称——分布式拒绝服务攻击,是网络攻击中非常常见的攻击方式.在进行攻击的时候,这种方式可以对不同地点的大量计算机进行攻击,进行攻击的时候主要是对攻击的目标发送超过其处 ...

  7. DDOS、CC、sql注入,跨站攻击防御方法

    web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...

  8. DDOS攻击与防御简单阐述,列出DDOS的攻击方法和防御方法

    参考1:https://www.hi-linux.com/posts/50873.html#%E7%BD%91%E7%BB%9C%E5%B1%82-ddos-%E6%94%BB%E5%87%BB 什么 ...

  9. 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有相关 ...

随机推荐

  1. 0517JS综合练习、挂事件练习

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  2. 第四章——训练模型(Training Models)

    前几章在不知道原理的情况下,已经学会使用了多个机器学习模型机器算法.Scikit-Learn很方便,以至于隐藏了太多的实现细节. 知其然知其所以然是必要的,这有利于快速选择合适的模型.正确的训练算法. ...

  3. SpringCloud微框架系列整体模块梳理

    以下为Spring Cloud的核心功能: 分布式/版本化配置服务注册和发现路由服务和服务之间的调用负载均衡断路器分布式消息传递 通过这张图,我们来了解一下各组件配置使用运行流程: 1.请求统一通过A ...

  4. RCTF 2018线上赛 writeup

    苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ...

  5. WinForm时间选择控件(DateTimePicker)如何选择(显示)时分秒

    C# Windows窗体应用中,用到时间选择控件DateTimePicker,发现不能选择时分秒,难道要自己写一个控件?! 答案是否定的,通过属性修改是可以选择时间的,DateTimePicker完全 ...

  6. 值得注意的CSS属性

    文本TEXT letter-spacing 字符间距 word-spacing 字间距 line-height 行高 text-decoration 修饰(下划线) text-indent 首行缩进 ...

  7. 你不知道的JavaScript--Item16 for 循环和for...in 循环的那点事儿

    大家都知道在JavaScript中提供了两种方式迭代对象: for 循环: for..in循环: 1.for循环 不足: 在于每次循环的时候数组的长度都要去获取: 终止条件要明确: 在for循环中,你 ...

  8. Android 沉浸式状态栏攻略 让你的状态栏变色吧

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/48649563: 本文出自:[张鸿洋的博客] 一.概述 近期注意到QQ新版使用了 ...

  9. Spring Security Oauth2 permitAll()方法小记

    黄鼠狼在养鸡场山崖边立了块碑,写道:"不勇敢地飞下去,你怎么知道自己原来是一只搏击长空的鹰?!" 从此以后 黄鼠狼每天都能在崖底吃到那些摔死的鸡! 前言 上周五有网友问道,在使用s ...

  10. Class path & Path

    Class path: 配置类文件 (配置完之后,在任何盘符下都可以访问该配置路径下的文件); Path: 配置可执行文件; Class path 配置时路径后面加分号与不加分号的区别 (当前路径与配 ...