我如何检测使用pfSense的DDoS攻击,以便我可以告诉我的ISP谁阻止?

上周我的networking遭到了一次DDoS攻击 ,这个攻击使我们的100Mbps链路完全饱和,几乎closures了我们托pipe的所有站点和服务。

我理解(从这个经验以及其他答案 ),我不能处理我这样的DDoS攻击,因为即使我们丢弃了仍然通过我们的链路发送的数据包,并且正在使我们的连接饱和。

然而,当发生这种情况时,我的ISP(奇怪的是)无法告诉我攻击来自哪里。 他们说,如果我能确定来源(EG通过tcpdump ),我可以给他们的IP地址来阻止。 但事情是如此重载,运行tcpdump是不可能的。 我只是无法查看输出。

几乎所有的服务器都在pfSense路由器后面。 我如何检测使用pfSense的DDoS攻击,以便我可以告诉我的ISP谁阻止? 我不想自己阻止攻击,我只想获得警报/能够查看正在使用更多带宽的IP地址列表。

pfSense路由器正在运行Snort,如果可以以任何方式协助。

有几种不同types的DDoS,因此有关它们的一般信息可能只适用于某种特定的types。 例如,DDoS总是耗尽您的带宽的想法是不正确的。 你需要做的是分析(一些)的stream量,确定为什么它打破你的网站,find一种方法来识别它,然后决定一个行动,可以阻止stream量。

DDoSstream​​量可能看起来不像真正的stream量,但是它的不同并不一定是数量。 在最近的DDoS中,我们的托pipe服务提供商决定阻止连接IP地址前十名。 当然,这些都与DDoS无关,其中一个实际上就是Google bot。 他们会阻止我们的办公室,除非他们承认IP地址。 使用netstatsortuniq寻找最高连接的标准build议不一定是好的build议。

我们的DDoS是一个SYN洪水,这意味着有几件事要检测:

  1. 这些都不是完全打开的连接,所以取决于你如何测量连接,你甚至可能看不到这些连接。
  2. 没有太多的识别信息继续下去。 几乎只是源IP地址和源端口。
  3. 源地址可以(并且几乎肯定会)被欺骗,因为他们不期待响应。
  4. 你可能会很幸运,并find一个不寻常的TCP标志集。

您可能只会看到每个IP地址,这会阻止您已经看到的毫无意义的IP地址。 在实践中,我们在10分钟内看到了10万个唯一的源IP地址,每秒14万个数据包,这意味着每个IP地址每秒平均返回约一次。 阻止IP地址在我们的情况下是有效的。 总的带宽只有70Mb / s,而且由于源地址被欺骗,整个DDoS很容易被某个单一的服务器推出。

由于每个IP地址每秒只能发送大约一个数据包,与其他任何合法的IP地址相比,这个数量要低得多。 我们的许多网站主页的大小都达到了MB,这意味着成千上万个用户看到的单个请求的数据包。

大多数源端口是随机的,但几个小时后它改变了,源端口始终是1234.这使得识别stream量非常容易。

在我们的情况下, 问题是每秒的数据包数量大于防火墙可以处理的数据包数量。 在我们的防火墙阻止这些IP地址不会工作,因为防火墙是问题,但如果stream量正在通过防火墙和networking盒是问题,在防火墙阻塞可以帮助。 当源端口切换到1234时,我们的托pipe服务提供商能够阻止来自防火墙上游的stream量。

还有其他types的DDoS,其中一些填充您的带宽。 无论如何,我们的防火墙还是被淘汰了,这意味着我们无法访问我们的基础架构的任何部分。 对于你的具体问题,你将需要某种带外的方式来与你的防火墙和/或盒子进行通信,这样如果你的互联网pipe道被填满,你仍然可以进入诊断问题。 无论如何,这通常是一个好主意,因为有很多其他的方式可以让你的pipe道停下来。 当我走到数据中心时,我倾向于在其他人的机架上看到很多ADSL调制解调器,如果其中一些是用于带外通信的话,我不会感到惊讶。

我见过的其他两种DDoStypes都反映了DNS请求和昂贵的HTTP请求。 如果您运行DNSparsing程序,反映的DNS请求特别麻烦,因为您不想阻止这些IP地址,以防您希望从其中一个IP地址收到真正的答案。 我会改变我的主机使用一个新的DNSparsing器(也许是一个免费的公共),并阻止所有其他的DNSstream量。

昂贵的HTTP请求往往是针对你的CPU /内存/ IOPS。 他们还带有许多标识信息,如HTTP标头,源地址不能被伪造。 像mod_security这样的工具可以做一些惊人的事情来识别和阻止这些types的请求。 它甚至可以删除tcp连接,而不是发回一个HTTP响应。

简而言之:

  1. 获得带外访问权限。
  2. 了解你的协议里面。 (TCP,IP,HTTP,无论你使用什么。)
  3. 了解你的工具里面。 (pfSense,tcpdump,mod_security等)
  4. 知道你的select。 (HTTP 403,pfSense块,ISP防火墙块,空路由等)