Quando eu era CEO no Meteor.js a gente implementou um mecanismo de proteção para os nossos clientes em nossa própria camada de Proxy.
Antes disso era comum clientes sofrerem DDoS, especialmente se seu sistema começa a chamar a atenção sempre vai ter gente tentando de atacar.
Eu particularmente fiz boa parte da implementação que foi basicamente agregação de dados com DynamoDB e utilizando Go para conseguir chegar a conclusão rapidamente que tinha um DDoS (ou DoS) acontecendo e começar a bloquear requests semelhantes. Assim a gente conseguia preservar os containers de nossos clientes, dado que o bloqueio acontecia na nossa camada central de Proxy.
A gente criou também ferramentas para bloqueios manuais e desbloqueios manuais. Além de limites configurados pelo cliente.
Teve um caso interessante que um cliente grande tinha muita gente usando o app deles através de um Proxy privado e aí parecia um DoS ataque mas não era (falso positivo).
Por esses detalhes não é tão simples previnir esse tipo de ataque.