Lo que necesito :

Lo que necesito :

Lo que necesito :

Hay muchos resultados para agregar reglas de eliminación según una cantidad de solicitudes por período de tiempo, pero necesito eliminar según el recuento de bytes recibidos desde una dirección particular durante un período de tiempo.

Lo que investigué:

Miré iptables: para el primer caso, vi un dedicadofósforo. También vi elpartido de cuotapero el recuento de datos se realiza un seguimiento global.
No tengo idea de cómo combinar las dos reglas para rastrear los datos recibidos por IP.

Otras cosas :

Soy consciente de que el seguimiento del recuento de bytes por IP puede consumir una gran cantidad de memoria, por eso también quiero que el período sea breve.
Puedo aceptar otros métodos, siempre que haya un ejemplo detallado.

Respuesta1

Puede utilizar IPSET con opciones de tiempo de espera y contador. Esto se verá así:

#create ipset for accounting with default lifetime 300 secs
ipset create IP_QUOTA_SET hash:ip timeout 300 counters

#create separated rule chain
iptables --new-chain PER_IP_QUOTING

#send packets to chain
iptables -t filter -A INPUT \
  -i <in-iface> --dst <ip>  \
  -p tcp --dport <dstport>  \
  -j PER_IP_QUOTING

#if ip doesn't exist in the set, add it
iptables -t filter -A PER_IP_QUOTING    \
  -m set ! --match-set IP_QUOTA_SET src \
  -j SET --add-set IP_QUOTA_SET src --timeout 300

#if packet exists in the set, check bytes
#if byte counter > quota then close connection
#by sending of tcp-reset packet.
iptables -t filter -A PER_IP_QUOTING    \
  -m set --match-set IP_QUOTA_SET src   \
  --bytes-gt 1000 -j REJECT --reject-with tcp-rst

#pass other packets (for debug purpose)
iptables -t filter -A PER_IP_QUOTING \
  -j RETURN

En este caso, puede consultar la lista y editarla mediante el comando ipset. Mostrar la lista actual con contadores y tiempos de espera: ipset list IP_QUOTA_SET.

Para más detalles lea la documentación.

información relacionada