J'ai actuellement cet extrait:
# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X
Y a-t-il une possibilité qu'une règle imperméable reste en vie après avoir exécuté cela?
L'idée est d'avoir une configuration iptables complètement propre, qui peut être facilement remplacée par un nouvel ensemble de règles (routes nevermind/paramètres ifconfig).
Pour répondre à votre question de façon succincte, non: il n'y aurait pas de règles "restantes" après avoir vidé toutes les tables. Cependant, dans l'intérêt d'être approfondi, vous souhaiterez peut-être définir la stratégie pour les chaînes INPUT
et FORWARD
intégrées sur ACCEPT
:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
Effacer les règles ip6tables:
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X
... et cela devrait le faire. iptables -nvL
devrait produire cette sortie (ou très similaire):
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Cela réinitialisera correctement et totalement votre système iptables dans un état très basique:
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
Toutes les politiques seront réinitialisées sur ACCEPT ainsi que le vidage de chaque table en cours d'utilisation. Toutes les chaînes autres que les chaînes intégrées n'existeront plus.
Chaque fois que j'ai besoin du pare-feu désactivé, c'est quelque chose comme ceci:
iptables-save > iptables.bak
service iptables stop
(je suis sur Fedora)Vous pouvez simplement décharger les modules iptables
'du noyau:
modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter
UPD Malheureusement, trop beau pour être vrai. Tant qu'il y a une règle ou une chaîne définie par l'utilisateur dans une table, le nombre de références du module correspondant est 1 et modprobe -r
échoue. Vous pouvez supprimer des règles et des chaînes définies par l'utilisateur comme ceci:
echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore
ou:
iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore
En outre, vous souhaiterez peut-être décharger les modules de cette façon (pas de noms de module de codage en dur):
lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r
Du bon côté, après cette iptables-save
produit une belle sortie vide :)
Sauvegarde la configuration sur iptables_backup.conf et nettoie toutes les règles.
iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore
Pour restaurer la configuration précédente:
iptables-restore < iptables_backup.conf
On peut le faire en 1 ou 2 commandes:
$ Sudo iptables-save > iptables.bak
$ Sudo iptables -F
Résultat:
$ Sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target prot opt in out source destination
J'ai dû bloquer toutes les connexions récemment ce que j'ai fini par faire était
iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP
pour économiser je recommanderais ce qui suit
Ubuntu:
/etc/init.d/iptables save
/sbin/service iptables save
RedHat/CentOS:
/etc/init.d/iptables save
/sbin/iptables-save
En plus de sauvegarder toutes les règles ufw actuelles, je les ai utilisées dans le passé
cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION>
cp /lib/ufw/{user.rules,user6.rules} ./
Je pense que cela peut être utile pour référence future. Je pensais que je partagerais.
Cela a fonctionné pour moi (sur Ubuntu 18.04):
Sudo bash -c "ufw -f reset && iptables -F && iptables -X && ufw allow 22 && ufw -f enable"
Il réinitialise (et désactive) ufw, puis réinitialise iptables en effaçant et en supprimant toutes les chaînes. Ensuite, il active à nouveau l'ufw, mais pas avant d'avoir autorisé le port 22 pour l'accès à distance. Les deux commandes qui nécessitent une confirmation de l'utilisateur sont "forcées", garantissant qu'aucune entrée n'est requise. J'ai pu l'exécuter sur une connexion SSH active.
( source )
Voici comment je supprime toutes les règles DROP:
iptables -S |grep DROP| sed 's/-A/-D/' >rules # -A becomes -D: delete
nano rules # check that everything is correct
cat rules | while read line; do iptables $line; done
iptables-save
Terminé!