
作者:陌溪
陌溪的学习笔记:http://note.moguit.cn
大家好,我是陌溪
就在最近,蘑菇博客官网又又又挂了,开始以为只是普通的宕机,直接重启完事~
没想到通过 SSH 命令想进入到服务器的时候,一直提示超时,发现我竟然进不去自己的服务器了??
遇到这种情况后,我直接在腾讯云服务器后台,点击重启,然后才勉强的进去了

但是,在重启后不久,发现网站恢复了,以为蘑菇万事大吉了。然后过了一会后,蘑菇官网又打不开了!!!后台看了看日志,我嘞个去,发现 CPU 和 磁盘IO 一直在 100%!

蘑菇后台监控
然后,赶快联系到搞服务器的小伙伴:泪梦红尘,一起来排查问题。
以下,是我和红尘大佬一起交流的分析思路
-------------------------------------------------------------------------------
通过上图的分析,显示症状为 CPU 和 IO 同一时间占用 100%, 单看这张图的话 CC 攻击无疑了。
CC攻击:是DDoS攻击的一种常见类型,攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装

磁盘IO爆满
再看一张 nginx 日志
随后分析 发现只有这一个请求连接 而且只有一个ip请求 ?
难道是 while(true){sendGet(https://www.moguit.cn/)} 蘑菇被一个人恶作剧搞挂了 ?

从海量的 nginx 日志中,发现了一些端倪

发现搞事的人
然后百度了一下这个 ip 地址,发现是国外的 ip,那大概率就是别人用来 CC 的肉鸡了

搜了下ip
打开云服务器后台,找到防火墙,直接禁掉 IP 关小黑屋,设置一下非法请求策略就基本隔离了这种恶作剧

关小黑屋
但是,就在我给陌溪出谋划策两天后,我的服务器让人一天打进黑洞两次 !

jingya002
从日志来看,直接打了我服务器 22G 流量

流量打了22G
然后,我的服务器就被腾讯云封了

服务器被封了
虽然日志显示峰值只有 10G 但是那是3分钟的量 3 分钟后就进了黑洞没有在计算了,而这次攻击持续了一个多小时,可以想象流量有多少!
这次的攻击方式是以 UDP 发包的形式发送攻击的,下面我就给大家介绍一下常见的几种攻击方式和基本防护策略!
网络攻击防护,在这里先说明一下,除了CC,其他以UDP,TCP,等等协议做为攻击方式的,软件层面,拦截意义不大尤其是UDP,软件层面也是经过了网卡的,网卡也是接收了的,只是没有处理,这个时候关不关端口有区别吗,有区别的,区别大吗,不是很大,以下面例子为例!
一大帮乞丐(大量UDP) 来找王总门前要饭 不请自来(无连接)堵在大佬门口,大佬出不去,乞丐的进不来,这个时候开不开门有区别吗(开不开端口有区别吗)这个时候物业来赶人了,但是大佬还是出不来(运营商黑洞),等都赶走了,王总和物业去谈,物业给了两种方案,一种以后没有门卡都不让进(运营商上层路由屏蔽),第二种,花钱请一大帮子人专门为你这一户甄别(高防清洗),老王最终选择了搬家(换服务器,关站了)从此高枕无忧!
下面是关于一些简单 CC攻击 防护测试,专业的还是要找商业防火墙防护!
我准备了两台测试机器,两台机器硬件配置和系统配置一模一样,克隆出来的,两台机器配置均为
两台机器均部署了 Nginx 挂载了一个简易导航页面(纯 HTML 单页面)!

随意部署一个静态页
不同的是其中一台部署了开源 Scout 攻击检测工具,其中一台单纯防火墙防护
Scout部署比较简单文档也有,需要注意是,它采用的是 iptables 防火墙,Centos7.X 及 Ubuntu 需要停止系统自身防火墙并安装这个!
GitHub地址:https://github.com/ywjt/Scout
CC攻击 测试,我们先拿没有防护的机器:23.224.85.208,进行简易 CC 压测(最简单的模拟访问)

网站打不开了
下图,是本台服务器的一些资源状态,发现带宽基本上被打满了

服务器状态
同样的方式压测 23.224.85.249,然后开启 Scout 防护 看下
第一波攻击是没有太大问题,虽然连接数很高,但是 Scout 进行屏蔽后,带宽很快就降下来了!

服务器状态
但是,当我们继续加大连接数后,与第一台没有区别了!

资源被占满
来看看网络接收到的流量

流量到达峰值
在打开页面看看,已经提示响应时间过长了

另一台也不行了
这只是普通 CC 压测攻击,即便我们只采用本机防火墙,或者 nginx ngx_waf 扩展也是能达到一定效果的!
经过反复测试 Scout 对于简单cc攻击和一些压测软件发出的压测及简单 TCP-syn,以及 UDP 攻击是有一定防护作用的,比没有强,但是这只是用的默认内置策略,有小伙伴有兴趣的话可以自定义策略试一下!
上面主要测试的是cc攻击,下面就来说一下其他攻击比较通用的防护建议
说一下目前,我个人站点,对于CC、DDOS 采用的策略
以上做完能,防住吗,可以!能完全防住吗,不能!还有一个概率扫段,例如 23.22.21.1-255 就打他,刚好你在这个段之中,中彩票了,整个段都了凉。
这种情况一般只出现在海外 CN2 线路上尤其是香港,原因就是海外监管没那么严格,CN2 带宽水管小!
压测软件用了两种,这两种只能做简单压测,不能算攻击!
SuperBenchmarker:一个开源的测压工具,轻量级,易操作的命令行压力测试工具
hping3:hping 是面向命令行的用于生成和解析 TCP/IP 协议数据包汇编分析的开源工具。
Scout 攻击检测工具:
https://github.com/ywjt/Scout
SYN cookies:参考(windows开启 SYN cookies,可以大大加强抵御 SYN 攻击几十倍的提升)
wgcloud:极简&高效的主机监控系统
wgcloud:https://www.wgstart.com/
最后,目前蘑菇所使用的测试服务器,均由老七云提供测试,也非常感谢红尘对蘑菇服务器的赞助支持
好了,本期关于蘑菇的被打挂的排查经历就到这里了
我是陌溪,我们下期再见~
博主就职于字节跳动商业化部门,一直维护校招笔记仓库 LearningNote「在Gitee上已有 5k star,地址 https://gitee.com/moxi159753/LearningNotes」,公众号上的文章也会在此同步更新,欢迎各位小伙伴一起交流学习
同时,想要丰富项目经验的小伙伴,可以参考我维护的开源微服务博客项目:蘑菇博客「 Gitee 官方推荐项目,博客类搜索排名第一,在 Gitee 已有 4.7K star,仓库地址:https://gitee.com/moxi159753/mogu_blog_v2 」。