Se você estiver usando o HAProxy ou puder usá-lo, verifique se postagem no blog ajuda </end_shameless_promotion_of_a_fellow_admin_and_company :)>
Estamos interessados em restringir o número de solicitações por segundo e / ou largura de banda disponível para clientes HTTP, para impedir DoS acidentais. Fornecemos dados científicos gratuitos e serviços da web e, infelizmente, alguns scripts de usuários não são bem comportados.
Eu sei que há muitos mods do Apache que permitem que você diminua o endereço IP do cliente, mas o problema é que às vezes vemos pessoas fazendo rastreamento distribuído de seus clusters (hoje isso causou uma média de carregamento > 200!). / p>
O que eu realmente gostaria de fazer é acelerar por / 24 sub-rede, mas sem precisar especificar quais sub-redes antecipadamente.
Idealmente, também gostaria de poder fazer isso como uma proporção de um limite máximo, portanto, se estivermos vendo somente solicitações de uma sub-rede, eles usarão todos os recursos do servidor, mas se duas sub-redes forem competindo, eles usam metade de cada um.
Isso é possível com:
Obrigado!
EDITAR: Algumas outras coisas ... Se algo precisar ser feito no nível da infraestrutura de rede (por exemplo, roteadores) que esteja fora de nossa responsabilidade e se torne um PITA instantâneo. Então, eu estou esperando encontrar uma solução que requer apenas mudanças no nível do servidor. Também por favor não se ofenda se eu demorar um pouco para escolher um vencedor, este é um novo tópico para mim, então eu quero ler um pouco as sugestões: -)
Se você estiver usando o HAProxy ou puder usá-lo, verifique se postagem no blog ajuda </end_shameless_promotion_of_a_fellow_admin_and_company :)>
Tenha muito cuidado. Simplesmente desacelerar a rede significa que você estará agravando qualquer ataque do DOS - você precisa limitar as conexões antes que elas cheguem ao servidor da Web.
Considere - os discos são muito lentos e processam apenas um pedido de cada vez. Um dos fatores mais importantes na determinação do desempenho do servidor web é a quantidade de cache de E / S que o SO pode fazer - e isso é limitado pela quantidade de memória livre no sistema. Sempre que uma solicitação chega, um processo do Apache (ou thread) é agendado para lidar com isso. Esse processo ficará parado e consumirá memória e CPU durante todo o tempo necessário para compor a resposta e enviá-la pela Internet para o cliente. Negando esta memória para o cache de E / S. Uma maneira de minimizar o impacto disso é usar um proxy reverso adequado na frente do servidor da web - por exemplo, squid que é usado como um único servidor encadeado.
Supondo que você pode evitar o problema de prejudicar seu servidor da Web, convém dar uma olhada na execução de um modelador de tráfego no perímetro de sua rede. O Linux agora vem com tc como padrão.
(eu apenas pesquisei no 'linux tc' e tirei uma foto de uma garota de biquíni;)
Em termos de identificação de rastreadores / DDOS real, a resposta é muito mais complicada. Certamente não há uma solução pronta para uso que funcione de maneira confiável para o HTTP que conheço. No entanto, deve ser possível corrigir o detector em fail2ban para acionar o bloqueio ou a limitação, onde é possível detectar um erro aberrante padronizar. E o pacote básico pode interpretar grandes volumes de pedidos de um determinado ponto final como tal padrão.