Home Linux Tutorial IPTABLES II – Entendiendo el flujo de paquetes

Tutorial IPTABLES II – Entendiendo el flujo de paquetes

by José Luis Sánchez Borque
firewall

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 ):

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.

Veamos un caso:

iptables –A INPUT –i eth0 –p tcp --dport  22 –j DROP
  • Impedimos cualquier conexión entrante ssh hacía el router desde ZONA 1

-A INPUT:    Paquetes IP con IP o MAC destino el router

-i eth0  Paquetes que entran por la interfaz eth0 ( desde Zona 1 )

-p tcp –dport 22  Paquetes con puerto destino 22 (ssh)

-j DROP  Acción desechar el paquete

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ñadires a la cadena OUTPUT.

Veamos un caso:

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
  • Nos queda la cadena FORWARD, que son todos aquellos paquetes que llegan al router, destinados a otras redes, y en las que el router hace lógicamente de enrutador.

Veamos un caso más:

Iptables –A FORWARD –p icmp –j DROP
  • Impide cualquier tipo de paquete icmp entre ZONA 1 Y ZONA 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 activar el enrutamiento en nuestra máquina línux

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:
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 un sencillo firewall

  • FW entre redes

 

You may also like

Leave a Comment