Pelo que entendi, você pode detectar ataques apenas na Camada de Aplicação (HTTP).
Eu recomendo usar modsecurity para detecção e bloqueio nesta camada, além disso, ele pode gerar blocos dinâmicos, bloquear solicitações por algum tempo , execute comandos externos (isto é, adicione regra ao iptables) etc.
O Modsecurity será a solução mais eficaz para detectar, em relação ao bloqueio - você precisa bloquear solicitações no firewall.
Algumas solicitações de bloqueio com fail2ban, mas do meu ponto de vista pessoal, são ineficazes.