Uno de mis servidores LAMP fue derribado recientemente por algún tipo de robot de script en busca de exploits. Por lo que parece, estaba haciendo tantas solicitudes por segundo, que sobrecargó la RAM en el servidor y derribó todo mi sitio durante una hora. Ese "ataque" todo vino de una sola dirección IP.
Entonces, ¿cómo puedo bloquear automática y temporalmente una dirección IP que genera demasiados resultados en mi servidor LAMP en un corto período de tiempo? ¿Cuál es la mejor herramienta para el trabajo? ¿Debería resolverlo a nivel del sistema operativo o mediante PHP?
Debe evitar intentar hacer esto con PHP. Para cuando PHP se involucra, ya es demasiado tarde: la memoria ya ha sido asignada.
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 firewall. Como mínimo, iptables (firewall de Linux) es lo que desea usar. Hay herramientas que otros han mencionado, como Fail2Ban, que pueden automatizar esto por usted. El firewall externo sería mejor.
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, un 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 cuanto a recursos. Nginx es mi favorito. También hay Lighttpd. A mucha gente le gusta Litespeed (reemplazo de Apache).
Si quieres seguir con Apache, considera ajustarlo lo mejor que puedas. Considere deshabilitar .htaccess. Aquí hay una buena explicación de por qué .
fuente
Para controlar o bloquear el tráfico http, puede usar:
Sin embargo, tenga en cuenta que esta herramienta también podría bloquear / ralentizar a las webspiders y, por lo tanto, afectar el SEO.
fuente
ossec puede hacer este tipo de cosas de forma automática y transparente según los syslogs.
fuente
man iptables
y ver qué significa cada bandera y cómo funcionan juntas.NoooBS,
--- inundación ---
iptables -N logdrop iptables -A logdrop -m reciente --set --name lista negra
iptables -A logdrop -m limit --limit 1 / s --limit-burst 1 -j LOG --log-prefix "Flood:"
iptables -A logdrop -j DROP
iptables -N ddos iptables -A ddos -m reciente --rcheck --name blacklist --seconds 300 --hitcount 1 -j logdrop iptables -A ddos -m Recent --set --name again iptables -A ddos -m Recent --update --name again --seconds 60 --hitcount 2 -j logdrop iptables -A ddos -j RETURN
fuente