Combien d'instructions peuvent être insérées dans iptables sans perdre la raison du système?

9

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?

Tzury Bar Yochay
la source
2
Il semble que vous ayez trouvé la réponse à votre question. Si c'est le cas, vous devez déplacer la réponse hors de votre question et utiliser le bouton "Répondre à votre question" et y poster la réponse. Ensuite, vous pouvez accepter votre réponse et les choses seront beaucoup mieux organisées.
Scott Severance
@ScottSeverance fait comme vous le suggérez, cependant, il faut 4 heures pour que l'on puisse accepter la réponse automatique.
Tzury Bar Yochay

Réponses:

8

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:

  • Stockez plusieurs adresses IP ou numéros de port et comparez-les à la collection par iptables d'un seul coup;
  • Mettez à jour dynamiquement les règles iptables par rapport aux adresses IP ou aux ports sans perte de performances;
  • Exprimez des ensembles de règles complexes basés sur des adresses IP et des ports avec une seule règle iptables et profitez de la vitesse des ensembles IP

L'installation de l'ipset est simple sudo apt-get install ipset

Exécutez ensuite ce qui suit

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

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.

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

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:

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

Pour vérifier l'exécution:

ipset -L autoban
Tzury Bar Yochay
la source
Merci d'avoir répondu. Voici un rapide tutoriel sur l'ipset pour ceux qui ne connaissent pas l'ipset (comme moi 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong