Desculpe, mas eu não sei o que você quer dizer com we just need to block them at the server level across all servers
se não for block this at the firewall
.
Na verdade, é exatamente onde eu os bloquearia. Usando o fail2ban.
Their last "incident" involved 5250 unique IPs from approximately 900 different networks/IP blocks from around the world
Não importa - é trivial fazer o script da ação para definir o bloqueio para (digamos) uma rede de 8 bits - ou se você estiver se sentindo aventureiro, mapeie o ASN e bloqueie isso. Usar cadeias de regras muito longas pode afetar o desempenho (mas muito menos do que permitir que o tráfego passe pelo som das coisas), mas você apenas ajusta a duração da proibição para evitar isso.
We do not currently have the ability to do deep-packet inspection
Não é necessário - você usa o Apache para lidar com o tráfego HTTP e redireciona para um script que aciona o fail2ban para implementar sua ação.