Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

El autor de este post es José Luis Sánchez Borque (@gielsb).

Continuación del capítulo anterior:


Capítulo 2: Entendiendo el flujo de paquetes


Un tema clave para entender el funcionamiento de cualquier firewall, es el circuito que siguen los paquetes IP que entran y salen en el firewall.

Entender este circuito es vital, para aplicar las reglas en la cadena que pertoque: INPUT, OUTPUT o FORWARD, y sobre todo cuando hay reglas NAT ( Network Address Translation ) aplicadas.

Tomemos para nuestras explicaciones el presente esquema de red ( más adelante lo utilizaremos para empezar con la parte más práctica ):

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

A nivel general podemos definir los siguientes circuitos de información:

1) Paquetes destinados al propio firewall: Es decir, aquellos que entran por cualquiera de las tarjetas de red del firewall, y cuya IP destino coincide con cualquier de las que tiene el router.

Ejemplos:

Un ping contra el propio router.
Establecer una sesión ssh contra el router para su administración.
• Conectarse vía web al router para acceder al Webmin
• Conectarse a un web server en el propio servidor.

Todos estos procesos, van destinados al router, y será un proceso local quien responda a esas  peticiones.

Todas las reglas para este tipo de paquetes las añadiremos a la cadena INPUT.

Por ejemplo:

iptables –i eth0 – A INPUT –p tcp --dport  22 –j DROP
 
-    Impedimos cualquier conexión entrante ssh desde ZONA 1

2) Paquetes que salen por cualquiera de las tarjetas de red del firewall, procedentes de un proceso local
. Es decir, aquellos paquetes IP que salen del router y la IP origen es la de cualquier de sus tarjetas de red.
 
Ejemplos:

• Cuando hacemos un apt-get update, etc.

• Cuando un proceso local, tipo servidor ssh, webmin, etc.. responde a una petición de un cliente. Respuesta típica a un INPUT.

• Cuando nos validamos contra el firewall ( localmente o vía ssh ) y realizamos cualquier conexión hacía el exterior.

Todas las reglas para este tipo de paquetes las añadiremos a la cadena OUTPUT.
Ejemplo:

iptables – A OUTPUT –o eth0 –d 192.168.0.10  –p udp --dport 53  –j DROP

-    Impedimos que el firewall utilice como dns el SRV1

3) Nos queda la cadena FORWARD, que son todos aquellos paquetes que llegan al router, destinados a otras redes, y en  que el router hace lógicamente de enrutador.

Ejemplo:

iptables –A FORWARD –p icmp –j DROP

-    Impide cualquier tipo de paquete icmp entre ZONA 1 Y ZONA 2

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

Dejaremos para más adelante el NAT, es decir la capacidad de iptables de modificar los encabezados IP origen (SNAT), o destino (DNAT). 

Aprendamos primero las reglas básicas de acceso, sin NAT, para luego poder realizar scripts más complejos:

Primero activamos el enrutamiento en nuestra máquina Linux:

Podemos verificar si el enrutamiento está o no permitido chequeando el siguiente valor:

cat /proc/sys/net/ipv4/ip_forward 

Si da como resultado 0, no está activado, un 1 si está activado.

Podemos activar el enrutamiento en caliente de dos formas:

sysctl -w net.ipv4.ip_forward=1
 
o

echo 1 > /proc/sys/net/ipv4/ip_forward

Los cambios son instantáneos, pero no permanecen después de un reboot del sistema.

Podemos activar el enrutamiento de forma permanente usando el fichero  /etc/sysctl.conf, añadiendo, o descomentando la siguiente línea:

- Fichero: /etc/sysctl.conf
- Línea: net.ipv4.ip_forward = 1
 
Para activar los cambios hechos en el fichero sysctl.conf sin hacer un reboot podemos teclear la siguiente orden:

sysctl -p /etc/sysctl.conf

En el próximo capítulo diseñaremos dos firewalls a modo ejemplo:

1)    FW entre redes

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

2)    FW entorno real

Linux: Tutorial IPTABLES - Un firewall fiable - Capítulo 2

No hay comentarios:

Publicar un comentario