Firewall
Implementación básica y modular de un firewall empleando iptables.
Funcionamiento básico
Introducción
El firewall trabaja por paquetes y sus estados que llegan y salen del host. Donde los tipos de paquetes desde la perspectiva del host como un bloque.
- Entrada
- El destino de los paquetes es el host.
- Salida
- Paquetes generados por el host y salen a la red.
- Reenvio
- El host no es el destino pero el paquete debe pasar por el. El host es un router.
Flujo de paquetes dentro del Host
Dentro del host el paquete pasa por una serie de tablas de filtrado y enrutamiento. Las tablas están determinadas por lo siguiente.
- Protocolo (tcp, udp y icmp).
- Interfaz (lan0, wlan0, etc).
- Puerto.
- IP/red origen.
- IP/red destino.
- Tabla de destino.
La siguiente imagen simplifica la estructura del camino seguido por los paquetes dentro del host.
Implementación del firewall
Estructura
La estructura para el manejo de los paquetes está basado si los paquetes son de entrada o salida.
- Entrada
- Se clasifica por protocolo y luego aplicar las tablas por cada servicio. La salida está dada por si es aceptada o es de una conexión iniciada (ALLOWED).
- Salida
- Se divide por protocolo y se abren solo los puertos de los servicios determinados.
Bash script
Estructura
Para la implementación de la estructura propuesta dividimos el script en las siguientes secciones.
- Configuración básica
- Creación de tablas genéricas de cada protocolo y de conexiones existentes (ALLOWED).
- Gestor de paquetes
- Abre los puertos para la conexión hkp para obtener las llaves del gestor de paquetes.
- Docker
- Configuración de la red de los contenedores de docker.
- Red local
- Configuración de los puertos por servicio (https, dhcp, etc).
- VPN
- Similar a la red local a términos prácticos solo cambiando la interfaz y para separar los redes locales de las virtuales.