Próxima página Página anterior Contenido

3. Estoy confundido! Enrutamiento, enmascaramiento, port forwarding, ipautofw...

Este COMO trata sobre el filtrado de paquetes. Lo cual significa, decidir si a un paquete se le permite pasar o no. Sin embargo, Linux es el sitio de recreación de los hackers, y usted probablemente quiere hacer más que eso.

Un inconveniente es que la misma herramienta (ipchains) es usada para controlar enmascaramiento y proxy transparente, a pesar de que son dos conceptos del filtrado de paquetes totalmente separados (la implementación actual de Linux los opaca, dando la impresión de que se relacionan estrechamente).

Enmascaramiento y Proxies son tratados en HOWTOs separados, y las características auto forwarding (auto re-envio) y el port forwarding (re-envio a puerto) son manejadas por herramientas separadas, a pesar de eso mucha gente me lo sigue preguntando. Incluiré una serie de situaciones comunes e indicaré cuando debe ser aplicada cada una. La seguridad que requiere cada configuración no será discutida aqui.

3.1 La Guia de "tres lineas de Rusty" de Masquerading

Se asume que su inteface externa se llama `ppp0'. Use ifconfig para encontrarla, y haga el cambio apropiado.

# echo 1 > /proc/sys/net/ipv4/ip_forward
# ipchains -P forward -j DENY
# ipchains -A forward -i ppp0 -j MASQ

3.2 Publicidad Gratuita: WatchGuard

Puede comprar un cortafuegos. Uno que es excelente es el WatchGuard's FireBox. Es excelente porque me gusta, es seguro, está basado en Linux, y porque ellos están consolidando el mantenimiento de ipchains asi como el nuevo codigo de firewalling (apuntado para 2.3). En pocas palabras, WatchGuard esta pagando para que yo coma mientras trabajo para usted. Por favor tenga en cuenta su producto.

http://www.watchguard.com

3.3 Configuraciones comunes de cortafuegos

Usted corre littlecorp.com. Tiene una red interna, y una simple conexión telefónica a Internet (firewall.littlecorp.com la cual es 1.2.3.4). Ejecuta Ethernet en su red local, y su máquina personal es llamada "myhost".

3.4 Red Privada: Proxies Tradicionales.

En esta situación, los paquetes que provienen de la red privada nunca alcanzan la Internet, y viceversa. La dirección IP de la red privada debe ser asignada con las Especificaciones de direccion para redes privadas (Private Network Allocations) del RFC1597 (ej. 10.*.*.*, 172.16.*.* o 192.168.*.*).

La unica forma para que nunca se conecte a la Internet es conectando a un cortafuegos (firewall), el cual es solo una máquina de ambas redes, la cual les pertenece. Usted ejecuta un programa (en el cortafuegos) llamado un proxy para hacer esto (hay proxies para FTP, acceso a la Web, telnet, RealAudio, Noticias de Usenet y otros servicios). Ver el Firewall-HOWTO.

Algun servicio que usted desee acceder en la Internet debe estar en el cortafuegos. (Ver Servicios Internos Limitados más abajo).

Ejemplo: Permitiendo acceso a la web desde la red privada hacia la Internet.

  1. La red privada tiene asignadas direcciones 192.168.1.*, con 'myhost' siendo 192.168.1.100, el la interface Ethernet del cortafuegos siendo 192.168.1.1.
  2. Un proxy web (ej. "squid") es instalado y configurado en el cortafuegos, escucha en el puerto 8080.
  3. Netscape en la red privada es configurado para usar el puerto 8080 del cortafuegos como un proxy.
  4. No es necesario configurar DNS en la red privada.
  5. Es necesario configurar el DNS en el cortafuegos
  6. No es necesario configurar route (pasarela) por defecto en la red privada.

Netscape en 'myhost' lee http://slashdot.org.

  1. Netscape conecta con el cortafuegos en el puerto 8080, usando el puerto 1050 en 'myhost'. Este pregunta por la pagina web de "http://slashdot.org".
  2. El proxy consulta el nombre "slashdot.org", y obtiene 207.218.152.131. Luego, abre una conexión con esa dirección IP (usando el puerto 1025 en la interface externa del cortafuegos), y pregunta al servidor web (puerto 80) por la página.
  3. Como recibe la página web que proviene de su conexión al servidor web, copia los datos a la conexión que proviene de Netscape.
  4. Netscape entrega la página.

ej. Desde la perspectiva de slashdot.org, la conexión se hace desde 1.2.3.4 (la interface PPP del cortafuegos) puerto 1025 hacia 207.218.152.131 (slashdot.org) puerto 80. Desde la perspectiva de 'myhost', la conexión se hace desde 192.168.1.100 (myhost) puerto 1050, hacia 192.168.1.1 (la interface Ethernet del cortafuegos) puerto 8080.

3.5 Red Privada: Proxies Transparentes

En esta situación, los paquetes que provienen de la red privada nunca alcanzan la Internet, y viceversa. La dirección IP de la red privada debe ser asignada con las Especificaciones de direccion para redes privadas (Private Network Allocations) del RFC1597 (ej. 10.*.*.*, 172.16.*.* o 192.168.*.*).

La unica forma de que las cosas nunca conecten a la Internet es conectandolas al cortafuegos, el cual es una máquina en ambas redes, la cual les pertenece. Usted ejecuta un programa (en el cortafuegos) llamado proxy transparente para hacer esto; el kernel envia los paquetes al proxy transparente en lugar de enviarlos a sus propietarios.

Proxi transparente significa que los clientes no necesitan conocer que esto se trata de un proxy.

Algun servicio que usted desee acceder en la Internet debe estar en el cortafuegos. (Ver Servicios Internos Limitados más abajo).

Ejemplo: Permitiendo acceso a la web desde la red privada hacia la Internet.

  1. La red privada tiene asignadas direcciones 192.168.1.*, con 'myhost' siendo 192.168.1.100, el la interface Ethernet del cortafuegos siendo 192.168.1.1.
  2. Un proxy de web transparente (Creo que hay unos parches para squid que le permiten operar de esa manera, o pruebe "transproxy") es instalado y configurado en el cortafuegos, escuchando en el puerto 8080.
  3. El kernel esta informado para redirigir las conexiones al puerto 80 del proxy, usando ipchains.
  4. Netscape en la red privada es configurado para conección directa.
  5. DNS necesita ser configurado en la red privada (ej. necesita ejecutar un servidor DNS tal como un proxy en el cortafuegos).
  6. Es necesario configurar la ruta por defecto (pasarela) en la red privada, para enviar paquetes al cortafuegos.

Netscape en 'myhost' lee http://slashdot.org.

  1. Netscape consulta el nombre "slashdot.org", y obtiene 207.218.152.131. Luego abre una conexión a esa dirección IP, usando el puerto local 1050, y pregunta al servidor web (puerto 80) por la página.
  2. Como los paquetes provenientes de 'myhost' (puerto 1050) hacia slashdot.org (puerto 80) pasan a través del cortafuegos, son redirigidos al proxy transparente en el puerto 8080. El proxy transaparente abre una conexión (usando el puerto local 1025) hacia 207.218.152.131 puerto 80 (donde los paquetes fueron enviados originalmente).
  3. Como el proxy recibe la página web desde su conexión al servidor web, copia los datos a la conexión desde Netscape.
  4. Netscape muestra la página.

ej. Desde la perspectiva de slashdot.org, la conexión se hace desde 1.2.3.4 (la interface PPP del cortafuegos) puerto 1025 a 207.218.152.131 (slashdot.org) puerto 80. Desde la perspectiva de 'myhost', la conexión se hace desde 192.168.1.100 (myhost) puerto 1050, hacia 207.218.152.131 (slashdot.org) puerto 80, pero realmente esta hablando como el proxy transparente.

3.6 Red Privada: Enmascaramiento.

En esta situación, los paquetes que provienen de la red privada nunca alcanzan la Internet, y viceversa. La dirección IP de la red privada debe ser asignada con las Especificaciones de direccion para redes privadas (Private Network Allocations) del RFC1597 (ej. 10.*.*.*, 172.16.*.* o 192.168.*.*).

En lugar de usar un proxy, usaremos una facilidad especial del kernel llamada "enmascaramiento" (masquerading). Masquerading reescribe los paquetes que pasan a través del cortafuegos, tal que siempre se verán como si vinieran del propio cortafuegos. Luego reescribe la respuesta de tal forma que se vea como ellos salieron a sus receptores originales.

Masquerading tiene modulos separados para manejar protocolos "complicados", tal como FTP, RealAudio, Quake, etc. Para realmente protocolos de dificil manejo, el "auto forwarding" facilita que pueda manejar algunos de ellos por configuración automatica de "port forwarding" para seteo relativo de puertos: ver "ipportfw" (kernels 2.0) o "ipmasqadm" (kernels 2.1).

Algun servicio que usted desee acceder en la Internet debe estar en el cortafuegos. (Ver Servicios Internos Limitados más abajo).

Ejemplo: Permitiendo acceso a la web desde la red privada hacia Internet.

  1. La red privada tiene asignadas direcciones 192.168.1.*, con 'myhost' siendo 192.168.1.100, el la interface Ethernet del cortafuegos siendo 192.168.1.1.
  2. El cortafuegos es configurado para enmascarar algunos paquetes que provienen de la red privada y que salen hacia el puerto 80 en un host de la Internet.
  3. Netscape es configurado para conexión directa.
  4. DNS debe ser configurado correctamente en la red privada.
  5. El cortafuegos debe ser la ruta por defecto (pasarela) para la red privada.

Netscape en 'myhost' lee http://slashdot.org.

  1. Netscape consulta el nombre 'slashdot.org', y obtiene 207.218.152.131. Luego abre una conexión a la dirección IP, usando el puerto local 1050, y solicita la página al servidor web (puerto 80).
  2. Como los paquetes que provienen de 'myhost' (puerto 1050) hacia slashdot.org (puerto 80) pasan a través del cortafuegos, son reescritos para llegar desde la interface PPP del cortafuegos, puerto 65000. El cortafuegos tiene una dirección válida de Internet (1.2.3.4) tal que los paquetes de respuesta que provienen de www.linuxhq.com obtienen la ruta de vuelta.
  3. Como los paquetes que provienen de slashdot.org (puerto 80) hacia firewall.littlecorp.com (puerto 65000) llegan, son reescritos para ir a 'myhost', puerto 1050. Esto es lo realmente mágico del enmascaramiento: Recuerda cuando reescribió los paquetes salientes y puede escribirlos de nuevo como respuestas entrantes.
  4. Netscape entrega la página.

ej. Desde el punto de vista de slashdot.org, la conexión es hecha desde 1.2.3.4 (la interface PPP del cortafuegos) puerto 65000 hacia 207.218.152.131 (slashdot.org) puerto 80. Desde la perspectiva de 'myhost', la conexión es hecha desde 192.168.1.100 (myhost) puerto 1050, hacia 207.218.152.131 (slashdot.org) puerto 80.

3.7 Red Pública.

En esta situación, su red personal es parte de la Internet; los paquetes pueden fluir a través de ambas redes sin cambiarlos. Las direcciones IP de la red interna deben ser asignados por aplicación de un bloque de direcciones IP, tal que el resto de la red conocerá cómo obtener sus paquetes. Esto implica una conexión permanente.

En este rol, el filtrado de paquetes es usado para restringir aquellos paquetes que pueden ser enviandos entre su red y el resto de la Internet, ej. para restringir al resto de la Internet para accesar solamente a sus servidores web internos.

Ejemplo: Permitiendo acceso a la web desde la red privada a la Internet.

  1. Su red internet es asignada acordando un bloque de direcciones IP que tiene registradas (como 1.2.3.*).
  2. El cortafuegos es configurado para permitir todo el tráfico.
  3. Netscape es configurado para conectarse directamente.
  4. El DNS debe ser configurado correctamente en su red.
  5. El cortafuegos deberia ser la ruta por defecto (pasarela) de la red privada.

Netscape en 'myhost' lee http://slashdot.org.

  1. Netscape consulta el nombre "slashdot.org", y obtiene 207.218.152.131. Luego abre una conexión a esa dirección IP, usando el puerto local 1050, y solicita la página al servidor web (puerto 80).
  2. Los paquetes pasan a través del cortafuegos, de la misma forma como pasan a través de varios routers entre usted y slashdot.org.
  3. Netscape entrega la página.

ej. Solo existe una conexión: desde 1.2.3.100 (myhost) puerto 1050, hacia 207.218.152.131 (slashdot.org) puerto 80.

3.8 Servicios Internos Limitados

Hay unos pocos trucos para que pueda permitir a la Internet acceder a sus servicios internos, más que ejecutarlos en su cortafuegos. Esto funciona con proxy o enmascaramiento basados en aproximación para conexiones externas.

La aproximación mas simple es ejecutar un "redirector", el cual es un proxy de "pobres" el cual espera una conexión en un puerto dado, y luego abre una conexión a un determinado host interno y un puerto, y copia los datos entre las dos conexiones. Un ejemplo de esto es el programa "redir". Desde el punto de vista de Internet, la conexión es hecha a su cortafuegos. Desde el punto de vista de su servidor interno, la conexión es hecha desde la interface interna del cortafuegos hacia el servidor.

Otra aproximación (la cual requiere un parche del kernel 2.0 para ipportfw, o un kernel 2.1 o superior) es usar port forwarding en el kernel. Esto hace lo mismo que "redir" en una forma diferente: el kernel reescibe los paquetes a medida que lo atraviesan, cambiando su dirección de destino y puerto para que apunte a un host y puerto internos. Desde la perspectiva de Internet, la conexión se hace hacia su cortafuegos. Desde el punto de vista del servidor interno, se hace una conexión directa desde el host Internet al servidor.


Próxima página Página anterior Contenido