Tomcat服务器上的HTTP Flood导致问题

问题描述

我的运行80端口的apache服务器上的小型HTTP洪灾受到了打击,该服务器在8080端口上代理了tomcat。

现在发生的是,这导致tomcat创建100s-1000s的会话,具体取决于有多少客户端通过了cloudflare防火墙和我的服务器(我为Apache服务器安装了libapache2-mod-qos

IPTABLES:


/sbin/iptables -A INPUT -p tcp -m connlimit --connlimit-above 111 -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP
/sbin/iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP
iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min \
    --hashlimit-burst 500 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

示例:

enter image description here

在这给我造成了重大问题,如果有人可以帮助阐明如何解决这个问题,我将非常感激。

mod-qos conf:

<IfModule qos_module>
  # handle connections from up to 100000 different IPs
   QS_ClientEntries 100000
   # allow only 50 connections per IP
   QS_SrvMaxConnPerIP 10
   # limit maximum number of active TCP connections limited to 256
   MaxClients 256
   # disables keep-alive when 180 (70%) TCP connections are occupied
   QS_SrvMaxConnClose 180
   # minimum request/response speed
   # (deny slow clients blocking the server,keeping connections open without requesting anything
   QS_SrvMinDatarate 150 1200
</IfModule>

解决方法

据您所知,这是合法流量,不是DOS / DDOS的一部分吗? 我认为与cloudflare有关的问题不是,但是如果这样,那么最好让IPS在应用程序级别检查流量,并根据匹配的攻击特征拒绝流量。

如果是合法人,则需要根据生成的代码和日志评估tomcat应用程序的运行方式。

也许Tomcat应用程序要求客户端将这些数据入站发送。