Cómo listar y eliminar reglas del firewall de Iptables

0 acciones
0
0
0
0

Introducción

Iptables es un firewall fundamental para la seguridad de la red en la mayoría de los sistemas Linux. Si bien muchos tutoriales de iptables enseñan a crear reglas de firewall para proteger el servidor, este se centra en un aspecto diferente de la gestión de firewalls: el listado y la eliminación de reglas.

En este tutorial, cubriremos cómo realizar las siguientes tareas de iptables:

  • Enumere las reglas
  • Borrar contadores de paquetes y bytes
  • Eliminar reglas
  • Limpiar una cadena (eliminar todas las reglas de una cadena)
  • Limpia todas las cadenas y tablas, elimina todas las cadenas y acepta todo el tráfico.
Requisitos previos

Este tutorial asume que utiliza un servidor Linux con el comando iptables instalado y que su usuario tiene privilegios de sudo. Si necesita ayuda con esta configuración inicial, consulte la guía de configuración inicial del servidor con Ubuntu 20.04.

Reglas de listado por especificación

Veamos primero cómo listar reglas. Hay dos maneras de ver las reglas activas de iptables: en una tabla o como una lista de especificaciones de reglas. Ambos métodos proporcionan prácticamente la misma información en diferentes formatos.

Para enumerar todas las reglas de iptables activas por especificación, ejecute el comando iptables con la opción -S:

sudo iptables -S
Output
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
...

Como puede ver, la salida es exactamente igual a la de los comandos usados para crearlos, sin el comando iptables anterior. Si alguna vez ha usado iptables-persistent o iptables save, esto también será similar a los archivos de configuración de reglas de iptables.

Listado de una cadena específica

Si desea limitar la salida a una cadena específica (ENTRADA, SALIDA, TCP, etc.), puede especificar el nombre de la cadena directamente después de la opción. -S Por ejemplo, para mostrar todas las reglas en la cadena TCP, ejecute este comando:

sudo iptables -S TCP
Output
-N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

Ahora echemos un vistazo a una forma alternativa de ver las reglas de iptables activas, como una tabla de reglas.

Reglas de lista en tablas

Enumerar las reglas de iptables en una vista de tabla puede ser útil para comparar diferentes reglas entre sí. Para mostrar todas las reglas de iptables activas en una tabla, ejecute el comando iptables con la opción -L:

sudo iptables -L

Esto generará todas las reglas actuales ordenadas por cadena.

Si desea limitar la salida a una cadena específica (ENTRADA, SALIDA, TCP, etc.), puede especificar el nombre de la cadena directamente después de la opción -L.

Veamos un ejemplo de cadena de entrada:

sudo iptables -L INPUT
Output
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
UDP udp -- anywhere anywhere ctstate NEW
TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP icmp -- anywhere anywhere ctstate NEW
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

La primera línea de salida muestra el nombre de la cadena (INPUT en este caso) seguido de su política predeterminada (DROP). La siguiente línea contiene los encabezados de cada columna de la tabla, seguidos de las reglas de la cadena. Repasemos qué representa cada encabezado:

  • Objetivo: Si un paquete cumple una regla, el objetivo especifica qué hacer con él. Por ejemplo, un paquete puede aceptarse, descartarse, registrarse o enviarse a otra cadena para compararse con más reglas.
  • prot: protocolo, como tcp, udp, icmp o todos
  • opt: Rara vez se utiliza, esta columna muestra opciones de IP
  • origen: La dirección IP de origen o subred del tráfico o cualquier lugar
  • destino: La dirección IP de destino o subred del tráfico o cualquier lugar

La última columna, sin etiquetar, muestra las opciones de una regla. Esto incluye cualquier parte de la regla que no se muestra en las columnas anteriores. Puede incluir desde los puertos de origen y destino hasta el estado de la conexión del paquete.

Mostrar el número de paquetes y el tamaño total

Al listar las reglas de iptables, es posible mostrar el número de paquetes y su tamaño total en bytes que coinciden con cada regla. Esto suele ser útil para obtener una idea general de qué reglas coinciden con qué paquetes. Para ello, utilice las opciones -L y -v juntas.

Por ejemplo, veamos nuevamente la cadena INPUT con la opción -v:

sudo iptables -L INPUT -v
Output
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP all -- any any anywhere anywhere ctstate INVALID
396 63275 UDP udp -- any any anywhere anywhere ctstate NEW
17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW
396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable
2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Observe que la lista ahora tiene dos columnas adicionales, paquetes y bytes Es.

Ahora que sabe cómo enumerar las reglas de firewall activas de diferentes maneras, veamos cómo puede restablecer los contadores de paquetes y bytes.

Restablecer el número de paquetes y el tamaño total

Si desea borrar o poner a cero los contadores de paquetes y bytes de sus reglas, use la opción -Z. También se reiniciarán al reiniciar. Esto es útil si desea comprobar si su servidor recibe tráfico nuevo que coincida con sus reglas existentes.

Para borrar los contadores de todas las cadenas y reglas, utilice la opción -Z Uso solo:

sudo iptables -Z

Para borrar los contadores de todas las reglas en una cadena específica, utilice la opción -Z Usar y especificar la cadena. Por ejemplo, para borrar los contadores de la cadena. APORTE Ejecute este comando:

sudo iptables -Z INPUT

Si desea borrar los contadores de una regla específica, especifique el nombre de la cadena y el número de regla. Por ejemplo, para borrar los contadores de la primera regla de la cadena, APORTE, ejecuta esto:

sudo iptables -Z INPUT 1

Ahora que sabe cómo restablecer los contadores de paquetes y bytes de iptables, veamos dos métodos que se pueden utilizar para eliminarlos.

Eliminar reglas según especificaciones

Una forma de eliminar reglas de iptables es especificarlas. Para ello, puede ejecutar el comando iptables con la opción -D seguida de la especificación de la regla. Si desea eliminar reglas con este método, puede consultar la salida de la lista de reglas, iptables -S, como ayuda.

Por ejemplo, si desea eliminar una regla que descarta paquetes de entrada no válidos (-A INPUT -m conntrack –ctstate INVALID -j DROP), puede ejecutar este comando:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

Tenga en cuenta que la opción -A, que se utiliza para indicar la posición de la regla en el momento de la creación, debe omitirse aquí.

Eliminar reglas basadas en cadena y número

Otra forma de eliminar reglas de iptables es por cadena y número de línea. Para especificar el número de línea de una regla, enumérelas en formato de tabla y agregue la opción --line-numbers:

sudo iptables -L --line-numbers
Output
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
2 ACCEPT all -- anywhere anywhere
3 DROP all -- anywhere anywhere ctstate INVALID
4 UDP udp -- anywhere anywhere ctstate NEW
5 TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6 ICMP icmp -- anywhere anywhere ctstate NEW
7 REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
8 REJECT tcp -- anywhere anywhere reject-with tcp-reset
9 REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
10 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Esto agrega un número de línea a cada línea de regla que esté asociada con el encabezado. número Se muestra.

Una vez que sepa qué regla desea eliminar, anote el número de cadena y la línea de la regla. Luego, ejecute el comando iptables -D seguido del número de cadena y la regla.

Por ejemplo, si queremos eliminar la regla de entrada que descarta paquetes no válidos, vemos que la regla 3 está en la cadena INPUT. Por lo tanto, debemos ejecutar este comando:

sudo iptables -D INPUT 3

Ahora que sabe cómo eliminar las reglas del firewall, veamos cómo borrar las cadenas de reglas.

Destellando las cadenas

Iptables ofrece una forma de eliminar todas las reglas de una cadena o vaciarla. En esta sección, explicaremos diversas maneras de hacerlo.

Limpiando una cadena

Para vaciar una cadena específica, lo que elimina todas las reglas de la cadena, puede utilizar la opción -F o -flush equivalente y el nombre de la cadena a vaciar.

Por ejemplo, para eliminar todas las reglas de la cadena APORTE, ejecute este comando:

sudo iptables -F INPUT

Intermitente de todas las cadenas

Para limpiar todas las cadenas, lo que elimina todas las reglas del firewall, puede utilizar la opción -F o su equivalente -flush solo:

sudo iptables -F

Elimine todas las reglas, elimine todas las cadenas y acepte todo.

Esta sección le muestra cómo borrar todas las reglas, tablas y cadenas de su firewall y permitir todo el tráfico de red.

Primero, configure las políticas predeterminadas para cada cadena interna en ACEPTAR. Esto se hace principalmente para evitar que se bloquee el acceso al servidor por SSH.

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

A continuación, limpie las tablas nat y mangle, borre todas las cadenas (-F) y elimine todas las cadenas que no sean predeterminadas (-X):

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Su firewall ahora permitirá todo el tráfico de red. Si enumera sus reglas, verá que no hay ninguna, dejando solo las tres cadenas predeterminadas (ENTRADA, REENVÍO y SALIDA).

Resultado

Tras completar este tutorial, habrá visto cómo listar y eliminar las reglas de firewall de iptables. Recuerde que cualquier cambio en iptables realizado mediante el comando iptables es transitorio y debe guardarse para que persista tras los reinicios del servidor. Esto se explica en la sección "Guardar reglas" del tutorial "Reglas y comandos comunes del firewall".

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar