Ver todas las reglas de iptables

145

¿Hay alguna manera de ver las iptablesreglas con un poco más de detalle?

Recientemente agregué masquerade a una gama de IP:

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

Que ha hecho lo que quiero, pero cuando uso:

iptables -L

Obtengo el mismo resultado que normalmente obtengo:

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

¿Cómo puedo ver las reglas, incluidas las que agrego? (el sistema es CentOS 6)

TheLovelySausage
fuente

Respuestas:

117

Cuando se utiliza el -L, --listopción para listar las reglas del cortafuegos actuales, también es necesario especificar la tabla Netfilter apropiado (uno de filter, nat, mangle, rawo security). Por lo tanto, si usted ha agregado una regla para la natmesa, se debe especificar explícitamente esta tabla con el -t, --tableopción:

iptables --table nat --list

O usando las opciones de forma corta:

iptables -t nat -L

Si no especifica una tabla específica, la filtertabla se usa como predeterminada.


Para resultados más rápidos, puede ser útil incluir también la -n, --numericopción de imprimir direcciones IP numéricas en lugar de nombres de host, evitando así la necesidad de esperar a que las búsquedas de DNS inversa.

Usted puede obtener aún más información mediante la inclusión de la -v, --verboseopción.

Anthony Geoghegan
fuente
113

iptablescontrola cinco mesas diferentes: filter, nat, mangle, rawy security. En una llamada determinada, iptablessolo muestra o modifica una de estas tablas, especificada por el argumento de la opción -t(por defecto filter). Para ver el estado completo del firewall, debe llamar iptablesa cada una de las tablas sucesivamente.

Además, para obtener una representación precisa de las reglas, debe pasar la opción -v. De lo contrario, se omiten algunos criterios importantes en la salida, como la interfaz en las reglas de filtro (por ejemplo, una regla que dice "aceptar todo" y una regla que dice "aceptar todo en la interfaz de bucle invertido" solo se puede distinguir con -v).

Por lo tanto, para obtener una presentación completa de las reglas de netfilter, necesita

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

Alternativamente, puede llamar al iptables-saveprograma, que muestra todas las reglas en todas las tablas en un formato que puede analizarse iptables-restore. Este formato también es razonablemente legible para los humanos (es como una serie de llamadas al iptablescomando para construir la tabla).

Gilles
fuente
56

iptables -Shace el truco para mí Parece enumerar todas las reglas activas, incluso cuando el servicio está desactivado.

Desde la página del manual:

-S, --list-rules [cadena] Imprime todas las reglas en la cadena seleccionada. Si no se selecciona ninguna cadena, todas las cadenas se imprimen como iptables-save. Al igual que cualquier otro comando de iptables, se aplica a la tabla especificada (el filtro es el predeterminado).

Cameron
fuente
Esta es una respuesta realmente kwl, también he notado que / sbin / service iptables status da una salida similar
TheLovelySausage
66
+1. No "parece" al respecto: desde la página de manual: "-S, imprime todas las reglas en la cadena seleccionada. Si no se selecciona ninguna cadena, todas las cadenas se imprimen como iptables-save". Este es el que generalmente necesito.
Mike S
3
No encontré que este fuera el caso. iptables -Sno muestra todas mis reglas NAT, que puedo ver cuando corroiptables -L -t nat
mulllhausen
1
@MikeS Desde la página del manual, AMBOS comandos operan solo en la tabla especificada, filtro por defecto. "Al igual que cualquier otro comando de iptables, se aplica a la tabla especificada (el filtro es el predeterminado)". La redacción de la documentación se copia casi idénticamente para -S y -L, solo difieren en el formato de la salida, no en las reglas impresas. Esto es cierto al menos en Ubuntu 16.04, que en mi sistema es iptables v1.6.0.
Scott
De acuerdo con @mulllhausen aquí. Necesitaba "sudo iptables --table nat --list" para mostrar las reglas de mi tabla nat. la bandera "-S" por sí sola no los mostró.
Robert Oschler
15

Lo que hago es ejecutar iptables-save > iptables_bckp, esto haría una copia de seguridad de todas las capas, luego editaría el archivo y restauraría las iptablesiptables-restore < iptables_bckp

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

Puede hacer una doble copia de seguridad para modificar una de ellas sin perder sus iptables anteriores.

Esta es una práctica personal, no digo que sea la mejor manera, pero para mí funciona muy bien.

Intentalo

tachomi
fuente
Esta es la única respuesta realista que he encontrado hasta ahora que en realidad voltea todas las tablas también.
Chris Harrington
4

El iptablescomando también requiere que especifique la tabla; de lo contrario, el valor predeterminado es filtrar la tabla. Entonces intenta:

iptables -t nat -L
usuario425
fuente
1

Puedes usar:

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

Para buscar todas las tablas y mostrar una regla específica en la tabla.

Tur Le
fuente
1

Si realmente le ayuda, podría escribir un script bash y ponerlo en una carpeta que sea referenciada por su ruta o hacer referencia a través de un alias en el archivo ~ / .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"

Recuerde darle a su nuevo script bash permisos de ejecución con chmod

Si el permiso es un problema, puede que tenga que agregar sudo delante de todos los iptablescomandos.

ob1
fuente
0
iptables -vnxL
iptables -vnxL -tnat

posiblemente adicionalmente, aunque estos se usan muy muy raramente:

iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
sjas
fuente