iptables es una interfaz de línea de comandos que se utiliza para configurar y mantener tablas para el cortafuegos Netfilter para IPv4, incluido en el kernel de Linux. El firewall hace coincidir los paquetes con las reglas definidas en estas tablas y luego realiza la acción especificada en una posible coincidencia.
- Tablas es el nombre de un conjunto de strings.
- La string es una colección de reglas.
- La regla es una condición utilizada para hacer coincidir el paquete.
- El objetivo es la acción que se realiza cuando una posible regla coincide. Ejemplos del objetivo son ACCEPT, DROP, QUEUE.
- La política es la acción predeterminada que se toma en caso de que no coincida con las strings integradas y puede ser ACEPTAR o ELIMINAR.
Sintaxis:
iptables --table TABLE -A/-C/-D... CHAIN rule --jump Target
Hay cinco tablas posibles:
- filtro: tabla utilizada por defecto para el filtrado de paquetes. Incluye strings como INPUT, OUTPUT y FORWARD.
- nat : Relacionado con la traducción de direcciones de red. Incluye strings PREROUTING y POSTROUTING.
- mangle : Para alteración especializada de paquetes. Las strings incorporadas incluyen PREROUTING y OUTPUT.
- raw : Configura exenciones del seguimiento de conexiones. Las strings integradas son PREROUTING y OUTPUT.
- seguridad : Usado para Control de Acceso Obligatorio
Hay pocas strings integradas que se incluyen en las tablas. Están:
- INPUT: conjunto de reglas para paquetes destinados a sockets localhost.
- FORWARD: para paquetes enrutados a través del dispositivo.
- SALIDA: para paquetes generados localmente, destinados a ser transmitidos al exterior.
- PREROUTING : para modificar paquetes a medida que llegan.
- POSTROUTING: para modificar paquetes a medida que se van.
Nota: También se pueden crear strings definidas por el usuario.
- -A, –append : Agregar a la string proporcionada en los parámetros.
Sintaxis:
iptables [-t table] --append [chain] [parameters]
Ejemplo: este comando elimina todo el tráfico que llega a cualquier puerto.
iptables -t filter --append INPUT -j DROP
Producción:
- -D, –delete : Eliminar regla de la string especificada.
Sintaxis:
iptables [-t table] --delete [chain] [rule_number]
Ejemplo: este comando elimina la regla 2 de la string INPUT.
iptables -t filter --delete INPUT 2
Producción:
- -C, –check : Verifica si una regla está presente en la string o no. Devuelve 0 si la regla existe y devuelve 1 si no existe.
Sintaxis:
iptables [-t table] --check [chain] [parameters]
Ejemplo: este comando verifica si la regla especificada está presente en la string INPUT.
iptables -t filter --check INPUT -s 192.168.1.123 -j DROP
Producción:
Los parámetros proporcionados con el comando iptables se utilizan para hacer coincidir el paquete y realizar la acción especificada. Los parámetros comunes son:
- -p, –proto : es el protocolo que sigue el paquete. Los posibles valores pueden ser: tcp, udp, icmp, ssh, etc.
Sintaxis:
iptables [-t table] -A [chain] -p {protocol_name} [target]
Ejemplo: este comando agrega una regla en la string INPUT para descartar todos los paquetes udp.
iptables -t filter -A INPUT -p udp -j DROP
Producción:
- -s, –source: se utiliza para coincidir con la dirección de origen del paquete.
Sintaxis:
iptables [-t table] -A [chain] -s {source_address} [target]
Ejemplo: este comando agrega una regla en la string INPUT para aceptar todos los paquetes que se originan en 192.168.1.230.
iptables -t filter -A INPUT -s 192.168.1.230 -j ACCEPT
Producción:
- -d, –destination : se utiliza para coincidir con la dirección de destino del paquete.
Sintaxis:
iptables [-t table] -A [chain] -d {destination_address} [target]
Ejemplo: este comando agrega una regla en la string OUTPUT para descartar todos los paquetes destinados a 192.168.1.123.
iptables -t filter -A OUTPUT -d 192.168.1.123 -j DROP
Producción:
- -i, –in-interface : hace coincidir los paquetes con la interfaz de entrada especificada y realiza la acción.
Sintaxis:
iptables [-t table] -A [chain] -i {interface} [target]
Ejemplo: este comando agrega una regla en la string INPUT para descartar todos los paquetes destinados a la interfaz inalámbrica.
iptables -t filter -A INPUT -i wlan0 -j DROP
Producción:
- -o, –out-interface: hace coincidir los paquetes con la interfaz de salida especificada.
- -j, –jump : este parámetro especifica la acción a realizar en un partido.
Sintaxis:
iptables [-t table] -A [chain] [parameters] -j {target}
Ejemplo: este comando agrega una regla en la string FORWARD para descartar todos los paquetes.
iptables -t filter -A FORWARD -j DROP
Producción:
Nota:
- Mientras prueba los comandos, puede eliminar todas las reglas de filtrado y las strings creadas por el usuario.
sudo iptables --flush
- Para guardar la configuración de iptables use:
sudo iptables-save
- La restauración de la configuración de iptables se puede hacer con:
sudo iptables-restore
- Existen otras interfaces, como ip6tables, que se utilizan para administrar tablas de filtrado para IPv6.