Cómo usar CONNLIMIT para limitar conexiones

Cómo usar CONNLIMIT para limitar conexiones

Mensagempor cemaraya » Dom Jan 27, 2008 6:16 pm

Después de investigaciones aquí en el foro sobre reglas de cómo controlar la cantidad de conexiones abiertas, llegué a un conjunto de reglas que hoy las utilizo y con plena funcionalidad.
Esas reglas están proyectadas para controlar conexiones P2P, o sea el cliente puede abrir centenares de conexiones HTTP, SMTP, DNS, POP3 (todas debajo del 1024).
En la opción “Configuración Avanzada de Firewall” seleccione “Editar Reglas Personalizadas” y coloque en el final:


# limite de conexões
iptables -t mangle -F CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -X CONNLIMIT
iptables -t mangle -N CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP



Explicación de lo que estas reglas hacen:

iptables -t mangle -F CONNLIMIT
# Da un flush en las reglas de la Chain CONNLIMIT

iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
# Apaga la regla (asi, cuando das un reload en el firewall, esta regla no se repetirá)

iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
# Misma descripción de la anterior

iptables -t mangle -X CONNLIMIT
# excluye la chain CONNLIMIT

iptables -t mangle -N CONNLIMIT
# Crea la Chain CONNLIMIT

iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
# Avisa a la Chain POSTROUTING que cuando hubiera una conexión, cuya puerta destino vaya desde 1024 a 1862, la redireccione a Chain CONNLIMIT

iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
# Aquí cabe la misma descripción que para la regla anterior, solo que con las puertas destino entre 1864 a 65535

iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
# Agrega una regla en la Chain CONNLIMIT, indicando que cuando la cantidad de conexiones sea mayor que 10, tratando los IP separadamente, entonces el paquete será descartado (DROP)

Estas reglas se aplican a cada IP separadamente, mas si quisieras hacerlas para la red entera, se escribiría así:
iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP

CUIDADO puesto que asi TODA LA RED SÓLO ABRIRÁ 10 CONEXIONES CONCURRENTES EN ESTE INTERVALO DE PUERTAS AL MISMO TIEMPO.

Ejemplo completo:

# A) Limitar las conexiones para toda la Red Entera
iptables -t mangle -F CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -X CONNLIMIT
iptables -t mangle -N CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP

# B) Limitar las conexiones IP x IP
iptables -t mangle -F CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -X CONNLIMIT
iptables -t mangle -N CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1024:1862 -j CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 --dport 1864:65535 -j CONNLIMIT
iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP


# C) Limitar las conexiones en TODAS las puertas
iptables -t mangle -F CONNLIMIT
iptables -t mangle -D POSTROUTING -p TCP -d 0/0 -j CONNLIMIT
iptables -t mangle -X CONNLIMIT
iptables -t mangle -N CONNLIMIT
iptables -t mangle -A POSTROUTING -p TCP -d 0/0 -j CONNLIMIT
iptables -t mangle -A CONNLIMIT -p TCP -m state ! --state RELATED -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP

NO USAR TODAS JUNTAS... A o B o C !!!

Importante:
Tiene que estar instalado el Addon Advanced Router
Addon: http://www.brazilfw.com.br/downloads/ad ... vroute.tgz

Edicion 5/7/08
Si por algun motivo, las reglas dan error, agregar esto delante de cada renglon....
/usr/sbin/iptables -t mangle -F CONNLIMIT
/usr/sbin/iptables -t mangle -X CONNLIMIT
.... etc
cemaraya
 

Voltar para Varios tutoriales

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante