如何最小化恶作剧,持久的POST请求的影响

几个月来 ,我们共享的托pipe服务器之一,一直持续不断地受到来自必须成千上万个IP的“POST /”请求的打击。 在很多情况下,这已经使服务器不堪重负,导致拒绝服务中断。 目标领域是很无聊(小地产代理),所以虽然这似乎是恶意的,我不明白这个长期和99%的不成功的攻击的动机。

一个典型的请求(取自TCPDUMP)看起来像这样:

POST / HTTP/1.1 Accept: */* Accept-Language: en-us Content-Type: application/octet-stream Content-Length: 570 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: xxx.co.uk Connection: Keep-Alive Cache-Control: no-cache 2+cIPSyYVJFqB9xPFzWoLj9seNyEKIcuIJz/yfkc9tVP+orXgjDk8ywglufcXsMz bVP4XLcowz/fQtsn2kceQEj/EaEWx/GEbcC3eTbCbTube0suAfEGje3qISKQJ+ka HaChqun3whii3OTh7vCayGV72lh4raLRandKC5g/73wgQ9Jzh2OLIzNvsiEMSJco yG+4i35XJMvX7ovx8qJkyByHUIeE5G5M2Kp97O4sOT4jTAK2y/KAMjf6oFgtAJhI K4/HdcnyfNdI3/4RJXlrSfhUQAc+qhGMEL7AZdtzgRub7lnu+hbuPGZvS3rF1MvL WK1q4mrnZr0Q3m0bWkzsMZCndQ7fqOBafchjprhn4JKPsjO+upRm2m+irvmJjqnl sDiR3fnD6pzbWyLTm2qonMJPCll3p6zg06gEfIaW04t9r89/PdHgz8AU8nzO4BX8 qwTG6dSjgbowHyJQmud8Ro+ZT+gHfw/YQUrBqKm7RoFmfJzUoOCKaP1LTwHfI1Gc E+L8bwQV6ztKBwVn2NqbE83SAXYr9E0QkpaxGg== 

我们还没有能够确定POST请求中的内容,因为它看起来像垃圾,但我不确定它的相关性。 这不是base64编码。

为了减less响应这个请求的带宽量,我们禁止在Apache2configuration中使用POST请求:

 <Location /> <Limit POST> Order deny,allow Deny from all </Limit> </Location> 

这限制了响应大小只是一个简单的403 Forbidden消息,而不是客户的平常的主页。

要尝试阻止这样做的IP,我们尝试了pipe道访问日志,筛选POST请求,并将其直接提供给iptables:

 tail -f /var/www/vhosts/xxx.co.uk/statistics/logs/access_log | grep "POST / " | awk '{print $1}' | xargs -I{} iptables -A INPUT -s {} -j DROP 

这很好,减less了问题的影响,但是它是无情的,当iptables / kernel问题达到50-60k时,我们通常需要清除iptables规则集。 这不是一个解决scheme,因为我不能让这个运行几个星期,直到谁负责得到这个信息并放弃。

我们已经closures了这个特殊的VirtualHost的KeepAlive,以保持被占用的Apache工作人员的数量减到最less,但这不是一个解决scheme。

对于如何在数十万远程IP的范围内对这些请求进行黑客攻击,或者是否将对Apache的影响降到最低,有没有人有更好的想法? 我现在可以做的最好的事情是configuration它发送一个403禁止,结合IP阻塞几个小时…

谢谢!

如果您具有对该机器的root权限,则可以使用有限的规则集来部署snort / suricata,例如检测并阻止POST请求。

亲们:

  • 在networking层面上工作
  • ips可以被阻挡一段时间

CON:

  • 不太容易设置和维护,应该由知道如何/做什么的人来完成

更简单:设置你的Apache的nginx infront,并从那里处理你的403,同时传递有效的请求到Apache

亲们:

  • 设置简单
  • 可以处理比apache更多的请求
  • 限制速率可能会在IP级别上使用

CON:

  • 必须经过testing