Linux

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.

La siguiente imagen simplifica la estructura del camino seguido por los paquetes dentro del host.

Enrutameinto de paquetes

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.

Paquetes de entrada

Paquetes de salida

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.