2008-09-25 19 views

Respuesta

48

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

+10

No pude encontrar nada para limitar las conexiones por día por dirección IP. Pasé toda la noche buscando, es una pena. – Greg

+1

¿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? –

+1

@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

5

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.

+0

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

15

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" 
+1

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í: SecAction initcol: ip =% {REMOTE_ADDR}, pase, nolog, id: 10000001 SecAction "phase: 5, deprecatevar: ip.somepathcounter = 1/1, pase, nolog, id: 10000002 " SecRule IP: SOMEPATHCOUNTER" @gt 60 "" fase: 2, pausa: 300, denegar, estado: 509, setenv: RATELIMITED, saltar : 1, nolog, id: 10000003 " SecAction" fase: 2, pase, setvar: ip.somepathcounter = + 1, nolog, id: 10000004 " Encabezado siempre establecido Reintentar-Después" 10 "env = RATELIMITED

+1

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. –

+0

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

5

Lamentablemente, mod_evasive no funcionará como se espera cuando se utiliza en configuraciones no prefork (recientes configuraciones de Apache son principalmente MPM)

9

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. 

http://opensource.adnovum.ch/mod_qos/

+0

este solo funciona en apache2.2 antiguo no funciona en apache2.4 +, ¿o sí? – BOBO

Cuestiones relacionadas