modo migliore per cancellare tutte le regole di iptables


83

Al momento ho questo frammento:

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X

C'è una possibilità che qualche regola impervia rimanga in vita dopo aver eseguito questo?

L'idea è di avere una configurazione iptables completamente pulita, che può essere facilmente sostituita da un nuovo set di regole (parametri di Nevermind / ifconfig).

Risposte:


107

Per rispondere alla tua domanda in modo succinto, no: non ci sarebbero regole "rimanenti" dopo aver svuotato ogni tavolo. Nell'interesse di essere accurati, tuttavia, potresti voler impostare la politica per i built-in INPUTe le FORWARDcatene su 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

Cancella regole 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

...E così dovrebbe andare. iptables -nvLdovrebbe produrre questo (o molto simile) output:

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

9
ti sei dimenticato di 'raw': iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableOP non scarica tutte le tabelle. Nemmeno tu. Ecco come appare se vuoi essere accurato . E potresti voler aggiungere iptables -t "$table" -Z. Tieni presente che in questo modo stai codificando l'elenco delle tabelle e delle loro catene. Quindi prenderei seriamente in considerazione la soluzione di salvataggio-ripristino . Oppure puoi semplicemente scaricare iptables .
x-yuri,

23

Questo ripristinerà correttamente completamente il tuo sistema iptables a uno stato molto semplice:

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

Tutti i criteri verranno reimpostati su ACCETTA e cancellando ogni tabella nell'uso corrente. Tutte le catene diverse da quelle incorporate non esistono più.


1
Hack pulito! Tuttavia, non dipenderei da questo, poiché è sempre possibile che sottili modifiche al formato di salvataggio / ripristino possano interromperlo. Probabilmente è meglio attenersi all'API che lo iptablesstrumento fornisce esplicitamente, IMO.
Steven lunedì

3
Ho cambiato idea: è improbabile che il formato dei dati cambi molto di più, dal momento che è usato così ampiamente. +1.
Steven lunedì

2
+1, hack interessante
Sam Halicke,

Questo è riuscito a sbarazzarsi delle catene UFW rimanenti, cosa che la risposta accettata non ha fatto.
l0b0

Questo è un dettaglio minore, ma potresti voler sostituire il primo print $1con print $0per essere coerente :)
x-yuri il

2

Ogni volta che ho bisogno di disabilitare il firewall è qualcosa del genere:

  • iptables-save > iptables.bak
  • service iptables stop (sono su fedora)

1

Puoi semplicemente scaricare i iptables'moduli dal kernel:

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD Purtroppo, troppo bello per essere vero. Finché esiste una regola o una catena definita dall'utente in una tabella, il conteggio dei riferimenti del modulo corrispondente è 1 e ha modprobe -resito negativo. È possibile eliminare le regole e le catene definite dall'utente in questo modo:

echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore

o:

iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore

Inoltre, potresti voler scaricare i moduli in questo modo (senza nomi di moduli hardcoding):

lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r

Sul lato positivo, dopo questo iptables-saveproduce un bel risultato vuoto :)


Questo potrebbe essere il martello qui. Grazie.
Konrad Gajewski,

0

Si può fare questo in 1 o 2 comandi:

 $ sudo iptables-save > iptables.bak
 $ sudo iptables -F

Risultato:

$ 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         

5
Se i criteri predefiniti sono attualmente impostati su DROP, questo è un modo rapido per essere bloccato fuori dal server. Quindi no, non è un processo di comando 1 o 2. Devi prima impostare su ACCETTA se non è attualmente.
RyanH,

0

Di recente ho dovuto bloccare tutte le connessioni

iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP

per quanto riguarda il salvataggio, consiglierei quanto segue

Ubuntu:

/etc/init.d/iptables save
/sbin/service iptables save

RedHat / CentOS:

/etc/init.d/iptables save
/sbin/iptables-save

Oltre al backup di tutte le attuali regole ufw ho usato questo in passato

cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION> 
cp /lib/ufw/{user.rules,user6.rules} ./

Penso che questo possa essere utile per riferimento futuro. Ho pensato di condividere.


0

Esegue il backup della configurazione su iptables_backup.conf e pulisce tutte le regole.

iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore

Per ripristinare la configurazione precedente:

iptables-restore < iptables_backup.conf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.