Conectar milhares de vezes é uma "vulnerabilidade" conhecida de qualquer servidor com uma configuração maxconnections (ou que usa muitos recursos por conexão). Como um DDOS, o mais provável é que eles não "parem" o download, eles estão apenas cortando a conexão sem um pacote RST, então a conexão fica suspensa até expirar ou usar algo como trickle
para reconhecer apenas um poucos bytes de cada vez para manter a conexão fora do tempo limite.
Qualquer coisa que você faça para mitigar isso dependerá de toda a sua configuração. Supondo que você esteja usando atualmente o apache + mod_jk + tomcat, então, além do fail2ban do Bart, eu procuraria no mod_security para detectar as possíveis solicitações maliciosas e recusar. Outra idéia é se você está realmente usando o tomcat para enviar dados estáticos, movendo os dados estáticos para serem servidos diretamente do apache (ou um servidor leve como lighttpd ou nginix) usando um domínio static.example.com
. Ou, se você precisar que seu código decida qual arquivo enviar, considere usar mod_xsendfile no apache para exibir arquivos estáticos "apontados" por seu aplicativo, que permitiria que o tomcat concluísse a solicitação e continuasse enquanto o apache lidava com o arquivo (em vez de manter o apache e o tomcat ocupado enviando o arquivo).