Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Buscador

Entradas Mensuales

Suscripción

¿Quieres recibir las últimas novedades del blog en tu correo?

¡Suscríbete al feed!

Foro de elhacker.net - Noticias

elhacker.NET en Facebook

Entradas populares

PostHeaderIcon Limitar ancho de banda en Apache




Ejemplos de módulos que permiten controlar y gestionar el ancho de banda del servidor web Apache2. También puede ser muy útil para evitar y mitigar ataques DoS (Denegación de Servicio) ya que permite controlar en todo momento el número de peticiones que se realizan y el ancho de banda consumido por petición.






Tenemos varias opciones

  • mod_bandwidth para Apache versión/rama 1.3.x
  • mod_bw para Apache versión/rama 2.x
  • mod_cband para Apache2
  • mod_ratelimit para Apache 2.4.x y 2.5.x
  • mod_qos  para Apache 2 (quality of service (QoS))

mod_bw

Funciona tanto en Windows como en GNU/Linux. En Windows es necesaria la  librería mod_bw-2.0.54.dll

Permite filtrar por vhost, por ip, por ficheros, por directorios, etc

Se compila fácilmente usando apxs2 al igual que muchos otros módulos.

wget http://ivn.cl/files/source/mod_bw-0.92.tgz
tar -zxvf mod_bw-0.92.tgz
cd mod_bw
/usr/local/apache2/bin/apxs2 -i -a -c mod_bw.c

Fichero httpd.conf

Añadir
 
LoadModule bw_module mod_bw.so

BandWidthModule On
ForceBandWidthModule On 
BandWidth all 1500000

En el ejemplo limitará el ancho de banda a 150KB/s.

Permite también limitar el ancho de banda del "upload"  (velocidad de subida)



Ejemplos:

Limita todos usuarios a un máximo de10Kb/s en el vhost :


BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10240
MinBandwidth all -1
Servername www.ehacker.net

Limita usuarios internos (LAN) a 1000 kb/s con un mínimo de 50kb/s , y ficheros más grandes de 500kb a 50kb/s.


BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 50000
Servername www.elhacker.net


Limita ficheros con extensión avi y mpg a 20kb/s.


BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 20000
LargeFileLimit .mpg 1 20000
Servername www.elhacker.net


Filtrando por tipo mime (texto) a 5kb/s


BandwidthModule On
AddOutputFilterByType MOD_BW text/html text/plain
Bandwidth all 5000
Servername www.elhacker.net

Máximo 20 conexiones por ip:

 BandWidth all 0
 MaxConnection all 20



BandWidthModule On
BandWidth all 256000


Descarga:
http://ivn.cl/files/source/mod_bw-0.92.tgz


mod_cband

Instalación:







wget http://dembol.org/downloads/cband/mod-cband-0.9.7.5.tgz
 tar zxvf mod-cband-0.9.7.4.tgz
cd  mod-cband-0.9.7.4
./configure
make
make install


Creación directorio interno:

mkdir /var/run/scoreboard
chown apache:apache /var/run/scoreboard

Limitar Directorio para ver las estadísticas:

SetHandler cband-status
Order deny,allow
Allow from ip
Deny from All


Fichero httpd.conf

LoadModule cband_module /usr/lib/apache2/modules/mod_cband.so

CBandScoreboard /var/run/scoreboard

 Para mejorar el rendimiento:
CBandScoreFlushPeriod 1
CBandRandomPulse On

  • CBandSpeed 512 5 15

Limitaría el ancho de banda total a 512 kbps (kiloBIT), con 5 conexiones por segundo demáximo, y 15 conexiones abiertas y activas en total.

  • CBandRemoteSpeed 15kb/s 3 3

Esto limitaría a cada usuario a 15 kilobit/segundo, con 3 conexiones por segundo y 3 conexiones activas en total.


CBandLimit 200M
CBandScoreboard /var/www/scoreboard
CBandExceededURL http://www.elhacker.net/limite_sobrepasado.html
CBandPeriod 4W


200MB para consumir en 4 semanas (1 mes) y si sobrepasa el tráfico le envíamos a una url de aviso.

Unidades aceptadas en varias directivas:
    • velocidad transferencias:
      • kbps, Mbps, Gbps – multiples of „bits per second”, respectively: 1024, 1024*1024 and 1024*1024*1024 bps
      • kb/s, Mb/s, Gb/s – multiples of „bytes per second”, respectively: 1024, 1024*1024 and 1024*1024*1024 b/s
      • defaults to kbps
    • quotas transferencia:
      • K, M, G – multiples of bytes, respectively: 1000, 1000*1000 and 1000*1000*1000 bytes
      • Ki, Mi, Gi – multiples of bytes, respectively: 1024, 1024*1024 and 1024*1024*1024 bytes
      • defaults to K
  • períodos de tiempo:
    • S, M, H, D, W – multiples de segundos: Segundos, Minutos, Horas, Días, Weeks(semanas); respectively: 1, 60, 3600, 86400, 604800 seconds
    • defaults to S



CBandSpeed 1Mbps 20 40
CBandRemoteSpeed 512kbps 8 10
CBandClassRemoteSpeed bots_class 50kbps 3 4
CBandClassLimit bots_class 500M


    # limit speed of this vhost to 1Mbit/s, 10 request/s, 30 open connections
    CBandSpeed 1Mbps 10 30

    # in addition every remote host connecting to this vhost
    # will be limited to 200kbit/s, 3 request/s, 3 open connections
    CBandRemoteSpeed 200kbps 3 3


Descarga:
http://dembol.org/downloads/cband/mod-cband-0.9.7.5.tgz

mod_ratelimit

 Ejemplo:
<Location /downloads>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 400 
</Location>
 Limitadando directorio descargas a 400KiB/s

mod_qos



Características mod_qos (Quality Of Service), permite controlar:
  • El número máximo de peticiones simultáneas a un lugar / de recursos (URL) o host virtual. 
  • Limitación del ancho de banda, tales como el número máximo permitido de solicitudes por segundo a una dirección URL o el máximo / mínimo de kbytes descargados por segundo. 
  • Limitar el número de solicitud de eventos por segundo (condiciones petición especial). 
  • Limitar el número de sucesos de petición en un plazo de tiempo definido. 
  • También puede detectar personas muy importantes (VIP) o robots de Google, que puede acceder al servidor web sin o con menos restricciones. 
  • Línea de petición genérica y el filtro de cabecera para negar las operaciones no autorizadas. 
  • Solicitud limitación de los datos del cuerpo y filtrado (requiere mod_parp). 
  • Limitar el número de solicitud de eventos para clientes individuales (IP). 
  • Limitaciones en el nivel de conexión TCP, por ejemplo, el número máximo de conexiones permitidas desde una sola dirección IP de origen o de control de mantenimiento de conexión dinámica. 
  • Prioridad sobre las direcciones IP conocidas cuando el servidor se queda sin conexiones TCP libres.
Requisitios previos:

yum install openssl-devel.x86_64

yum install pcre-devel.x86_64
 Instalación:

wget url_descarga
tar -xvzf  mod_qos-11.2.tar.gz
cd mod_qos-11.2/apache2
apxs -i -c  mod_qos.c
Añadimos el módulo DSO en el fichero httpd.conf

LoadModule qos_module /usr/lib64/httpd/modules/mod_qos.so

Ejemplo configuración:

## QoS Configuracion
#Manejo de conexiones hasta 100000 IPs diferentes (por defecto son hasta 50.000 ip's concurrentes)

QS_ClientEntries 100000

# Se permite solamente 50 connexiones por IP
QS_SrvMaxConnPerIP 50

# Máximo número de conexiones TCP activas 256
MaxClients 256

# Desactivar la directiva keep-alive cuando el 70% de las conexiones TCP están ocupadas:
QS_SrvMaxConnClose 70%

# Minimo de velocidad para peticiones / respuestas (niega a los clientes lentos que bloquean el servidor ,

#Ejemplo; el script slowloris mantiene las peticiones HTTP :

QS_SrvMinDataRate 150 1200

# Limite de peticiones de encabezados y cuerpo (con cuidado, limita las cargas y las peticiones POST):

# LimitRequestFields 30

# QS_LimitRequestBody 102400

Permite definir la página de error que verán los clientes "denegados" o enviar un código de respuesta (response http code)

QS_ErrorPage
QS_ErrorResponseCode

Permite reglas condicionales con expresiones regulares.


Permite restringir por países con la directiva:

QS_Country
 ISO 3166 código de país de la dirección IPv4 del cliente. Sólo está disponible si el archivo de base de datos geográfica se ha cargado.
Nota: Puede utilizar la directiva QS_ClientIpFromHeader
para anular la dirección IP del cliente basado en el valor en el encabezado de la solicitud HTTP definido (por ejemplo,X-Forwarded-For) en lugar de tomar la dirección IP del cliente que ha abierto el TCP conexión.


QS_ClientGeoCountryDB

Define la ruta del archivo de base de datos geográfica. El archivo es un archivo de formato de valores separados por comas (CSV) (ejemplo). Cada línea contiene los siguientes campos:

  • Doble comenzando número IPv4 citado del rango de direcciones, por ejemplo, "1052272128" para 62.184.102.0
  • Doble cita termina número IPv4 del rango de direcciones, por ejemplo, "1052272543" para 62.184.103.159.
  • Doble citado código de país ISO 3166, por ejemplo, "FR" para Francia.



Lista blanca de direcciones ip's sin restricciones:
# deshabilitar restricciones para ciertas ip's (lista blanca)
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.