Visualizzazione di tutte le regole di iptables


145

C'è un modo per visualizzare le iptablesregole in modo un po 'più dettagliato?

Di recente ho aggiunto masquerade a una serie di IP:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart

Che ha fatto quello che voglio, ma quando uso:

iptables -L

Ottengo lo stesso output che ottengo normalmente:

Chain INPUT (policy ACCEPT)
target    prot opt source        destination

Chain FORWARD (policy ACCEPT)
target    prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target    prot opt source        destination

Come posso vedere le regole, comprese quelle che aggiungo? (il sistema è CentOS 6)

Risposte:


117

Quando si utilizza il -L, --listopzione per elencare le regole del firewall attuali, è inoltre necessario specificare la tabella Netfilter appropriata (una delle filter, nat, mangle, rawo security). Quindi, se hai aggiunto una regola per la nattabella, dovresti specificare esplicitamente questa tabella usando l' opzione -t,--table

iptables --table nat --list

O usando la forma abbreviata delle opzioni:

iptables -t nat -L

Se non si specifica una tabella specifica, la filtertabella viene utilizzata come predefinita.


Per risultati più rapidi, può essere utile includere anche l' opzione -n, --numericper stampare indirizzi IP numerici anziché nomi host, evitando così la necessità di attendere ricerche DNS inverse.

È possibile ottenere ancora più informazioni inserendo la -v, --verbosepossibilità.


113

iptablescontrolla cinque diverse tabelle: filter, nat, mangle, rawe security. In una determinata chiamata, iptablesvisualizza o modifica solo una di queste tabelle, specificata dall'argomento nell'opzione -t(impostazione predefinita a filter). Per visualizzare lo stato completo del firewall, è necessario chiamare iptablesin successione ciascuna delle tabelle.

Inoltre, per ottenere una rappresentazione accurata delle regole, è necessario passare l'opzione -v. In caso contrario, nell'output vengono omessi alcuni criteri importanti, come l'interfaccia nelle regole del filtro (ad esempio una regola che dice "accetta tutto" e una regola che dice "accetta tutto sull'interfaccia di loopback" può essere distinta solo con -v).

Pertanto, per ottenere una presentazione completa delle regole di netfilter, è necessario

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

In alternativa, puoi chiamare il iptables-saveprogramma, che visualizza tutte le regole in tutte le tabelle in un formato che può essere analizzato iptables-restore. Questo formato è anche ragionevolmente leggibile dagli umani (è praticamente una serie di chiamate al iptablescomando per costruire la tabella).


56

iptables -Sfa il trucco per me. Sembra elencare tutte le regole attive, anche quando il servizio è disattivato.

Dalla pagina man:

-S, --list-rules [catena] Stampa tutte le regole nella catena selezionata. Se non viene selezionata alcuna catena, tutte le catene vengono stampate come iptables-save. Come ogni altro comando iptables, si applica alla tabella specificata (il filtro è l'impostazione predefinita).


Questa è una risposta davvero kwl, ho anche notato che lo stato di / sbin / service iptables fornisce un output simile
TheLovelySausage

6
+1. Nessun 'sembra' al riguardo- dalla pagina man: "-S, Stampa tutte le regole nella catena selezionata. Se nessuna catena è selezionata, tutte le catene sono stampate come iptables-save". Questo è quello di cui di solito ho bisogno.
Mike S,

3
non ho trovato questo il caso. iptables -Snon mostra tutte le mie regole nat, che posso vedere quando corroiptables -L -t nat
mulllhausen

1
@MikeS Dalla pagina man, ENTRAMBI i comandi funzionano solo sulla tabella specificata, filtrati per impostazione predefinita. "Come ogni altro comando iptables, si applica alla tabella specificata (il filtro è il valore predefinito)." Il testo nella documentazione viene copiato in modo quasi identico per -S e -L, differiscono solo per la formattazione dell'output, non per le regole stampate. Questo è vero almeno su Ubuntu 16.04 che sul mio sistema è iptables v1.6.0.
Scott,

Sono d'accordo con @mulllhausen qui. Avevo bisogno di "sudo iptables --table nat --list" per mostrare le regole della mia tabella nat. la bandiera "-S" da sola non li mostrava.
Robert Oschler,

15

Quello che faccio è eseguire iptables-save > iptables_bckp, questo farebbe il backup di tutti i livelli, quindi modificare il file e ripristinare gli iptablesiptables-restore < iptables_bckp

# iptables-save > iptables_bckp
# vim iptables_bckp
# iptables-restore < iptables_bckp

Puoi fare un doppio backup in modo da modificarne uno senza perdere i tuoi iptables precedenti.

Questa è una pratica personale, non sto dicendo che sia il modo migliore, ma per me funziona alla grande.

Prova


Questa è l'unica risposta realistica che ho trovato finora che effettivamente scarica anche tutti i tavoli.
Chris Harrington,

4

Il iptablescomando richiede inoltre di specificare la tabella, altrimenti per impostazione predefinita filtra la tabella. Allora prova:

iptables -t nat -L

1

Puoi usare:

# lsmod | grep ip_tables
ip_tables              13193  4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter

Per trovare tutte le tabelle e mostrare regole specifiche nella tabella.


1

Se ti sarà davvero di aiuto, potresti scrivere uno script bash e inserirlo in una cartella che fa riferimento al tuo percorso o fare riferimento ad esso tramite un alias nel file ~ / .bashrc.

AllRules.sh

#!/bin/bash

 echo "Filter table:"
 iptables -t filter -vL

 echo "Nat table:"
 iptables -t nat -vL

 echo "Mangle table:"
 iptables -t mangle -vL

 echo "Raw table:"
 iptables -t raw -vL

 echo "Security table:"
 iptables -t security -vL

 echo 
 echo "All rules in all tables printed"

Ricorda di dare le autorizzazioni per eseguire il tuo nuovo script bash con chmod

Se l'autorizzazione è un problema, potresti dover aggiungere sudo davanti a tutti i iptablescomandi.


0
iptables -vnxL
iptables -vnxL -tnat

probabilmente anche, sebbene questi siano usati molto raramente:

iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
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.