La página de manual de UFW menciona que puede configurar la limitación de velocidad de iptables para mí:
ufw admite la limitación de la velocidad de conexión, que es útil para proteger contra ataques de inicio de sesión de fuerza bruta. ufw negará conexiones si una dirección IP ha intentado iniciar 6 o más conexiones en los últimos 30 segundos. Ver http://www.debian-administration.org/articles/187 para más detalles. El uso típico es:
ufw limit ssh/tcp
Lamentablemente, esta es toda la documentación que pude encontrar. Me gustaría seguir con UFW, y no usar comandos iptables más complicados (para mantener las cosas "sin complicaciones").
¿Cómo usaría ufw para limitar todo el tráfico entrante (no saliente) en el puerto 80 a 20 conexiones por 30 segundos? ¿Cómo deshabilitaría la limitación de velocidad para los puertos 30000 a 30005? ¿La limitación de velocidad está habilitada de forma predeterminada para todos los puertos?
iptable
, iptable es backend de ufw.Como se mencionó en la publicación anterior, puede personalizar las reglas de usuario. Necesito mi límite de velocidad de conexión smtp de hasta 12 conexiones en 6 segundos. Agregué una regla como se muestra a continuación primero. Nota: esto agrega una regla de límite que permite 6 en 30 segundos por defecto
y edité /lib/ufw/user.rules (conservo una copia personalizada de este archivo con muchos otros ajustes) como se muestra a continuación ...
fuente
el límite de velocidad puede modificarse en el archivo de reglas ufw que se puede encontrar /lib/ufw/user.rules. de forma predeterminada, no hay límites habilitados para todos los puertos. debe agregar todos los puertos de forma manual o editando el archivo user.rules.
fuente
Vale la pena señalar posibles consecuencias no deseadas del uso de la función LIMIT de ufw.
Supongamos que uno coloca un límite general en el puerto 22 / tcp como la primera regla de ufw:
con la suposición de que cualquier conexión que opere por debajo del límite aún podría filtrarse siguiendo las reglas de ufw y finalmente la política predeterminada de "denegar (entrante)".
Al menos para ufw 0.35, esa suposición sería incorrecta. De hecho, la lógica LIMIT IN acepta inmediatamente cualquier entrada no rechazada por el criterio de límite.
En psuedocode, la lógica LIMIT es
if CONDITION then DENY else ACCEPT
mientras que otras reglas de ufw parecen tener lógica:
if CONDITION then (DENY|ACCEPT) else continue to next rule
.Personalmente, descubrí que se trataba de un comportamiento inesperado para ufw LIMIT, que solo descubrí al encontrar inesperadamente muchos intentos de inicio de sesión en el puerto 22 en el archivo de registro del sistema, lo que nunca debería haber sucedido debido al filtrado por otras reglas de ufw.
Detalles de confirmación de comportamiento
Las líneas relevantes de código de iptables insertadas por ufw son las siguientes:
La lista anterior se puede crear con
Las dos primeras líneas son consecutivas en las
ufw-user-input
que se puede confirmar confuente