Estoy usando iptables en Ubuntu Server. Es un servidor web en un VPS.
Me gustaría saber si debo limitar los paquetes de velocidad. Si es así, ¿qué debo limitar? ¿Y debo hacerlo globalmente o por dirección IP?
Referencia
vi gente sugiriendo esto:
# Limit packet traffic on a TCP or UDP port:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
# Limit established/related packet traffic:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit $lim/s --limit-burst $lb -j ACCEPT
Lo anterior, un límite de tasa global no parece muy útil, al menos para los casos que puedo imaginar. ¿Hay algún caso en el que deba limitar la tasa globalmente?
Creo que un límite de velocidad por IP suele ser mejor:
# Add the IP to the list:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --set --name RATELIMITED
# Drop if exceeded limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -m recent --update --seconds $sec --hitcount $hc --rttl --name RATELIMITED -j DROP
# Accept if inside limit:
iptables -A INPUT -p $proto --destination-port $port --syn -m state --state NEW -j ACCEPT
Pregunta adicional: las IP remotas pueden ser falsificadas. ¿Cómo limitarlos adecuadamente?
Se agregó otra pregunta para esto:
/server/340258/how-to-rate-limit-spoofed-ips-with-iptables
El objetivo
que estoy tratando de mitigar el riesgo de algunos ataques D / DoS y abuso general.
Relacionado
¿Cómo puedo calificar las conexiones de límite SSH con iptables?
PD : Acabo de abrir una pregunta relacionada solo para ICMP e incluye la limitación de velocidad para este protocolo: iptables | Tipos de ICMP: ¿cuáles son (potencialmente) dañinos?
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 syn como
solo un cliente con la línea de comando hping puede eliminar 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:
Es mejor usar hashlimit para limitar las conexiones TCP entrantes por dirección IP . La siguiente regla coincidirá solo si se recibirán 30 paquetes por segundo, reduciendo el número de paquetes autorizados por IP a 15 paquetes por segundo.
De hecho, estoy CONVENCIDO de que muchos servidores que se desactivan hoy no se eliminan por falta de recursos durante un ataque, sino porque el módulo de límite elimina todo el tráfico entrante.
fuente
Normalmente limito las reglas de limitación de velocidad a los servidores que espero tener:
Por ejemplo, la página de inicio de sesión de un panel de control de alojamiento, POP3, IMAP, SSH, etc. Por lo general, dejo los servicios HTTP abiertos y solo bloqueo si hay un problema.
No desea dejar caer buen tráfico web. Un enlace en slashdot podría enviarle toneladas de tráfico y, con las reglas globales, es posible que no se dé cuenta de un problema.
Con respecto a las IP falsificadas, no se pueden bloquear con este método y, por lo general, no son una preocupación, ya que estas reglas se centran principalmente en limitar las conexiones TCP establecidas. Con una IP falsa, la conexión TCP nunca se puede establecer.
fuente