开源DDOS防火墙 零成本搭建DDOS防御
DDos防火墙
保护您的业务免受 CC 攻击、UDP 攻击和流量泛洪攻击。
首先安装openresty。添加map正则表达式,匹配x-forward-for中客户的真实ip,如果没有头部x-forward-for,则使用ip数据包中的源ip。添加geo白名单,避免内部业务被限速。在location中添加lua代码,access中判断请求是否超过阈值,log中统计流量信息。统计信息放在共享内存中,nginx的不同worker共享内存通信。
代码分析:
在access处,如果上次清零时间到本次访问时间超过一小时,则清零数据来重新统计。判断请求次数,使用流量,消耗时长是否超过阈值。超过阈值,直接444断开连接。
在log处,统计请求次数,统计请求和响应字节数,统计请求消耗时长。
性能分析:
openresty中共享变量字典使用了红黑树,增删改查的时间复杂度为O log(n)。内存使用满了使用lru算法淘汰数据,使用链表剔除最早未使用的数据,时间复杂度为o1。worker间共享内存使用了自旋锁。因此性能很高。
数据统计:
在contect处生成统计信息。展示每个ip每小时,每天的用量。可见每小时请求数最多为1289次,最大上传下载为8M,最大时间消耗为69秒。每天的最多请求次数为4572次,最大下载量为63M,最大消耗时间为488秒。
配置修改:
在env中配置阈值。根据统计信息来调整阈值大小。
防UDP 防ICMP 防SYN
对CC 刷量等 DDos也有极强的防御力
这期就详细压测一下它,用实际数据来看看它究竟有多强的防御力。
说实话,测试前我心里还是虚的。测完后,我被我程序的防御力震惊到了,没想到它性能居然这么强!
首先说明一下,用了CDN后,换了IP,加了Nginx的ssl_reject_handshake和k8s的NetworkPolicy,我的源站IP再也没被DDos过。
这证明他有100%的UDP、ICMP、SYN洪水防护能力。
然后,咱们来看我开发的DDos防火墙对CDN刷量究竟有多强的防御力。和redis比谁快。
最后,给你看下实战效果,刮痧兄弟们,使出浑身解数,就刷了我这么一丢丢。
- 结果:
- DDos防护lua的性能为不防护lua性能的61.3%
- DDos防护lua的性能为不防护直接请求性能的51.9%
- 连接数10和连接数150的性能都不错
- 连接数10w的性能为连接数150的性能的81.9%
- DDos单次防护会写6次变量
- DDos防护lua的性能为redis性能的71.1% * 6 = 426%
咱们直接看结论,从上面的数据可以得出
- 结论
- DDos防护的性能非常棒
- DDos防护的性能远超redis的性能
下载地址:
https://yuncv.lanzouw.com/iVkk629c4xpg
密码:g7nb