Soluzione 1:
Fail2Ban. La soluzione gold standard/predefinita a questo problema sulla piattaforma Linux.
Soluzione 2:
Dovresti evitare di provare a farlo con PHP. Quando PHP viene coinvolto, è già troppo tardi:la memoria è già stata allocata.
Puoi vietare gli indirizzi IP a qualsiasi livello, ma il livello più basso che utilizza la minor quantità di risorse è il percorso che desideri intraprendere. Di solito è il firewall. Per lo meno, iptables (linux firewall) è ciò che vuoi usare. Ci sono strumenti che altri hanno menzionato, come Fail2Ban, che possono automatizzarlo per te. Sarebbe meglio un firewall esterno.
Oltre a provare a vietare gli indirizzi IP offensivi, dovresti provare a fare un uso migliore delle tue risorse. Se una richiesta richiede meno risorse, ci vorrà più tempo perché un attacco sia efficace.
Apache usa anche molta memoria. Se stai usando mod_php, è anche peggio perché PHP viene caricato all'interno di ogni processo figlio di Apache. Ciò significa che anche le richieste a contenuto statico (css/js/images) stanno caricando PHP anche quando PHP non viene utilizzato. Puoi risolvere questo problema usando invece FastCGI. mod_fcgid è una buona opzione.
Esistono anche altri server Web più efficienti in termini di risorse. Nginx è il mio preferito. C'è anche Lighttpd. A molte persone piace Litespeed (calo in sostituzione di Apache).
Se vuoi rimanere con Apache, considera di ottimizzarlo nel miglior modo possibile. Prendi in considerazione la possibilità di disabilitare .htaccess. Ecco una buona spiegazione del perché.
Soluzione 3:
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
ossec può fare questo tipo di cose automaticamente e in modo trasparente sulla base dei syslogs.
Soluzione 4:
Per controllare o bloccare il traffico http, puoi utilizzare :
- modulo apache.
- iptable
- fail2ban come affermato qui da HopelessN0ob.
Tuttavia, tieni presente che questi strumenti potrebbero anche bloccare/rallentare i webspider e quindi avere un impatto sulla SEO.