Capítulo 2: Entendiendo el flujo de paquetes
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.
• 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.
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
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
2) FW entorno real
Fuente: sysadmit