Entendiendo Iptables

By 2 de abril de 2007 Debian, Gentoo, Linux, SuSE, Ubuntu One Comment

101282474_36f59123dc.jpgiptables es el nombre de la herramienta del espacio de usuario por medio de la cual un administrador crea reglas para filtrado de paquetes y para hacer NAT.

Aunque iptables es técnicamente sólo la herramienta que controla el filtrado de paquetes y los componentes de NAT dentro del núcleo, el nombre iptables se utiliza muchas veces para referirse a toda la infraestructura, incluyendo a netfilter, connection tracking (seguimiento de conexiones) y NAT, como también a la herramienta propiamente dicha. iptables es una parte estándar de todas las distribuciones de Linux actuales.

Comando habituales:

# iptables -F --> flush de las reglas, elimina cualquier tipo de definición exitente.

# iptables -X --> Borra las reglas definidas por el usuario

# iptables -Z --> Pone los contadores de las reglas a 0

# iptables -P -->

-P: INPUT, OUTPUT, DROP

Políticas aplicables: ACCEPT, DROP


Intentemos crear unos scripts sencillos para entender mejor la mecánica.
Script de ejemplo básico:

Script 1:

#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -s 10.123.33.18 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

__________________________________

Éste script deniega el acceso a todas las máquinas que quieran acceder al puerto 22 (ssh) menos a la que tenga la IP: 10.123.33.18

Script 2:

#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -s 10.123.33.18 -j ACCEPT
iptables -A INPUT -s 10.123.33.17 -j ACCEPT
iptables -A INPUT -s 10.123.33.16 -j ACCEPT

____________________________________

En este caso en las reglas generales denegamos todo acceso pero al final del mismo aceptamos sólo a ciertas máquinas que puedan acceder a nuestro equipo.

Script 3:

Si google no nos deja hacerle ping, que tampoco nos lo hagan a nosotros :)

Si quisiéramos que no pudieran hacernos ping a nuestra máquina el script sería:

#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -s 10.123.33.18 -j ACCEPT
iptables -A INPUT -p icmp -j DROP

Otros comandos:

# iptables-save

Salva las reglas que tengamos definidas en el mismo momento de la ejecución.

# iptables-save -c

Muestra el contador de las veces que ha pasado por una regla.

Herramientas:

# tcpdump

Define la interface de red en modo promiscuo y muestra todo el tráfico.

Ejemplo:

# tcpdump | strings

strings hace que la salida standard salgan en caracteres imprimibles.

Esto nos sirve para poder 'ver' como trabajan las reglas aplicadas.

One Comment

Leave a Reply

Your email address will not be published.