Iptables
Introducción
En el mundo digital actual, la seguridad es una preocupación primordial. Un cortafuegos es una herramienta esencial para proteger los sistemas informáticos contra amenazas externas e internas. En el entorno de Linux, iptables
es una herramienta poderosa y flexible para configurar y administrar cortafuegos. En esta entrada de la wiki, exploraremos en detalle cómo funciona iptables
y cómo se puede utilizar para asegurar un sistema Linux.
Funcionamiento de iptables
¿Qué es iptables?
iptables
es una utilidad de línea de comandos que permite al usuario configurar las reglas de filtrado de paquetes en el kernel de Linux. Funciona examinando los paquetes de red entrantes y salientes y tomando decisiones en función de un conjunto de reglas predefinidas.
Componentes clave
1. Tablas
iptables
organiza las reglas en diferentes tablas, cada una de las cuales se utiliza para un propósito específico. Las tres tablas principales son:
- Tabla
filter
: Utilizada para filtrar paquetes y decidir si permitirlos o denegarlos. - Tabla
nat
: Utilizada para modificar las direcciones de origen o destino de los paquetes. - Tabla
mangle
: Utilizada para modificar los campos de los paquetes.
2. Cadenas
Dentro de cada tabla, iptables
utiliza cadenas para organizar las reglas. Las cadenas determinan en qué momento del proceso de red se aplican las reglas. Algunas cadenas comunes son:
- Cadena
INPUT
: Se aplica a paquetes entrantes. - Cadena
OUTPUT
: Se aplica a paquetes salientes. - Cadena
FORWARD
: Se aplica a paquetes que se están reenviando a través del sistema.
3. Objetivos y criterios
Cada regla de iptables tiene un objetivo y un conjunto de criterios que determinan si se aplica a un paquete específico. Algunos objetivos comunes incluyen ACCEPT
, DROP
y REJECT
, que permiten, deniegan o rechazan el tráfico, respectivamente. Los criterios pueden incluir direcciones IP, puertos, interfaces de red, etc.
Uso básico de iptables
Visualizar reglas
Para ver las reglas actuales de iptables, puedes usar el comando:
iptables -L
Este comando mostrará las reglas actuales en cada tabla, así como la política predeterminada para cada cadena.
Agregar reglas
Para agregar una nueva regla, puedes utilizar el comando iptables
seguido del objetivo y los criterios deseados. Por ejemplo, para permitir el tráfico entrante en el puerto 80 (HTTP), puedes usar:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Este comando añadirá una nueva regla a la cadena INPUT
que permite el tráfico TCP entrante en el puerto 80.
Ejemplo completo
Supongamos que deseas configurar un cortafuegos básico que permita el tráfico SSH (puerto 22) y HTTP (puerto 80), pero bloquee todo lo demás. Puedes lograrlo con las siguientes reglas:
# Limpiar todas las reglas existentes
iptables -F
- Establecer la política predeterminada a DROP (denegar todo)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
- Permitir tráfico SSH (puerto 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- Permitir tráfico HTTP (puerto 80)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Con estas reglas, el tráfico SSH y HTTP será permitido, mientras que todo lo demás será bloqueado.
Guardar configuraciones
Para guardar las configuraciones de iptables y asegurarte de que se apliquen después de reiniciar el sistema, puedes usar el comando: