iptables 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.
esta bueno pero le falta un poco mas