Inicio > Gestión de red > iptables

iptables: Gestión de reglas de firewall en Linux

iptables es una utilidad de línea de comandos que se utiliza para configurar y administrar reglas de filtrado de paquetes IPv4 y NAT (Network Address Translation) utilizando el framework Netfilter del kernel de Linux. Permite controlar el tráfico de red y mejorar la seguridad del sistema. iptables define reglas de procesamiento de paquetes utilizando los conceptos de cadenas (chains) y tablas (tables).

Descripción general

iptables implementa la política de seguridad del sistema definiendo reglas para los paquetes de red entrantes y salientes. Cada regla especifica una acción (target) como ACCEPT (aceptar), DROP (descartar) o REJECT (rechazar) para los paquetes que coinciden con condiciones específicas. Principalmente se utilizan las cadenas INPUT, OUTPUT y FORWARD, y las cadenas PREROUTING y POSTROUTING también se utilizan para la funcionalidad NAT.

Funciones principales

  • Filtrado de paquetes (firewall)
  • Traducción de direcciones de red (NAT)
  • Reenvío y redirección de puertos
  • Control de tráfico basado en direcciones IP, puertos y protocolos específicos

Opciones principales

El comando iptables se utiliza con varias opciones para agregar, eliminar, modificar o consultar reglas específicas.

Gestión de reglas

Condiciones de coincidencia

Targets (Acciones)

Comando generado:

Combina los comandos.

Descripción:

`iptables` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Ejemplos de configuración de reglas de firewall comunes usando iptables. Se recomienda hacer una copia de seguridad de las reglas actuales antes de agregar nuevas reglas.

Listar todas las reglas actuales

sudo iptables -L -v -n

Consulta las reglas mostrando información detallada y direcciones IP en formato numérico.

Permitir SSH (puerto 22)

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Permite las conexiones SSH entrantes desde el exterior.

Bloquear una dirección IP específica

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Bloquea todo el tráfico entrante desde una dirección IP específica (por ejemplo, 192.168.1.100).

Permitir todo el tráfico saliente

sudo iptables -P OUTPUT ACCEPT

Establece la política predeterminada de la cadena OUTPUT para permitir todo el tráfico saliente del sistema.

Reenvío de puertos para servidor web (80 -> 8080)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Redirige las solicitudes entrantes al puerto 80 al puerto local 8080. (Usando la tabla NAT)

Enmascaramiento de red interna (NAT)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Cambia la IP de origen del tráfico de la red interna al salir por la interfaz externa (por ejemplo, eth0). (Usando la tabla NAT)

Instalación

iptables está instalado por defecto en la mayoría de las distribuciones de Linux. Si no está instalado, puede instalarlo usando los siguientes comandos.

Debian/Ubuntu

sudo apt update
sudo apt install iptables

CentOS/RHEL/Fedora

sudo dnf install iptables

Consejos y precauciones

Las reglas de iptables pueden desaparecer al reiniciar el sistema, por lo que es importante saber cómo guardar las reglas de forma permanente. Además, preste atención al orden y a la política predeterminada al configurar las reglas.

Guardar reglas permanentemente

Las reglas de iptables son volátiles por defecto, por lo que deben guardarse para que persistan después de reiniciar. Los métodos recomendados varían según la distribución.

  • **Debian/Ubuntu**: Instale `sudo apt install iptables-persistent` y luego guarde las reglas con el comando `sudo netfilter-persistent save`. Las reglas se guardan en `/etc/iptables/rules.v4` y `/etc/iptables/rules.v6`.
  • **CentOS/RHEL/Fedora**: Instale `sudo dnf install iptables-services`, habilite y inicie el servicio con `sudo systemctl enable iptables && sudo systemctl start iptables`, y guarde las reglas con el comando `sudo iptables-save > /etc/sysconfig/iptables`.
  • **Método general**: Guarde las reglas en un archivo con `sudo iptables-save > /path/to/rules.v4` y luego cree un script que cargue el archivo con el comando `sudo iptables-restore < /path/to/rules.v4` al iniciar.

Importancia del orden de las reglas

Las reglas de iptables se aplican secuencialmente de arriba hacia abajo dentro de una cadena. Cuando un paquete coincide con una regla específica, se ejecuta la acción de esa regla y no se examinan las reglas posteriores. Por lo tanto, es importante colocar reglas más específicas (por ejemplo, bloquear una IP específica) antes que reglas más generales (por ejemplo, permitir todo el tráfico HTTP).

Precaución al establecer la política predeterminada

Tenga mucho cuidado al establecer la política predeterminada de una cadena (por ejemplo, `iptables -P INPUT DROP`). Antes de cambiar la política predeterminada a DROP, primero debe agregar reglas de permiso para servicios esenciales como las conexiones SSH. De lo contrario, todas las conexiones de red al sistema se bloquearán, lo que podría hacer que el acceso sea imposible.

Transición a nftables

Muchas distribuciones de Linux modernas utilizan `nftables` como su framework de firewall predeterminado en lugar de iptables. `nftables` integra las funcionalidades de iptables y proporciona una sintaxis mejorada. El comando `iptables` puede funcionar como una capa de compatibilidad que utiliza `nftables` internamente, por lo que es recomendable verificar la herramienta de firewall predeterminada de su sistema.


Comandos de la misma categoría