前言

    笔者所在单位是一家小型创业公司,目前产品正在成长阶段,日活跃用户只有区区几万人次,并发只有日均 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. Oracle-14:PLSQL

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- PL/SQL PL/SQL(Procedural Language):过程化sql语言! 在原本的sql语句之 ...

  2. Java 读书笔记 (九) 运算符

    短路逻辑运算符 && 当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了. ...

  3. 在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)

    在tomcat下部署两个或多个项目时 web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下: <!-- 应用路径 ...

  4. req_params.go

    , fmt.Sprintf("%s: closing %s", proto, listener.Addr())) }

  5. ConcurrentHashMap简介

    ConcurrentHashMap为了高并发而设计,相比于HashTable和HashMap有更多优势.HashTable是同步的,在多线程环境下,能保证程序执行的正确性,每次同步执行的时候都要锁住整 ...

  6. C++中函数重载和函数覆盖的区别

    C++中经常会用到函数的重载和覆盖,二者也在很多场合都拿出来进行比较,这里我就对二者的区别做点总结: 函数重载: 函数重载指的是函数名相同.函数特征值不同的一些函数,这里函数的特征值指的是函数的参数的 ...

  7. 【Troywar love Maths】——莫比乌斯反演

    2816. Troywar loves Maths ★★☆   输入文件:Troy_1.in   输出文件:Troy_1.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述 ...

  8. 【欧拉函数】BZOJ2705: [SDOI2012]Longge的问题

    Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N).   Solut ...

  9. 【最小生成树】Bzoj1232 [Usaco2008Nov]安慰奶牛cheer

    Description Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1. ...

  10. 【状压dp】Bzoj2064 分裂

    Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的他把这个变成了一个数学模型. 假设中 ...