Estou configurando o Fail2Ban no meu servidor web Ubuntu para evitar que ele seja vítima de DoS/DDoS. Não quero usar o Cloudflare porque preciso rotear meu DNS e usar seu certificado SSL.
Atualmente, encontrei um script online que verifica mais de 1 HEAD
solicitação HTTP por segundo ou mais de 1 solicitação xmlrpc.php
por segundo. Não acho que seja proteção suficiente, pois esses não são os únicos tipos de solicitações que as pessoas podem empregar para executar um ataque DDoS.
Estou procurando restringir o número de GET
/ POST
solicitações que um determinado IP pode fazer em uma janela curta, mas não tenho certeza de como devo definir a restrição, pois páginas grandes que carregam muito Javascript, CSS ou imagens farão um muitos GET
pedidos em pouco tempo. Devo estar olhando para limitar GET
/ POST
solicitações, ou devo estar olhando para outra coisa? Por quê?
Pode ser difícil ver a diferença de bons ou maus, apenas verificando a taxa de solicitações por segundo. Você precisaria executar o script em seu ambiente para ver quantas solicitações de um único endereço IP por 5 minutos (exemplo) são "normais" para seu site antes de tomar a decisão final.
Depois de descobrir a taxa normal, deve ser possível contar GET e/ou POST (dependendo da análise do arquivo de log) com seu script.
No entanto, é possível encontrar outras atividades suspeitas nos arquivos de log para filtrar, como verificação de scripts ou executáveis etc. (GET/POST que "espero" causa um erro em um servidor web bem configurado ;-) )
Eu usei este link externo de falha 2-ban em meus próprios sistemas.
Uma boa configuração é verificar várias conexões em 1 segundo. Acredito que 100 conexões em 1 segundo é algo muito suspeito e deveria ser bloqueado.
Como você usa o Apache, eu recomendo também usar mod_evasive junto com fail2ban.
Usando mod_evasive .
Usando fail2ban .