web-dev-qa-db-fra.com

meilleure façon d'effacer toutes les règles iptables

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).

96
kagali-san

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
119
Sam Halicke

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.

26
Jerub

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)
3
Realn0whereman

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 :)

2
x-yuri

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
2
Zibri

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         
1
Mugoma J. Okomba

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.

1
Boschko

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 )

0
mevdschee

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é!

0
Basj