¿Qué técnicas y/o módulos están disponibles para implementar una limitación de velocidad robusta (solicitudes | bytes/ip/unidad de tiempo) en apache?¿Cómo puedo implementar la limitación de velocidad con Apache? (solicitudes por segundo)
Respuesta
La mejor
- mod_evasive (se centró más en la reducción de la exposición DoS)
- mod_cband (mejor equipado para el control 'normal' de ancho de banda)
y el resto
No pude encontrar nada para limitar las conexiones por día por dirección IP. Pasé toda la noche buscando, es una pena. – Greg
¿Alguien sabe si hay una manera de hacer que mod_evasive mire un encabezado en lugar de la IP, para cuando se ejecuta detrás de un proxy inverso? –
@StavrosKorokithakis Quizás esto ayude? http://stderr.net/apache/rpaf/ Creo que hará que la IP X-Forwarded aparezca como si fuera la IP de origen de todos los módulos de Apache cargados después de ella. – Eli
En Apache 2.4, hay una nueva acción módulo llamado mod_ratelimit. Para emular velocidades de módem, puede usar mod_dialup. Aunque no veo por qué no puedes usar mod_ratelimit para todo.
Tenga en cuenta que mod_dialup utiliza un estado asincrónico 'SUSPENDED', no desperdiciando threads en espera, mientras que mod_ratelimit, a partir de ahora, es estrictamente thread-per-connection. cf. http://thread.gmane.org/gmane.comp.apache.cvs/20490 – ArtemGr
Una opción más - mod_qos
No es fácil de configurar - pero de gran alcance.
Como se indica en this blog puesto que parece posible utilizar Apache de mod_security para implementar un límite de velocidad por segundo.
La configuración es algo como esto:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
Esto fue perfecto para mí, con modsec2 ya en funcionamiento.Solo tuve que agregar identificadores a las reglas para que coincidan con la versión de modsec, así:
También tenga en cuenta que puede cambiar la cantidad de solicitudes de ráfagas iniciales permitidas editando el "@gt 60", así como también la rapidez con que "recarga" el límite editando el ip.somepathcounter = 1/1 bit. 1/1 permite una solicitud adicional por segundo. 1/2 permite una solicitud adicional cada 2 segundos, etc. –
Apache 2.4 se quejará del 509 en ErrorDocument, una opción lo cambia a 429 (que, por supuesto, no es compatible con Apache 2.2). Además, todos SecAction y SecRule-s necesitan una identificación desde mod_security 2.7. – Mrten
Lamentablemente, mod_evasive
no funcionará como se espera cuando se utiliza en configuraciones no prefork (recientes configuraciones de Apache son principalmente MPM)
Hay numerosos camino incluyendo cortafuegos de aplicaciones web, pero lo más fácil de implementar si se usa un mod Apache.
Una de esas modificaciones que me gusta recomendar es mod_qos. Es un módulo gratuito que es muy eficaz contra los ataques tipo certin DOS, Bruteforce y Slowloris. Esto aliviará bastante su carga de servidor.
Es muy potente.
La versión actual de la mod_qos módulo implementa mecanismos de control para gestionar:
El número máximo de solicitudes simultáneas a una ubicación/recurso (URL) o host virtual.
Limitación del ancho de banda como número máximo permitido de solicitudes por segundo a una URL o el máximo/mínimo de kbytes descargados por segundo.
Limita el número de eventos de solicitud por segundo (solicitud especial condiciones).
- Limita el número de eventos de solicitud dentro de un período de tiempo definido.
- También puede detectar personas muy importantes (VIP) que pueden acceder al servidor web sin o con menos restricciones.
Línea genérica de solicitud y filtro de encabezado para denegar operaciones no autorizadas de .
Solicitar limitación y filtrado de datos corporales (requiere mod_parp).
Limita el número de eventos de solicitud para clientes individuales (IP).
Limitaciones en el nivel de conexión TCP, por ejemplo, el número máximo de conexiones permitidas desde una única dirección IP de origen o dinámico mantener vivo el control.
- Prefiere las direcciones IP conocidas cuando el servidor se queda sin conexiones TCP libres.
Esta es una configuración de muestra de lo que puede usar. Hay cientos de configuraciones posibles para satisfacer sus necesidades. Visite el sitio para obtener más información sobre los controles.
Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate 120
# limits the connections for this virtual host:
QS_SrvMaxConn 800
# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose 600
# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP 50
# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.
este solo funciona en apache2.2 antiguo no funciona en apache2.4 +, ¿o sí? – BOBO
- 1. ¿Solicitudes de limitación por dirección IP en Apache?
- 2. ¿Cómo obtener "solicitudes por segundo" para Apache en Linux?
- 3. ¿Cómo implementar la limitación de velocidad basada en un token de cliente en Spring?
- 4. ¿Cuáles son las formas más comunes de implementar la limitación de velocidad/solicitud de API web?
- 5. Amazon S3: solicitudes PUT máximas por segundo
- 6. ¿Cuál es la mejor manera de implementar un algoritmo de limitación de velocidad para las solicitudes web?
- 7. Limitación de velocidad para controladores de rieles
- 8. monitoreando las solicitudes de tomcat por segundo?
- 9. Limitación de velocidad para evitar un comportamiento malicioso en ExpressJS
- 10. ¿Qué es un buen algoritmo de limitación de velocidad?
- 11. Limitación al generar lista desplegable de Excel con Apache POI
- 12. Limitación de velocidad/prohibición de direcciones IP en IPv6
- 13. ASP.NET con IIS VS PHP con Apache
- 14. ¿Cuántas solicitudes puede manejar SQL Server por segundo?
- 15. ¿Errores de rendimiento de velocidad de Apache?
- 16. ¿Cómo puedo mejorar la velocidad de descarga de scrapy?
- 17. Solicitudes de limitación a Ruby on Rails API
- 18. ¿Cómo puedo competir con la velocidad de xcopy?
- 19. Implementar Django con Gunicorn y APACHE
- 20. ¿Cómo puedo determinar la velocidad de CodeIgniter?
- 21. Limitación de membresía por ancho de banda
- 22. ¿Hay alguna limitación de solicitudes HTTP simultáneas para Silverlight?
- 23. Velocidad de ejecución de la prueba unitaria (¿cuántas pruebas por segundo?)
- 24. Apache Stateche Apache Wicket páginas/solicitudes sin estado
- 25. jQuery - Cómo eliminar la limitación de dominios cruzados
- 26. Apache Benchmark: concurrencia y número de solicitudes
- 27. Limitación de las llamadas salientes a la API generadas por la aplicación Rails
- 28. NSUserDefaults ¿limitación de boolforKey por diseño?
- 29. ¿Cómo puedo rastrear solicitudes intensivas de CPU en mod_perl?
- 30. ¿Cómo puedo implementar en nexus (alojado por secureci)?
estoy usando de [TC] (http://www.lartc.org/howto/lartc.qdisc.classless.html#AEN690) en el servidor web Linux, porque Red Hat 6 solo tiene Apache 2.2. – ceving