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.