如何抓包分析报文防护 DDoS 攻击?

2016-09-08 10:08:04 +08:00
 SeedMssP

由于 DDoS 攻击越来越频繁,如何对抗 DDoS 攻击成为不少企业的难题。

x86 君与多名行业客户[这些客户业务基本上都是出于发展期或爆发期]交流后发现,大部分用户遭受 DDoS 攻击时往往发现他们所采用的 DDoS 攻击防护服务商都可以清洗 3-4 层 Volume(流量型) DDoS 攻击,但是在防护具有针对性的 Volume 或 Application 型 DDoS 攻击却毫没有特别有效的方案。

其原因在于 DDoS 攻击防护服务商无法非常了解用户业务特性或对针对性的 DDoS 攻击采用了粗放式的防护方法(粗放式的防护算法对用户正常的业务流量误杀率极高)。

例如目前大部分 DDoS 攻击防护服务商针对 UDP 协议或 ICMP 协议或者私有协议的 DDoS 攻击防护采用阈值触发方式对这类触发阈值的流量进行直接拦截。

还有一种针对 UDP 或 ICMP 协议或私有协议的 DDoS 攻击防护算法,那就是 TCP 反向源认证。

采用 TCP 反向源认证的 UDP 防护算法采用 TCP 反向源认证的 UDP 防护算法

采用 TCP 反向源认证的 UDP 防护算法

采用 TCP 反向源认证的 DDoS 防护算法防护 UDP 协议的攻击可能会让部分不支持 TCP 协议的客户端被误杀,并且会导致反弹认证的流量过高,通常会高达 8 倍,这也会让大部分 DDoS 攻击防护服务商无法支撑巨额的上行带宽费用!(10Gbps 的纯 64 字节小包攻击,会导致防火墙反弹 80Gbps 的 TCP 报文)

这里 SeedMssP 采用了较为先进 Machine learning(机器学习)方式对 UDP 和 ICMP 或私有协议流量进行学习并防护,能够较为有效的防护 UDP 和 ICMP 以及私有协议的 DDoS 攻击,并能够保障对用户正常流量误杀率始终处于最低水平(误杀率平均在 5%左右)。

回到话题,抓包分析报文来防护 DDoS 攻击对大型 IT 企业(例如 BAT 这类规模的)来说非常有效,因为大型 IT 企业往往都配备超高性能的路由器,和超高性能的防火墙。

那如果我的企业是个初创型的 IT 企业怎么办?我买不起数十万数百万元的路由器和高性能防火墙,那我该如何防护这类具有针对性的 DDoS 攻击呢?

很简单,首先你要有个抓包工具,当你遭受此类 DDoS 攻击的时候,你可以使用 TCPDUMP 或 Wireshark 来抓取当前设备的网络报文。

然后将抓取的报文利用报文分析工具分析,例如使用 Wireshark 。

下面 x86 君简单介绍下,如果攻击者采用大量的肉鸡攻击一个网站,攻击使用一个固定的 URI 参数,且这个 URI 参数对正常访客来说并无用处的情况下的 DDoS 攻击防护方法。

首先黑客攻击了 http://123.1.1.2/test.php?mynameis=ddos

那么我们在被攻击的服务器内使用抓包工具抓取一定数量的报文,然后利用 Wireshark 对这组报文进行分析。

我们可以看到报文内有一组 GET /test.php?mynameis=ddos 的字符。那么我们只需要提取 mynameis=ddos 这组 URI 参数作为特征。

如果你使用 Nginx 作为 Web Server ,那么你可以在 Nginx 的配置文件中加入如下参数即可防护:

if ($args ~* "mynameis=ddos") {

            return 444;

        }

但是,如果攻击请求每秒高达数万次或数千万次的情况下, Nginx 可能就顶不住了,或许你需要把 DDoS 攻击流量在进入你服务器之前拦截掉。

此时 x86 君建议客官试一试 SeedMssP 独有的 V-ADS 细粒度清洗模型了。 V-ADS 虚拟防火墙(细粒度清洗部分)V-ADS 虚拟防火墙(细粒度清洗部分)

V-ADS 虚拟防火墙(细粒度清洗部分)

V-ADS 虚拟防火墙能够为客官提供报文级别的 DDoS 攻击防护,客官可以自行定义 DDoS 攻击的防护特征模型,而 V-ADS 会根据客户提供的报文指纹特征以及频率或相关模型行为对符合特征的报文进行拦截,放行,限速。

刚才的 DDoS 攻击黑客采用了 mynameis=ddos 的 uri 参数对 Web 服务器发起 DDoS 攻击,此时用户可以通过开启 V-ADS 的 Http Flood 防护模块进行一键防护,如果客官是个 Geek ,那么客官可以利用 V-ADS 的清洗粒度模型清洗此类 DDoS 攻击。

mynameis=ddos 的十六进制是: 6D796E616D6569733D64646F73 TCP 报文的标志位信息 TCP 报文的标志位信息

TCP 报文的标志位信息

TCP 报文中的 Flags 是 0x18 ,那么意味着 TCP 的标志位就可以勾选 PSH 和 ACK(勾选后将只对包含 PSH 和 ACK 标志位的报文进行匹配),如果客官不勾选的话 V-ADS 会对所有报文进行匹配。

那么客官可以在 V-ADS 清洗粒度模型中填写如下内容:

此时点击保存后,再一次访问 http://123.1.1.2/test.php?mynameis=ddos 的时候, V-ADS 就会立即拦截包含此特征的报文。 访问被拦截掉了访问被拦截掉了

访问被拦截掉了如果客官您脑洞开的大,您还会可以利用这 V-ADS 的细粒度清洗模型来完全贴合您的业务特性,将误杀率降低到最低甚至零误杀!

最后 x86 君要说下的是, V-ADS 清洗是线速的哟~~~

8475 次点击
所在节点    推广
31 条回复
denghongcai
2016-09-08 11:43:53 +08:00
我想知道这个“细粒度清洗“和 netfilter 的 https://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html 有什么区别?
达到线速是什么配置下? netfilter 在正常配置下也能随便达到线速
lhbc
2016-09-08 11:45:10 +08:00
几个问题:
1. https 怎么处理?
2. 随机的 args 怎么办?
3. 发起 http 请求之前,已经建立了 TCP 连接,攻击特征包直接丢弃了,服务器上的连接只能等超时了吗?
nilai
2016-09-08 11:54:31 +08:00
一看就知道你是个广告帖,

如果攻击者 直接打 http://123.1.1.2/test.php 这个地址 后面不加任何参数,是不是都正常的访问都封掉呢?

其次,入口带宽就那么大点的情况下, 纯流量来了你能防住?

个人感觉目前靠谱点的还得云防火墙或者考虑自建云防火墙,

看了下资料,感觉不喜。
nilai
2016-09-08 11:57:22 +08:00
还有就是你举的 nginx 的例子, 别忘记了 nginx 的 openresty 分支, 在你提到的这个简单 CC 攻击例子, 在可扩展性,性能,易用性,可维护性,秒秒钟超过你, 真的。
nilai
2016-09-08 11:59:53 +08:00
刚看了下官网, 发现也是主要卖云主机的, 不知道你们跟阿里云有什么优势?
bugmenein
2016-09-08 12:00:07 +08:00
现在在 V2EX 看到长文带图技术文章我都会先看下面。
canglaoshi
2016-09-08 12:00:38 +08:00
我关心价格
canglaoshi
2016-09-08 12:02:25 +08:00
貌似是阿里云的 api 么
des
2016-09-08 12:30:15 +08:00
感觉没啥软用,上 cc 攻击马上 gg ,感觉和 iptables 一个原理。
应用层的攻击还是得到应用层解决。
另外广告太硬。
des
2016-09-08 12:33:38 +08:00
另外如果攻击者一直盯着一个地址攻击极有可能就是为了让这个地址无法访问,就和 github 被攻击那次一样,当你屏蔽了这个地址,那么攻击者的目的也达到了
MiguelValentine
2016-09-08 12:34:42 +08:00
@denghongcai 才才发问了
SeedMssP
2016-09-08 12:49:46 +08:00
@denghongcai NetFilter 的所有流量都是需要通过 Kernel TCP/IP Stack , V-ADS 完全基于 User Spaces TCP/IP Stack ,能够实现 10Gbps / 14Mpps - 200Gbps / 280Mpps 的清洗性能(Layer 3 , 4 , 7)。
另外据我所知 iptables 在七层上无法达到线速,而 V-ADS 是可以达到线速
SeedMssP
2016-09-08 12:54:56 +08:00
@lhbc
1. https 流量需要用户证书配合。
2. 随机的 args 目前 V-ADS 可以通过 Redirect 和 验证码方式对此类攻击进行有效防护(大约 95%以上的 CC 攻击)
3. V-ADS 会向 Server 发送 Rst 重置。
SeedMssP
2016-09-08 12:57:01 +08:00
@nilai 针对这类攻击, V-ADS 可以通过学习攻击特征进行自动防御,或者租户自行设定防护方式。
大部分 CC 攻击的 Slave 是无法解析跳转和 JS 以及 Cookie 或验证码,所以防御这类攻击是比较简单,而目前 95%以上的攻击都无法逃过这三类防护方式。
SeedMssP
2016-09-08 12:58:30 +08:00
@nilai 如果每秒连接数达到数百万的情况下,我觉得 Nginx 就很吃力了, V-ADS 设计当初就是高性能的清洗系统,单台新建 TCP 能力超过 150 万每秒,我相信跑在 Kernel TCP/IP Stack 下的 Nginx 做不到。
SeedMssP
2016-09-08 12:58:45 +08:00
@canglaoshi 和阿里云没有任何关系
SeedMssP
2016-09-08 12:59:42 +08:00
@des 如果和 iptables 一样的话,我觉得这个产品不叫产品,因为 iptables 的处理能力在我们看来应该还是幼儿园级别的。
SeedMssP
2016-09-08 13:00:03 +08:00
@des 针对这类攻击, V-ADS 可以通过学习攻击特征进行自动防御,或者租户自行设定防护方式。
大部分 CC 攻击的 Slave 是无法解析跳转和 JS 以及 Cookie 或验证码,所以防御这类攻击是比较简单,而目前 95%以上的攻击都无法逃过这三类防护方式。
SeedMssP
2016-09-08 13:02:42 +08:00
@des 另外 V-ADS 并不是在云主机上运行,而是构建在 V-ADS Cluster 中,单个 V-ADS Cluster 拥有 400Gbps / 640Mpps 的异常流量清洗能力。
blackboar
2016-09-08 13:09:39 +08:00
我的圈子里了解到现在搞纯流量攻击的可以打到 200G 往上,实际上比这个高的很多,一个朋友让我给他介绍高防,要能 150G+的,我直接让他弄阿里云试试,结果回复说已经试过,还是挂掉了。

我这边其中一个机房每月遭受流量攻击都在 100 多次, 70%都是超过 10G 的,这么大的量没法抗,只能城域网出口封掉。

特别是那些过百 G 的,防火墙已经没意义了,最大的问题在机房出口或者城域网出口上了。

如果是正规业务,还是建议走法律途径,“沟通到位”的话会帮解决。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX