iptables: module récent

J'utilise le module "récent" pour empêcher l'parsing des ports, par exemple:

-A INPUT -i eth0 -m recent --name PORTSCAN --update --seconds 60 -j DROP -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m recent --name PORTSCAN --set -j DROP 

L'option --update , contrairement à son nom (c'est-à-dire, met à jour l'ancienne valeur avec un nouveau), ne met pas à jour l'input la plus récente, mais en ajoute une autre. Dans ma configuration simple, je ne suis intéressé que par la dernière input. Je n'ai pas besoin de l'historique complet des packages (c'est-à-dire des statistics).

Y at-il un moyen, je ne pouvais garder que le dernier package vu? Il y avait une option --reap , mais AFAIK a été supprimé.

Ce qui m'inquiète, c'est que sur un server occupé, la list PORTSCAN pourrait rapidement grossir. Je ne sais pas quelle est la limite, mais je suis sûr qu'il doit y avoir une limite.

Quelqu'un pourrait-il vous conseiller?

Si vous jetez un coup d'œil à la page man pour iptables, en particulier la section modules recent , il y a quelques parameters qui vous donneront le contrôle que vous searchz:

extrait de la section recent module iptables

Le module accepte lui-même les parameters, les valeurs par défaut sont affichées:

  ip_list_tot=100 Number of addresses remembered per table. ip_pkt_list_tot=20 Number of packets per address remembered. 

Ainsi, en fonction de ces deux parameters, vous pouvez contrôler le nombre d'adresses IP et les numéros de packages que le module recent va «mémoriser».

Rappelez-vous qu'il s'agit d'un module du kernel. Pour appliquer ces parameters, vous devez soit les définir au moment du chargement du module, comme suit:

 /sbin/modprobe ipt_recent ip_list_tot=2000 ip_pkt_list_tot=255 

Sur mon système Fedora 14, le module s'appelle en fait xt_recent , vous pouvez voir quels types de parameters il peut prendre en utilisant modinfo :

 $ modinfo xt_recent filename: /lib/modules/2.6.35.14-106.fc14.x86_64/kernel/net/netfilter/xt_recent.ko alias: ip6t_recent alias: ipt_recent license: GPL description: Xtables: "recently-seen" host matching author: Jan Engelhardt <jengelh@medozas.de> author: Pasortingck McHardy <kaber@trash.net> srcversion: 00B9A3AB999488BFEB4FA6A depends: vermagic: 2.6.35.14-106.fc14.x86_64 SMP mod_unload parm: ip_list_tot:number of IPs to remember per list (uint) parm: ip_pkt_list_tot:number of packets per IP address to remember (max. 255) (uint) parm: ip_list_hash_size:size of hash table used to look up IPs (uint) parm: ip_list_perms:permissions on /proc/net/xt_recent/* files (uint) parm: ip_list_uid:default owner of /proc/net/xt_recent/* files (uint) parm: ip_list_gid:default owning group of /proc/net/xt_recent/* files (uint) 

Vérification des parameters xt_recent

Tous les parameters de ce module sont conservés sous le /sys/module/xt_recent . Plus précisément, les parameters que vous y laissez sont conservés ici:

 $ ls -1 /sys/module/xt_recent/parameters/ ip_list_gid ip_list_hash_size ip_list_perms ip_list_tot ip_list_uid ip_pkt_list_tot 

Tous les parameters peuvent être vérifiés simplement en cochant les files de ce directory, par exemple:

 cat /sys/module/xt_recent/parameters/ip_pkt_list_tot 

Cela nous indique donc que la valeur par défaut du paramètre ip_pkt_list_tot est 20.