总之,我有一个情况,所有的Apache线程都被挂起了,因为所有的这些线程都在发送HTTP页面之后等待来自客户端的TCP ACK,因此,Apache线程在等待300秒之前(conf的超时值)去下一个请求。 然后发生同样的事情。
事情发生的情况是:stream量突然高峰,apache&db服务器负载如预期的那样上升,并且在某个时刻,每个apache线程都进入这个状态,并且apache&db负载变为0。这样几个小时。 在apache重新启动后,页面再次正常处理,负载上升,再次发生,负载变为0.现在,如果这是一个攻击或一些不好的软/硬件的后果还不得而知。
详细信息:当一切都挂起,你去apaches的服务器状态页,所有的线程被标记为“W”(工作),你看到定时器SS(处理请求的时间)上升到300s,然后转到下一个HTTP请求并重新开始到300s。
在通过netstat的套接字部分中,我们看到这些Apache线程的所有套接字都挂在CLOSE_WAIT中,并具有较高的Send-Q值(发送的数据包未确认)。 使用strace,我们确实看到Apache在套接字上做了一个300(轮询)(),等待数据包被确认。
现在,无论是一个攻击还是一些不好的networkingconfiguration丢失了数据包,我的问题是:我们如何防止这个? 这似乎是一种特别讨厌的攻击。
我知道缓慢的loris攻击,当你非常缓慢地发出一个HTTP请求时,如果你有一个CDN,一个反向代理,这可以被减轻…但是对于这个特殊情况,我没有看到什么能够阻止那?
你会如何防止这种情况发生?
谢谢!
把apache的litespeed面前。 这可以解决你的问题。 这正是我们为慢速请求,reflection和正常的ddos问题所做的。 解决意味着至less在某种程度上我的意思。
编辑部分:
当然,
Litespeed是一种networking服务器/负载均衡器,也是一种反向代理,也可以限制可怕的ddos攻击缓解软件。 我们有同样types的攻击,你的意思是更接近每秒400.000 http请求攻击。 我们安装了一个litespeed服务器,其中有24个核心128 GB的ram litespeeds,在安装的ram中运行,操作系统运行在raid0条带化的ssd磁盘上。 那解决了并且停止了这个攻击。
同样通过configuration和设置,您可以停止慢loris攻击。 我们仍然有一个负载平衡器,但传入的stream量首先经过litespeed,然后通过我们的负载平衡器。