Solución 1:
Fail2Ban. La solución estándar/predeterminada de oro para este problema en la plataforma Linux.
Solución 2:
Debe evitar intentar hacer esto con PHP. Cuando PHP se involucra, ya es demasiado tarde:la memoria ya se ha asignado.
Puede prohibir las direcciones IP en cualquier capa, pero el nivel más bajo que utiliza la menor cantidad de recursos es la ruta que desea tomar. Este suele ser el cortafuegos. Como mínimo, iptables (linux firewall) es lo que desea usar. Hay herramientas que otros han mencionado, como Fail2Ban, que pueden automatizar esto por ti. Sería mejor un cortafuegos externo.
Además de tratar de prohibir las direcciones IP ofensivas, debe intentar hacer un mejor uso de sus recursos. Si una solicitud requiere menos recursos, el ataque tardará más en ser efectivo.
Apache también usa mucha memoria. Si está utilizando mod_php, es aún peor porque PHP se carga dentro de cada proceso secundario de Apache. Esto significa que incluso las solicitudes de contenido estático (css/js/images) están cargando PHP incluso cuando PHP no se está utilizando. Puede resolver este problema utilizando FastCGI en su lugar. mod_fcgid es una buena opción.
También hay otros servidores web que son más eficientes en recursos. Nginx es mi favorito. También está Lighttpd. A mucha gente le gusta Litespeed (reemplazo directo de Apache).
Si desea seguir con Apache, considere ajustarlo lo mejor que pueda. Considere deshabilitar .htaccess. Aquí hay una buena explicación de por qué.
Solución 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 puede hacer este tipo de cosas de forma automática y transparente en función de los registros del sistema.
Solución 4:
Para controlar o bloquear el tráfico http, puede usar:
- módulo de apache.
- iptable
- fail2ban como se indica aquí por HopelessN0ob.
Sin embargo, tenga en cuenta que esta herramienta también puede bloquear o ralentizar a las arañas web y, por lo tanto, afectar el SEO.