Supposons que l'on souhaite avoir une liste des adresses IP bloquées.
J'ai vu l'exemple de script suivant:
BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
iptables -A INPUT -s $i -j DROP
iptables -A OUTPUT -d $i -j DROP
done
Est-ce que plusieurs milliers de lignes, qui se transforment en plusieurs milliers d'entrées iptables, sont saines?
Quelle est la limite supérieure, au-delà de laquelle l'efficacité du système sera considérablement affectée?
Réponses:
Je pense avoir trouvé une solution via cet article et IPSet semble être la réponse
En somme:
Si un ensemble d'adresses IP contient des milliers d'éléments, les performances d'iptables diminuent (en fait, les performances de netfilter, dès que iptables n'est qu'un outil pour gérer le pare-feu). Votre charge CPU peut également augmenter. Heureusement, il existe une solution parfaite - ipsets
IPSet est l'outil parfait si vous souhaitez:
L'installation de l'ipset est simple
sudo apt-get install ipset
Exécutez ensuite ce qui suit
Ajoutez-le à votre chaîne iptables. Cela peut varier en fonction des paramètres de votre pare-feu. Ici, nous utilisons la chaîne éthine.
Vous pouvez maintenant ajouter toutes les mauvaises IP à votre ipset. Par exemple, vous avez un fichier texte appelé bots.txt avec une adresse IP par ligne. Vous pouvez donc les ajouter à l'ipset en utilisant un simple script bash:
Pour vérifier l'exécution:
la source