25 abril, 2024

IsProto

Soluciones para Redes e Internet

NAT 1:1 – Traducción de Direcciones de Red Estático

nat

El mecanismo NAT (Network Address Translation) es la metodología utilizada para mapear o traducir el espacio de direcciones IP de una red local en otra que sea identificable por el router.

¿Cómo funciona NAT?

NAT es ampliamente utilizado entre las comunidades de redes locales, ya que se trata de una herramienta de enrutamiento, que permite redireccionar el tráfico existente en la red, conservando el espacio de direcciones de las cuáles se obtienen los paquetes de red.

El uso de NAT se dedica principalmente para traducir las direcciones IP locales en otro rango de direcciones, incrementando como resultado la seguridad de la red y la privacidad derivada de la traducción de las direcciones IP desde y hacia el exterior.

El mecanismo de traducción posee tres formas de trabajo: estático (también conocido como NAT 1:1), dinámico, PAT y overlapping NAT; de las cuáles en éste documento solo mostramos el mecanismo de traducción estático (NAT 1:1).

NAT 1:1 – Traducción de direcciones de red estático

La traducción estática de forma uno a uno (NAT 1:1) o NAT estático, consiste en la asignación direcciones locales uno a uno, de forma que cada dirección IP es traducida individualmente en una dirección de otro rango respectivamente.

El objetivo de la traducción con NAT 1:1 es que cuando una persona desea acceder a un servicio o dirección IP interna desde el exterior, lo haga a través de la dirección IP “traducida” sin tener el conocimiento de la IP verdadera, así surtiendo efecto las políticas de cortafuegos (firewall) a fin de proteger las direcciones IP de la red interna.

El uso de la traducción NAT 1:1 sigue su filosofía a través de una red desmilitarizada, en donde las solicitudes del tráfico exterior dirigidos a una dirección IP, sean traducidos a otra dirección privada, volviéndose desconocida para el cliente y evitando ataques de red, sobretodo de acceso a los servicios de diversos puertos dirigidos hacia el servidor o algún equipo de la red interna.

Por lo tanto el firewall con NAT 1:1 nos sirve para proteger los dispositivos de la red interna, cuya IP real es desconocida para cualquier dispositivo o solicitud realizada desde el exterior de la red.

Componentes de un mecanismo NAT 1:1

El mecanismo NAT 1 a 1 básicamente consiste en una traducción de direcciones en la cuál debe realizarse dentro de un router que contenga el cortafuegos y el proceso para hacer la traducción hacia la red privada. Sus componentes principales deben ser:

  • Router – Firewall: Éste dispositivo es la parte central del sistema NAT 1:1, sus funciones principales son:
    • Recibir el tráfico exterior y traducir las direcciones IP internas hacia el rango deseado, establecer políticas de restricción hacia el tráfico interno, con el objetivo de proteger la red interna, así como cada uno de los servicios utilizados en la red.
    • Cortafuegos (Firewall) hacia el servidor, para protegerlo de ataques y servir como puerta de enlace, tanto para las direcciones IP de la red interna como las direcciones entrantes sin traducir.
  • Clientes de la Red: Conjunto de servidores y dispositivos dentro de la red interna, que poseen una dirección IP local y que será traducida por el servicio NAT 1:1 en forma individual. Tales direcciones IP son protegidas de ataques del exterior debido al mecanismo implementado.

Un ejemplo muestra de la infraestructura NAT 1:1 se define a continuación:

nat 1-1

Fuente: http://computacion.cs.cinvestav.mx/%7Ejgamboa/curso/ssi/images_nat11/nat01.png

Tal y como se ve en la imagen, el servicio de NAT 1:1 requiere al menos dos interfaces para realizar la conexión, las cuáles pueden ser virtuales o equipos físicos: una interfaz con la dirección IP interna y otra interfaz con la dirección IP conectada hacia el exterior.

La puerta de enlace contiene el cortafuegos, para realizar la traducción de direcciones IP y filtrar el tráfico, una función doble.

Configuración de NAT 1:1 en una puerta de enlace

Ahora es momento de configurar nuestro router para procesar las peticiones NAT 1:1. Si vas a utilizar un sistema operativo embebido, ve a la siguiente sección, pero si vas a utilizar una PC o servidor para funcionar como firewall, puedes omitirla.

Instalación de un Sistema Operativo

En el ejemplo mostrado a continuación, hemos creado un sistema operativo embebido con kernel Linux, módulos de red y tres interfaces de red para llevar a cabo la configuración del firewall. Esta configuración puede ser implementada en una SBC (Single Board Computer), por ejemplo Raspberry Pi, para funcionar como puerta de enlace.

A modo de ejemplo del proceso, a continuación te mostramos un bash script que contiene las instrucciones para crear un nuevo sistema operativo, a través de un directorio que contiene el kernel y sistema de archivos para un sistema embebido Linux. Ese directorio se llama en nuestro ejemplo iso.

#!/bin/bash
grub-mkrescue --xorriso=xorriso-1.4.0/xorriso/xorriso -o natOS.iso iso
find . -print | cpio -ov -H newc > natOS.iso
cd ..
gzip natOS.iso
mv natOS.iso.gz iso/boot
grub-mkrescue --xorriso=xorriso-1.4.0/xorriso/xorriso -o natOS.iso iso

Iniciar interfaces de red

En nuestro ejemplo tenemos tres interfaces de red físicas. Con el proceso siguiente se pueden asignar las direcciones IP con ifconfig. Para iniciar las interfaces con ifconfig, utilizamos las direcciones IP de la interfaz interna, así como dos direcciones IP desde el exterior.

nat

Como se muestra en la figura se han levantado tres interfaces, la primera eth0 con dirección IP 10.10.10.1, es la puerta de enlace de nuestra red privada. Las otras dos interfaces: eth1 (con IP 192.168.1.1) y eth2 (con IP 192.168.1.2) son las direcciones IP privadas que se muestran desde el exterior.

Es aquí en donde se establecen las direcciones de forma estática y la dirección IP local estática para efectos del NAT 1:1.

También vamos a necesitar instalar iptables, dnsmasq y dropbear (o openSSH como servicio ssh).

Una vez instalado todos los módulos y dependencias necesarias, procedemos a la creación del firewall (cortafuegos) en donde activamos la traducción NAT.

Configuración de cliente NAT 1:1

Primero vamos a fijar en cada dispositivo de la red interna una dirección IP privada estática a fin de que el NAT posteriormente la pueda traducir en el cortafuegos 1 a 1, lo cuál se hará más adelante.

Para fijar una dirección IP privada se ejecuta ifconfig, seguido de route hacia el gateway (es necesario que exista uno y solo una interfaz con IP privada por cada IP traducida, en particular en éste documento se emplean dos interfaces, dos IPs públicas y por lo tanto se fijan dos IPs privadas 10.10.10.2 y 10.10.10.3), además se fija la puerta de enlace hacia la IP privada de la puerta de enlace NAT (en particular 10.10.10.1).

Un script para facilitar el proceso de creación de interfaces, podría contener el levantamiento de la interfaz y agregar su enrutamiento. Para agregar 10.10.10.2 se ve así:

nat

Y de la misma forma se hace para 10.10.10.3 y el resto de dispositivos, variando ésta dirección en el levantamiento de la interfaz de forma que se respete el NAT uno a uno.

Configuración del firewall

Las reglas del cortafuegos incluyen comandos para enrutar el tráfico entrante por las direcciones externas hacia las internas utilizando una traducción NAT. Las reglas utilizan la tabla nat del paquete iptables.

La configuración de enrutamiento requiere estar en una red militarizada, es decir con políticas DROP tanto para INPUT, OUTPUT y FORWARD.

nat11
nat11

La modificación de las reglas de enrutamiento proporciona la configuración personalizada de cómo queremos transferir los paquetes de red en NAT 1:1.

Dentro de las reglas utilizadas incluye PREROUTING significa que la dirección destino se traduce antes de enviarse al interior y POSTROUTING la dirección origen se traduce antes de mandarse al interior, de modo que la dirección IP privada nunca es mostrada en el exterior ni aún en el caso de request o reply.

Como se trata de una red militarizada, debemos permitir el tráfico de FORWARD, para transferir los paquetes entre ambas interfaces para las IPs involucradas exclusivamente.

Como complemento de la configuración por defecto, también debemos permitir el tráfico de otros servicios asociados: el tráfico para ping (ICMP), DNS, HTTP, HTTPS y SSH tal y como se muestra en las siguientes pantallas. Nótese que la aceptación se hace directamente sobre las IP’s públicas (192.168.1.1 en lugar de 10.10.10.2 y 192.168.1.2 en lugar de 10.10.10.3) respectivamente.

nat
nat
nat

Ahora agregamos la información restante a rc para montar el resto de módulos necesarios para el sistema (en caso de ser embebido), el archivo al final se muestra así:

nat11
nat11

Conclusiones

La traducción de direcciones de red estática (NAT 1:1) efectivamente protege la identidad de las direcciones IP de los dispositivos dentro de la red privada, además protege de ataques externos debido a la implementación de un firewall.

Ésta protección es necesaria debido al contacto con IP públicas, o incluso dispositivos malintencionados en la misma red, es útil principalmente en el caso de una red desmilitarizada.