Ayuda:Cómo bloquear un rango

Una de las herramientas de las que se dispone para detener vándalos persistentes es el bloqueo de rangos de IP (range blocks). El propósito de este documento es presentar un panorama simplificado sobre el tema.

IPs y rangos

Decimos que dos IPs son más cercanas mientras más coincidan «a la izquierda». Por ejemplo entre las IP

  • 84.77.144.23
  • 84.77.144.215
  • 84.79.144.23

La primera está más cerca de la segunda que de la tercera (aunque la diferencia 215-23 es mayor que 79-77) puesto que las primeras dos tienen más elementos similares a la izquierda. Esto suele indicar que las primeras dos forman parte de una misma red (independientemente de su posición geográfica).

El bloqueo de rango permite bloquear un grupo de IP consecutivas (cercanas) en una sola operación, pudiendo abarcar el bloqueo desde 2 hasta 65 mil IP. La diferencia entre un bloqueo de rango y un bloqueo de IP es que en el primer caso, se añade un sufijo a la IP indicando el tamaño del bloque de IP consecutivas.

Ejemplo:

Bloquear 84.120.26.151/24 equivale a bloquear todas las IP de la forma: 84.120.26.*

  • El sufijo /24 indica que se bloquearán 256 IP, desde 84.120.26.0 hasta 84.120.26.255

La observación (y el motivo por el que los bloqueos de rangos sean tan injustamente incomprendidos) es que el bloqueo 84.120.26.151/24 no significa «bloquear 256 IP a partir de 84.120.26.151» sino «bloquear el grupo de 256 IP que contiene a 84.120.26.151»

Tamaño de los rangos

Como ya se dijo, el tamaño del bloque de IP viene dado por el sufijo. Los rangos más comunes son /24 (256 ips) y /25 (128 ips).

Hay dos principios:

  • A mayor sufijo, menor rango.
  • Restar 1 del sufijo duplica el rango.

Bajo esos principios se construye la tabla:

/31 = 2 IPs
/30 = 4 IPs
/29 = 8 IPs
/28 = 16 IPs
(...)
/25 = 128 IPs
/24 = 256 IPs
/23 = 512 IPs
(...)
/17 = 32 768 IPs
/16 = 65 536 IPs

Dado que el tamaño del rango crece exponencialmente, hay que tener cuidado en no dejarse llevar y poner un bloqueo a un rango más allá del necesario para detener el vándalo (una diferencia de 3 en el sufijo causa un bloqueo 8 veces mayor del necesario, con el consiguiente riesgo de ocho veces más daño colateral).

La parte más intimidante (y ciertamente la más técnica) es la de determinar el tamaño correcto de un bloqueo. Existe una herramienta en WMF Labs que calcula el mínimo rango que cubre todas las IP que se indican. El problema es que al calcular un rango único, suele resultar en un bloqueo mucho mayor del necesario.

En general, es mejor aplicar varios bloqueos a rangos pequeños que cubran las IP. Antes de indicar cómo se hace en la práctica con un ejemplo, una breve digresión para explicar el cálculo detallado de los límites.

Límites de los rangos

El aspecto más complejo (y ciertamente el más técnico) del tema de los rangos es la determinación de sus límites.

Consideremos el bloqueo 10.23.15.174/27. Como el sufijo es 27, sabemos que equivale a bloquear 32 IP. Pero ¿qué IP quedarán bloqueadas?

Si respondes: "las IP entre 10.23.15.174 y 10.23.15.205" estás equivocado. El mantra es:

El bloqueo se aplica al rango que contiene a la IP, no al rango que inicia en la IP.

La forma correcta de determinar manualmente los límites es la siguiente.

  1. A partir del sufijo se determina el tamaño.
  2. Se encuentra el múltiplo del tamaño que no excede a la IP dada.
  3. El rango bloqueado va desde ese múltiplo hasta el siguiente menos 1.

Ejemplos

  • Determinar los límites de 10.23.15.174/27:
  1. En el ejemplo, /27 = 32 IP es el tamaño.
  2. El múltiplo de 32 anterior a 174 es 160.
  3. El rango bloqueado es entonces 10.23.15.160 hasta 10.23.15.191

Nota que al importar sólo los múltiplos anterior y siguiente, se sigue que un mismo bloqueo de rango se puede indicar de varias formas. Así:

10.23.15.174/27
10.23.15.168/27
10.23.15.190/27
10.23.15.160/27
10.23.15.175/27
10.23.15.191/27

Son todos equivalentes y bloquean el mismo rango de IP.

  • Determinar los límites de 223.54.130.78/25
  1. El tamaño es /25 = 128 IPs.
  2. El múltiplo de 128 anterior a 72 es 0.
  3. El rango bloqueado es entonces 223.54.130.0 hasta 223.54.130.127
  • Determinar los límites de 66.252.102.64/27
  1. El tamaño es /27 = 32 IP.
  2. El múltiplo de 32 que no excede a 64 es 64 mismo.
  3. El rango bloqueado es entonces 66.252.102.64 hasta 66.252.102.95
  • Determinar los límites de 88.24.182.47/20
  1. Como /20 = 4096 IP es mayor a 256, el procedimiento se calcula en el penúltimo octeto. 4096 = 16*256. Por tanto el tamaño es 16 "en el tercer octeto".
  2. El mayor múltiplo de 16 que no excede 182 es 176.
  3. Por tanto el bloqueo afecta a todas las IP en: 88.24.176.* - 88.24.191.*, es decir, desde 88.24.176.0 hasta 88.24.191.255
  • Determinar los límites de 84.122.204.96/24

El caso /24 es el más común y el más sencillo.

Como /24 = 256, se sigue que el bloqueo aplica en 84.12.204.* (es decir, desde 84.12.204.0 hasta 84.12.204.255)

Recordando que cualquier IP del rango es equivalente, el mismo bloqueo puede indicarse como 84.122.204.20/24, 84.122.204.145/24, 84.122.204.0/24, etc.

Ejemplo práctico

Supongamos que se está recibiendo vandalismo persistente de las siguientes IP:

Primer camino (  Incorrecto)

El primer impulso podría ser bloquear 84.120.*.* y 84.127.*.* a través de

  • 84.120.1.1/16
  • 84.127.1.1/16

Este es un bloqueo terrible, ya que afecta innecesariamente a más de 130 mil IP.

Segundo camino (  Incorrecto)

Una opción más simple es usar el calculador de rangos mencionado arriba. Pero si copiamos todas las IP en la caja y presionamos "calcular", obtendremos:

"Range 84.120.0.0/13 (up to 524288 users would be blocked)"

El cual es todavía peor (de hecho un bloqueo /13 no es permitido por el sistema), ya que bloquearía medio millón de usuarios.

Tercer camino (  Menos incorrecto)

Notemos que las IP vienen en 2 tipos: las que inician en 84.120 y las que inician en 84.127. Entonces usaremos el calculador de rangos 2 veces, una para el primer grupo de IP (84.120), arrojando como resultado:

"Range 84.120.24.0/21 (up to 2048 users would be blocked)"
"Range 84.127.16.0/21 (up to 2048 users would be blocked)"

Es decir, sólo se bloquearían 4000 IPs, en vez de 130 000.

Cuarto camino (  Más fácil y más seguro).

La forma sencilla y más segura, consiste en aplicar únicamente bloqueos tamaño /24 (porque así cada bloqueo afecta sólo a 256 ip).

Así, en el ejemplo se bloquearía para el primer grupo de IP:

84.120.25.1/24 84.120.28.1/24 84.120.30.1/24

Resultando en aproximadamente 750 IP bloqueadas en vez de las 2000 que causaría 84.120.24.0/21.

Este camino además de seguro es más sencillo, puesto que no es necesario usar herramientas externas ni hacer cálculos, sólo se reemplaza el octeto final por 1/24 y ya.

Otro ejemplo

Supongamos que hay vandalismo desde las IP

  • El primer camino es bloquear 172.16.*.* (con 172.16.0.0/16) lo cual bloquearía 65000 IP.   Pésimo
  • Aplicando directamente el calculador de rangos obtendríamos 172.16.32.0/19 que bloquea 8000 IP.   Malo
  • Pero notando que las IP vienen en 3 grupos:
  • 172.16.35.18
  • 172.16.35.130
  • 172.16.35.210
  • 172.16.35.7
  • 172.16.38.52
  • 172.16.38.76
  • 172.16.49.91
  • 172.16.49.39
  • 172.16.49.22
  • 172.16.49.55
  • 172.16.49.12

El cuarto camino (  Fácil y seguro) diría que bloqueemos

  • 172.16.35.0/24
  • 172.16.38.0/24
  • 172.16.49.0/24

Resultando en 750 IP bloqueadas. El bloqueo del calculador era más de 10 veces mayor al necesario.