哈喽大家好啊!这里是菜鸡
看到了一个防御DDoS的,额…怎么说呢,有创意挺好的,只不过实现起来…
好吧,不扯那么多
给你们讲个故事
[以下故事为真实故事,但是现实就是这么离谱]
你可能问我:DDoS是什么,CC是什么之类的,点我了解一下
这几天在给一个企业设计一个云服务集群,里面含这个企业的重要数据
秉承着:我不是和珅谁是和珅的原则,能省 (贪) 一点是一点,为他们省点 (为了塞满自己的腰包) 少 (多) 批点经费,快乐你我他(?)
首先是独立的数据库服务器,就一台 i7-7700 的家用主机,CentOS Stream 8,跑着MySQL,有点吃力
叫我防御这个,给我200预算
当时我傻了,这么办啊,材料钱都不够 (贪都贪不了)
秉承着一个:我不当冤种 刁民 谁当冤种 刁民 的原则,硬着头皮上了
我有一个朋友,手底下有大量的僵尸网络,可以当作很好的测试流量提供商(?)
他曾经打过我的博客,一下就死,打我游戏服务器,亏我游戏服务器有自己组的大盾,要不然必死无疑
那天我QQ电话找到他,问他,欸,你现在能给这个IP送点温暖嘛?
他说:好啊!没问题啊!
待测主机:配置如图
上了1TB/s,3306端口击落
上了2TB/s,80,22,20,11451(?)等端口相继击落
3分钟后,物理机死机,从他告诉我开D到击落仅仅需要3分钟
完事他还屁颠屁颠的过来告诉我:欸!菜鸡!你肉鸡很弱欸,就是逊
我:我吃柠檬,我™谢谢您
跪着重启物理机,然后研究了起来
DDoS无非也就是利用大量的SYN-ACK数据包来填满带宽,或者是UDP-Flood等,管他什么协议,只要是大量发送无用数据,占带宽,恶意占用服务器性能的,就算
那么怎么防御捏,才不会被乳斌逊捏?
一般来说解决方案很多,比如直接技术外包(让别人想法),CDN(按需计费),黑洞策略(自建黑墓,防御黑暗森林打击)或者是基于技术,如IP白名单(你™乱封IP是吧),包检查(更废性能了),过滤无效地址(10/172/192震怒),或者是基于硬件的 SLB策略(家里有矿)之类的技术防御
但很明显,都造价太高 (贪得太少) ,需要技术 (懒得撸码) ,为了给公司省省钱 (多贪亿点) ,互利共赢,于是转向了自己的想法
理论来说,世界上能存在一种生物,有很高的生命力,对的没错!打不死的小强!
理论来说,打不死的小强能做到,比如来一个大型SLB,后台服务器几乎全是清洗服务器,然后滤掉的数据给客户机,清洗可以基于IP白名单,包检查之类的东西
但是有没有想过,组一个SLB服务器集群,How Much?
idc(不是那个IDC,那个IDC你要是有的话属于你家里有矿,我说的是 I don’t care)
打不死的小强的话,还得接多少条线路?用于冗余宽带?
除非你家里有矿 (不如你来包养我) ,再说了,组了也可能没用,因为你没有那么大刚需,哪怕是企业也没那么大刚需,什么企业需要那么大的盾?
除非政府,或者是联合国,经费随便批那种(他们需要这种技术?)
你可能告诉我:我喜欢裸奔 (有本事你现实来一下,我指的是字面意思上的裸奔)
有的时候一个人上网挺无助的,裸奔?你以为你老几? (老六) 你服务器是泰坦级?
(要是有的话务必给我!!! ↓金典放送↓)
好吧,既然要裸奔,那就得有个裸奔的样子。 (因为我也是裸奔人)
但裸奔不意味着傻乎乎地等着被攻击 (坐吃等死)
就像靶子一样,在诱惑着攻击者,说:啊~我已经迫不及待 (的变成你的形状) 啦~
然后我想了想:想要用一台i7-7700的家用主机来硬防御DDoS和CC攻击,你咋不让猪上天呢? (猪:我可以坐飞机啊,你是不是傻)
算了…换个想法吧…还有2天交设计稿
中午食饭 (学校食堂特有的长得像Homo的饭菜)
和同学一边吃一边唠嗑…
同学玩Windows的,告诉我他家Windows Server 2022 电脑防火墙规则又双叒叕的炸掉了
我一边看着它狼吞虎咽的样子,一边听他讲话,没心情吃饭
(BYD他吃的那个香啊,我都看不下去)
低成本,高防御,咝…
不如好好调防火墙 (上等的食材往往需要简单的烹饪方式)
先做到不被NMAP扫到太多端口再说
修改iptables规则,先只开几个重要的端口 (闭关锁国)
然后搞一个类似于IP白名单的东西,你就比如还带着包过滤的DPI技术
但是在我把这个想法和朋友说了之后,他说我,建议看看这个工程
Fail2Ban GitHub - fail2ban/fail2ban: Daemon to ban hosts that cause multiple authentication errors
浅浅研究了一下,这玩意是一个防入侵的东西,但是还好
通常,Fail2Ban 用于更新防火墙规则,用于在指定的时间内拒绝 IP 地址。 它也会发送邮件通知。 Fail2Ban 为各种服务提供了许多过滤器,如 ssh、apache、nginx、squid、named、mysql、nagios 等。
看了一眼,安装简单,配置也挺简单的
能有效防止服务死掉
另外加上一个蜜罐/流量重定向,解析到别的服务器 (测试的时候解析到的是雨云的CDN,解析到哪都行)
打电话给朋友,告诉他来测 (我)
给他IP,他来测
但是他说:不对啊,解析到不是这个IP啊 (蜜罐重定向功能)
我就说: 你打我给你的IP就好
开始上流量了,过去了5分钟,3306还没死? (TNND为什么不死)
他说现在上的5T/s,我不信,去看 /var/log/fail2ban.log
一看不知道,看了吓一跳
特别多IP被封,放到监狱列表 (不死一般的多)
外网连接数据库访问不了了,因为貌似下行带宽占满了
看起来这次优化非常的不错
开源项目+蜜罐,使我的解决方案旋转 (又贪又缺德)
其实这个吧…
关于云服务这边,最好是上个CDN
游戏服务器建议上物理防御,上flood清洗
CF这边没有有针对UDP Flood的防御,我强烈建议上BGP清洗机
理论来说,清洗机有效防止任何攻击 (一点点) ,太贵 (贪不了) 如果没有钱的话,只能使用机房提供的防御喽
另外这个方法有效防止了进程击落问题,但是防御不了恶意占用网络带宽
再说,我们的目的是在不大幅度降低降低原有服务延时的情况下,优化网络结构 (人话:能多贪一点是一点)
总结一下:
1.BGP机房
2.前面套一个CDN或者是清洗机
3.泰坦级服务器
4.SLB策略分压
5.服务器自身策略
满足任一就能防御挺多了
那么怎么防御捏,才不会被乳斌逊捏?
强烈不建议:黑洞策略(自建黑墓,防御黑暗森林打击)