Dois-je restaurer les règles iptables à chaque démarrage?

18

Chaque fois que je redémarre, je perds les règles iptables qui m'ont mis si longtemps à entrer. Je sais que je peux les enregistrer et les restaurer au démarrage , mais est-il possible de les enregistrer pour toujours? Dois-je vraiment les restaurer au démarrage à chaque fois? Sérieusement?

Le problème est que j'ai une énorme liste d'adresses IP dans lesquelles j'utilise une boucle while pour les charger. Cela peut prendre plus de 10 minutes.

Ceci est mon serveur FTP domestique. C'est un petit vm avec 1 Go de RAM et très peu de puissance de traitement. Il y a tellement d'adresses IP parce que j'ai à peu près abandonné sur le continent asiatique. Je n'ai pas besoin qu'ils frappent mon serveur FTP tous les jours avec force brute. Je bloque également le gouvernement. moniteurs, trackers et spammeurs.

C'est la boucle while que j'utilise pour charger dans la liste.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
capdragon
la source
Votre question est un peu ambiguë, lorsque vous dites «les enregistrer pour toujours», je pensais que vous vouliez dire dans un fichier, mais après avoir lu le reste, cela ressemble à ce que vous voulez dire, c'est que vous ne voulez pas avoir à les recharger manuellement au démarrage à chaque fois. De plus, je pense que le nombre de règles qui doivent être rechargées sera le même, donc cela prendra encore un certain temps, mais vous n'aurez pas à le faire manuellement, selon la réponse de pankaj.
Jeff Welling
Eliah Kagan

Réponses:

21

Créez d'abord un fichier avec le contenu de iptables-save:

sudo iptables-save > /etc/iptables_rules

Peu importe où vous placez le fichier, tout ce que vous avez à faire est de vous assurer que la ligne suivante fait référence au même fichier. Ensuite, ouvrez /etc/rc.localet ajoutez cette ligne:

/sbin/iptables-restore < /etc/iptables_rules

À partir de maintenant, chaque fois que votre ordinateur s'allumera ou redémarrera, iptables chargera les règles à partir du fichier que vous avez spécifié.

pankaj sharma
la source
1
J'obtiens -bash: /etc/iptables_rules: Permission deniedla première commande. Ce qui est bizarre en utilisant sudo et tout.
capdragon
5
J'ai dû utiliser sudo sh -c '/sbin/iptables-save > /etc/iptables.save'pour contourner l' Permission deniederreur. Référence
capdragon
vous pouvez créer un fichier dans n'importe quel répertoire, il n'est pas obligatoire de créer un fichier dans / etc /
pankaj sharma
8
Je ne recommanderais pas d'utiliser /etc/rc.localpour cela. Il est exécuté plus tard que le reste du démarrage de votre système et laisse potentiellement votre système dans un état sans pare-feu. Je suggère de placer ce script d'une ligne dans /etc/network/if-up.d/firewall(nouveau fichier). Cela garantit qu'il sera exécuté à chaque fois que vous activez vos interfaces réseau.
gertvdijk
2
L'erreur d'autorisation est normale / attendue. sudo s'applique uniquement à la commande précédant le ">", la redirection de fichiers se fait séparément par votre shell.
ImaginaryRobots
16
apt-get install iptables-persistent

Lors de l'installation, il devrait enregistrer votre configuration iptables actuelle. Sinon, vous pouvez les enregistrer dans ces fichiers (selon v4 ou v6) et iptables-persistent les chargera au démarrage :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Matt Fletcher
la source
1

Si vous avez beaucoup de règles, vous devriez également envisager d'utiliser ipset en conjonction avec iptables. Ipset utilise une table de base de données indexée et est beaucoup plus rapide que iptables lors de la recherche d'une adresse pour décider d'accepter ou de refuser.

http://ipset.netfilter.org/index.html

Bob Brunius
la source