Ceci est une ancienne révision du document !
Il est parfois nécessaire de bloquer des adresses IP avec lesquelles le système Linux communique par défaut: on peut vouloir bannir certains hôtes ayant tenté des attaques contre le système par exemple.
Sous Linux bannir une adresse IP individuellement peut se faire simplement via la commande iptables
sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP # Pour bannir un bloc d'adresses ou un réseau sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP
Cependant si l'on cherche à bannir un millier d'adresses n'ayant pas de préfixe CIDR commun, il nous faudra créer un millier de règles via iptables.
Les IP sets (ou ensembles IP) permettent de répondre précisément à cette problématique. ce sont des groupes d'éléments (des IP, des adresses MAC, ou ports indépendants) encodés et stockés dans des structures de données de type tables de hachage exploitables efficacement par netfilter.
Une fois que l'ensemble créé, il peut être utilisé par les règles iptables.
Installer via le gestionnaire de paquetage:
sudo apt-get install ipset
On commence par créer un nouvel ensemble, ici on le nomme “set_banished_ip”:
sudo ipset create set_banished_ip hash:net
L'argument hash:net est obligatoire, il indique le type d'ensemble à créer.
Pour lister les ensembles définis:
sudo ipset list