Você verificou seus logs do Nginx (ou o que quer que você esteja usando)? Esses são bots e invasores. Você não faz nada com IPs. Eles mudarão após algumas tentativas (IPs são inúteis de qualquer maneira, eles sempre mudarão de qualquer maneira). Você deve começar a fazer geo-blocking (muitos sites são realmente verdadeiramente globais) e banir muitos user agents no nível do servidor; pelo menos todos os scrapers de SEO totalmente desnecessários e gananciosos, bots que se identificam como IE5.x etc.
Como essa limitação de taxa está funcionando na verdade (não, eu não procurei a resposta). Ela será ativada após uma quantidade de requisições em algum período de tempo por IP?
De qualquer forma, quando há uma situação de ddos no sentido de, por exemplo, se um URL é mencionado em alguma lista estúpida, então começa um dilúvio de IPs da China, Paquistão, Irã, Iraque, Vietnã e Rússia, além de muitos de grandes serviços de VPS, principalmente dos EUA, França e Alemanha. Quando eles tentam 3 vezes e mudam de IP, a limitação de taxa não ajuda muito.
Cheguei a ter muitas buscas estúpidas. E muito significa que um droplet de 5 USD da DigitalOcean travou e eu tive quase zero requisições de humanos.
Isso é mais ou menos uma questão do servidor web, não do Discourse. Aqueles que batem deveriam ser mortos antes de um aplicativo. Eu sei que minha situação/soluções são muito mais fáceis do que as do OP ou da maioria dos webmasters aqui porque sou da Finlândia e meu fórum é puramente finlandês — então banir mundialmente é possível para mim (bem, os finlandeses que vivem fora da Finlândia veem isso de forma diferente )
Mas, independentemente da limitação de taxa, pelo menos os user agents falsos deveriam parar imediatamente.
Como estão os knockers de SSH? Eles também consomem recursos.
Se você estiver tendo problemas de ddos, recomendo o Cloudflare (o que eu quase nunca faço). Certifique-se de usar o modelo Cloudflare e, em seguida, desative as otimizações (ou leia atentamente sobre como configurar isso).
Não é um ddos real. Mas quando há muitas requisições do mesmo tipo, elas agem como ddos, o resultado é o mesmo. Estou usando Varnish e Fail2ban, além de geo-blocking, e isso faz o trabalho para mim.
Meu primeiro pensamento foi simplesmente ser slashdotted, mas 24 horas depois ainda estou sendo atacado.
A solução temporária rápida foi fechar a porta da frente e definir o site como “login obrigatório”. O que funcionou, o uso da CPU caiu de 100% para 3% em 60 segundos.
Assim que eu abro a porta da frente novamente, minha página /search é instantaneamente bombardeada com lixo como:
Somos um pequeno grupo de nicho, não sei por que alguém nos atacaria com qualquer coisa
É apenas uma estimativa, mas de acordo com o Google Analytics, normalmente temos de 8 a 10 usuários ativos e isso dispara para mais de 1.000 em segundos após eu reabrir o site ao público novamente. Todas as conexões mostram como vindas de várias partes dos EUA, todas diretas, sem referenciadores.
Vou deixar o site fechado apenas para membros por alguns dias e ver se isso desaparece, ou ver se consigo limitar o /search apenas para usuários logados e, se não, provavelmente terei que seguir o caminho do cloudflare.
Acho que você também pode procurar em /var/discourse/shared/log/var-log/nginx/.... (ou algo muito parecido). Existem outras configurações como slow down crawler user agents se você procurar por “agent” nas configurações.
Todas essas configurações ajudam apenas se um bot seguir os limites e guias. Mesmo o googlebot não o faz o tempo todo e os ruins nunca. Essa é uma razão pela qual o robots.txt é tão inútil.
E um aviso. Não sei se o Discourse está usando alguma outra tecnologia para diminuir a velocidade.
Não, não estamos. Porque sua pergunta foi um pouco fora de mão Você queria saber um pequeno detalhe quando deveria perguntar “o que fazer quando meu Discourse está sob ataque de bots/ddos”.