Cómo enumerar y eliminar reglas de firewall de Iptables

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Normas de cotización por especificación
    1. Listado de una cadena específica
  • Reglas de listado como tablas
    1. Visualización de recuentos de paquetes y tamaño agregado
  • Restablecimiento de recuentos de paquetes y tamaño agregado
  • Eliminación de reglas por especificación
  • Eliminar reglas por cadena y número
  • Cadenas de descarga
    1. Lavado de una sola cadena
    2. Limpiando todas las cadenas
  • Limpiar todas las reglas, eliminar todas las cadenas y aceptar todas
  • Conclusión
  • Iptables es un firewall que cumple un papel esencial en la seguridad de la red para la mayoría de los sistemas Linux. Si bien muchos tutoriales de iptables le enseñarán cómo crear reglas de firewall para proteger su servidor , este se centrará en un aspecto diferente de la administración del firewall: enumerar y eliminar reglas.

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

    • Reglas de lista
    • Borrar contadores de paquetes y bytes
    • Eliminar reglas
    • Limpiar cadenas (eliminar todas las reglas de una cadena)
    • Limpiar todas las cadenas y tablas, eliminar todas las cadenas y aceptar todo el tráfico

    Nota: Cuando trabaje con firewalls, tenga cuidado de no bloquear el tráfico SSH (puerto , de manera predeterminada) para no bloquear su propio servidor :22. Si pierde el acceso debido a la configuración de su firewall, es posible que deba conectarse a él a través de una consola fuera de banda para solucionar el problema.

    Prerrequisitos

    Este tutorial asume que está utilizando un servidor Linux con el iptablescomando instalado y que su usuario tiene sudoprivilegios.

    Si necesita ayuda con esta configuración inicial, consulte nuestra guía Configuración inicial del servidor con Ubuntu 20.04 . También está disponible para Debian y CentOS .

    Normas de cotización por especificación

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

    Para enumerar todas las reglas de iptables activas por especificación, ejecute el iptablescomando con la -Sopción:

    1. 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, el resultado se parece a los comandos que se usaron para crearlos, sin el iptablescomando anterior. Esto también se parecerá a los archivos de configuración de reglas de iptables, si alguna vez usó iptables-persistento iptables save.

    Listado de una cadena específica

    Si desea limitar la salida a una cadena específica ( INPUT, OUTPUT, TCP, etc.), puede especificar el nombre de la cadena directamente después de la -Sopción. Por ejemplo, para mostrar todas las especificaciones de reglas en la TCPcadena, debe ejecutar este comando:

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

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

    Reglas de listado como tablas

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

    1. sudo iptables -L

    Esto mostrará todas las reglas actuales ordenadas por cadena.

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

    Veamos un ejemplo de INPUTcadena:

    1. sudo iptables -L INPUT
    OutputChain INPUT (policy DROP)target     prot opt source               destinationACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHEDACCEPT     all  --  anywhere             anywhereDROP       all  --  anywhere             anywhere             ctstate INVALIDUDP        udp  --  anywhere             anywhere             ctstate NEWTCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEWICMP       icmp --  anywhere             anywhere             ctstate NEWREJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachableREJECT     tcp  --  anywhere             anywhere             reject-with tcp-resetREJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable

    La primera línea de salida indica el nombre de la cadena ( INPUT, en este caso), seguido de su política predeterminada ( DROP). La siguiente línea consta de los encabezados de cada columna de la tabla y va seguida de las reglas de la cadena. Repasemos lo que indica cada encabezado:

    • target: Si un paquete coincide con la regla, el destino especifica qué se debe hacer con él. Por ejemplo, un paquete se puede aceptar, descartar, registrar o enviar a otra cadena para compararlo con más reglas.
    • prot:El protocolo, como por ejemplo tcp, udp, icmp, oall
    • opt:Esta columna, que rara vez se utiliza, indica las opciones de IP.
    • source:La dirección IP de origen o subred del tráfico, oanywhere
    • destination:La dirección IP de destino o subred del tráfico, oanywhere

    La última columna, que no tiene etiquetas, indica las opciones de una regla. Se trata de cualquier parte de la regla que no esté indicada en las columnas anteriores. Puede ser cualquier cosa, desde los puertos de origen y destino hasta el estado de conexión del paquete.

    Visualización de recuentos de paquetes y tamaño agregado

    Al enumerar las reglas de iptables, también es posible mostrar la cantidad de paquetes y el tamaño total de los paquetes en bytes que coincidieron con cada regla en particular. Esto suele ser útil cuando se intenta obtener una idea aproximada de qué reglas coinciden con los paquetes. Para ello, utilice las opciones -Ly juntas.-v

    Por ejemplo, veamos la INPUTcadena nuevamente, con la -vopción:

    1. sudo iptables -L INPUT -v
    OutputChain 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 NEW17067 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

    Tenga en cuenta que el listado ahora tiene dos columnas adicionales, pktsy bytes.

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

    Restablecimiento de recuentos de paquetes y tamaño agregado

    Si desea borrar o poner a cero los contadores de paquetes y bytes de sus reglas, utilice la -Zopción. También se restablecen si se reinicia el sistema. Esto resulta útil si desea ver si su servidor está recibiendo tráfico nuevo que coincida con sus reglas existentes.

    Para borrar los contadores de todas las cadenas y reglas, utilice la -Zopción por sí sola:

    1. sudo iptables -Z

    Para borrar los contadores de todas las reglas de una cadena específica, utilice la -Zopción y especifique la cadena. Por ejemplo, para borrar los INPUTcontadores de la cadena, ejecute este comando:

    1. sudo iptables -Z INPUT

    Si desea poner a cero los contadores de una regla específica, especifique el nombre de la cadena y el número de regla. Por ejemplo, para poner a cero los contadores de la primera regla de la INPUTcadena, ejecute lo siguiente:

    1. sudo iptables -Z INPUT 1

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

    Eliminación de reglas por especificación

    Una de las formas de eliminar reglas de iptables es mediante la especificación de reglas. Para ello, puede ejecutar el iptablescomando con la -Dopción seguida de la especificación de reglas. Si desea eliminar reglas mediante este método, puede utilizar la salida de la lista de reglas, iptables -S, para obtener ayuda.

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

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

    Tenga en cuenta que la -Aopción que se utiliza para indicar la posición de la regla en el momento de la creación debe excluirse aquí.

    Eliminar reglas por cadena y número

    La otra forma de eliminar reglas de iptables es por su cadena y número de línea . Para determinar el número de línea de una regla, enumere las reglas en formato de tabla y agregue la --line-numbersopción:

    1. sudo iptables -L --line-numbers
    OutputChain INPUT (policy DROP)num  target     prot opt source               destination1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED2    ACCEPT     all  --  anywhere             anywhere3    DROP       all  --  anywhere             anywhere             ctstate INVALID4    UDP        udp  --  anywhere             anywhere             ctstate NEW5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW6    ICMP       icmp --  anywhere             anywhere             ctstate NEW7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED...

    Esto agrega el número de línea a cada fila de regla, indicado por el numencabezado.

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

    Por ejemplo, si queremos eliminar la regla de entrada que descarta los paquetes no válidos, podemos ver que se trata de una regla 3de la INPUTcadena. Por lo tanto, debemos ejecutar este comando:

    1. sudo iptables -D INPUT 3

    Ahora que sabe cómo eliminar reglas de firewall individuales, repasemos cómo puede eliminar cadenas de reglas.

    Cadenas de descarga

    Iptables ofrece una forma de eliminar todas las reglas de una cadena o vaciarla . En esta sección se explicarán las distintas formas de hacerlo.

    Advertencia: Tenga cuidado de no bloquearse el acceso a su servidor a través de SSH al vaciar una cadena con una política predeterminada de dropo deny. Si lo hace, es posible que deba conectarse a ella a través de la consola para corregir su acceso.

    Lavado de una sola cadena

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

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

    1. sudo iptables -F INPUT

    Limpiando todas las cadenas

    Para vaciar todas las cadenas, lo que eliminará todas las reglas del firewall, puede utilizar la opción -F, o su equivalente , por sí sola:--flush

    1. sudo iptables -F

    Limpiar todas las reglas, eliminar todas las cadenas y aceptar todas

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

    Advertencia: Esto desactivará efectivamente su firewall. Solo debe seguir esta sección si desea comenzar a configurar nuevamente su firewall.

    En primer lugar, configure las políticas predeterminadas para cada una de las cadenas integradas en ACCEPT. El motivo principal para hacer esto es asegurarse de que no se le bloquee el acceso a su servidor a través de SSH:

    1. sudo iptables -P INPUT ACCEPT
    2. sudo iptables -P FORWARD ACCEPT
    3. sudo iptables -P OUTPUT ACCEPT

    A continuación, vacíe las tablas naty mangle, vacíe todas las cadenas ( -F) y elimine todas las cadenas que no sean predeterminadas ( -X):

    1. sudo iptables -t nat -F
    2. sudo iptables -t mangle -F
    3. sudo iptables -F
    4. sudo iptables -X

    Ahora, su firewall permitirá todo el tráfico de red. Si enumera sus reglas ahora, verá que no hay ninguna y que solo quedan las tres cadenas predeterminadas ( INPUT, FORWARD, y OUTPUT).

    Conclusión

    Después de seguir este tutorial, habrá visto cómo enumerar y eliminar sus reglas de firewall de iptables.

    Recuerde que los cambios en iptables que se realicen mediante el iptablescomando son efímeros y deben guardarse para que persistan tras los reinicios del servidor. Esto se explica en la sección Guardar reglas del tutorial Reglas y comandos comunes del firewall.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion