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 ):
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:
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
• 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.
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
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
By @gielsb
No hay comentarios:
Publicar un comentario