GNU/Linux >> Tutoriales Linux >  >> Linux

¿Debo limitar la velocidad de los paquetes con iptables?

Un límite de tasa no es una prevención, sino una invitación a DoS, especialmente en el tipo presentado anteriormente donde los paquetes se descartarán si se supera una cierta tasa de paquetes no autenticados sin información de estado. Dado que todos pueden falsificar paquetes (incluidas las direcciones IP de origen) en este estado de conexión sin mayor esfuerzo, surgirá un nuevo vector de ataque DoS que aprovechará su capacidad de límite de velocidad.

Por lo general, un límite de tasa solo tendrá sentido si tiene

  1. ya sea un límite predecible de conexión fuerte o blanda en su configuración
  2. establezca el límite de velocidad para el tráfico general por debajo de este límite para poder configurar conexiones para tráfico prioritario o administrativo independientemente de la carga

Si bien 1. a menudo es lo suficientemente difícil de determinar como para molestarse, 2. obviamente solo funcionará si puede diferenciar de manera confiable el tráfico "prioritario o administrativo" del resto al configurar la conexión, p. si viene a través de una interfaz de red diferente.

En otros casos, preferiría reducir la resistencia de su sistema en lugar de aumentarla.


El problema con el límite -m es la limitación de todos los paquetes TCP, independientemente de las direcciones IP de origen. Entonces, si tiene una limitación baja para paquetes de sincronización como

-A INPUT -p tcp  --syn -m limit --limit 30/s --limit-burst 30 -j ACCEPT
-A INPUT -p tcp --syn -j DROP

solo un cliente con la línea de comando hping puede desactivar su servidor enviando tantos paquetes tcp con el indicador SYN porque la regla de límite coincidirá y eliminará muchos paquetes independientemente de las direcciones IP de origen. límite no hace diferencia entre buen tráfico y mal tráfico. También eliminará el buen tráfico entrante.

hping podría ser algo como:

hping thetargetedhostip -p 80 -S -c 1000 -i u20000

Es mejor usar hashlimit para limitar las conexiones tcp entrantes por dirección IP . La siguiente regla coincidirá solo si se reciben 30 paquetes por segundo, lo que reduce la cantidad de paquetes autorizados por IP a 15 paquetes por segundo.

-A INPUT -p tcp --syn -m hashlimit --hashlimit 15/s --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-srcmask 32 --hashlimit-name synattack -j ACCEPT 
-A INPUT -p tcp --syn -j DROP

De hecho, estoy CONVENCIDO de que muchos servidores que se desconectan hoy no se deben a que se quedaron sin recursos durante un ataque, sino a que el módulo de límite elimina todo el tráfico entrante.


Linux
  1. Reenviar el tráfico http a otra dirección IP con iptables

  2. Limite el acceso SSH a clientes específicos por dirección IP

  3. Permitir FTP con IPTables

  4. Cómo configurar un servidor Linux como un enrutador con NAT

  5. ¿Cómo comprimir archivos con un límite de tamaño?

Cómo ejecutar un comando con límite de tiempo (tiempo de espera) en Linux

Análisis de tráfico de red con tcpdump

Cómo proteger un firewall de Linux con reglas de IPTables

Ejecutar comandos con límite de tiempo en Ubuntu 20.04

Supere el límite de 2 GB creando archivos PDF con ImageMagick

¿Cómo puedo portar hacia adelante con iptables?