Você não está apenas tentando resistir a um DoS, está tentando resistir a um DDoS, que é distribuído e muito mais difícil de lidar.
Essencialmente, você está tentando identificar tráfego ilegítimo e bloqueá-lo. O ideal é que você queira distribuir nulo esse tráfego (ainda melhor que seus provedores de upstream façam o roteamento nulo).
O primeiro porto de escala é a identificação. Você precisa encontrar alguma maneira de identificar o tráfego que está sendo enviado para o seu host. Seja um agente de usuário comum, seja o fato de que eles não estão realmente usando um navegador adequado ( HINT: eles agem como navegadores adequados - ou seja, seguem redirecionamentos 301), se todas as solicitações são inundadas exatamente o mesmo tempo ou por quantas solicitações cada IP está atingindo seu servidor por hora.
Você não pode bloqueá-los sem identificá-los e precisa encontrar alguma maneira de fazer isso.
Essas ferramentas de mitigação de DDoS essencialmente fazem a mesma coisa, exceto em tempo real e custam uma bomba. Metade do tempo há falsos positivos ou o DDoS é tão grande que não importa de forma alguma, por isso tenha cuidado onde colocar o seu dinheiro aqui se decidir investir num deles agora ou no futuro.
Lembre-se: 1. IDENTIFICAR 2. BLOCO . 1 é a parte difícil.