Articulo de referencia

Reenvío de puertos

Reenvío de puertos a través de un enrutador NAT En redes informáticas , el reenvío de puertos o mapeo de puertos es una aplicación de la traducción de direcciones de red (NAT) q...

Reenvío de puertos a través de un enrutador NAT

En redes informáticas , el reenvío de puertos o mapeo de puertos es una aplicación de la traducción de direcciones de red (NAT) que redirige una solicitud de comunicación de una combinación de dirección y número de puerto a otra mientras los paquetes atraviesan una puerta de enlace de red, como un enrutador o un cortafuegos . Esta técnica se utiliza con mayor frecuencia para que los servicios de un host que reside en una red protegida o enmascarada (interna) estén disponibles para los hosts en el lado opuesto de la puerta de enlace (red externa), mediante el reasignado de la dirección IP de destino y el número de puerto de la comunicación a un host interno. [ 1 ] [ 2 ]

Objetivo

El reenvío de puertos facilita la conexión de computadoras remotas, por ejemplo, hosts de Internet , a una computadora o servicio específico dentro de una red de área local (LAN). [ 3 ]

En una red residencial típica, los nodos acceden a Internet mediante un módem DSL o de cable conectado a un enrutador o traductor de direcciones de red (NAT/NAPT). Los hosts de la red privada se conectan a un conmutador Ethernet o se comunican mediante una red LAN inalámbrica . La interfaz externa del dispositivo NAT se configura con una dirección IP pública. Por otro lado, los ordenadores que se encuentran detrás del enrutador son invisibles para los hosts de Internet, ya que cada uno se comunica únicamente con una dirección IP privada.

Al configurar el reenvío de puertos, el administrador de red reserva un número de puerto en la puerta de enlace para el uso exclusivo de la comunicación con un servicio en la red privada, ubicado en un host específico. Los hosts externos deben conocer este número de puerto y la dirección de la puerta de enlace para comunicarse con el servicio interno de la red. A menudo, se utilizan los números de puerto de servicios de Internet conocidos, como el puerto 80 para servicios web (HTTP), en el reenvío de puertos, de modo que los servicios de Internet comunes puedan implementarse en hosts dentro de redes privadas.

Las aplicaciones típicas incluyen las siguientes:

Los administradores configuran el reenvío de puertos en el sistema operativo de la puerta de enlace. En los núcleos de Linux , esto se logra mediante reglas de filtrado de paquetes en los componentes del núcleo iptables o netfilter . Los sistemas operativos BSD y macOS anteriores a Yosemite (OS 10.10.X) lo implementan en el módulo Ipfirewall (ipfw), mientras que los sistemas operativos macOS a partir de Yosemite lo implementan en el módulo Packet Filter (pf).

Cuando se utiliza en dispositivos de puerta de enlace, el reenvío de puertos se puede implementar con una sola regla para traducir la dirección y el puerto de destino. (En los núcleos de Linux , esta es la regla DNAT). En este caso, la dirección y el puerto de origen permanecen sin cambios. Cuando se utiliza en máquinas que no son la puerta de enlace predeterminada de la red, la dirección de origen debe cambiarse a la dirección de la máquina traductora; de lo contrario, los paquetes omitirán el traductor y la conexión fallará.

Cuando un proceso proxy implementa el reenvío de puertos (como en firewalls de capa de aplicación, firewalls basados ​​en SOCKS o mediante proxies de circuito TCP), no se traducen paquetes, solo se reenvían los datos. Esto suele resultar en que la dirección de origen (y el número de puerto) cambie a la de la máquina proxy.

Por lo general, solo uno de los hosts privados puede usar un puerto reenviado específico a la vez, pero a veces es posible configurar el acceso para diferenciarlo según la dirección de origen del host.

Los sistemas operativos tipo Unix a veces utilizan el reenvío de puertos, donde los números de puerto inferiores a 1024 solo pueden ser creados por software que se ejecuta como usuario root. Ejecutar con privilegios de superusuario (para vincular el puerto) puede suponer un riesgo de seguridad para el host; por lo tanto, se utiliza el reenvío de puertos para redirigir un puerto de número bajo a otro de número alto, de modo que el software de aplicación pueda ejecutarse como un usuario común del sistema operativo con privilegios reducidos.

El protocolo Universal Plug and Play (UPnP) permite instalar automáticamente instancias de reenvío de puertos en los routers domésticos. UPnP define el Protocolo de Dispositivo de Puerta de Enlace a Internet (IGD), un servicio de red mediante el cual un router anuncia su presencia en una red privada a través del Protocolo Simple de Descubrimiento de Servicios (SSDP). Una aplicación que ofrece un servicio basado en Internet puede descubrir dichos routers y utilizar el protocolo UPnP IGD para reservar un número de puerto y hacer que el router reenvíe los paquetes a su socket de escucha .

Tipos

El reenvío de puertos se puede distinguir por los siguientes tipos específicos: reenvío de puertos local, remoto y dinámico. [ 4 ]

Reenvío de paquetes local

El reenvío de puertos local es el tipo más común de reenvío de puertos. Se utiliza para permitir que un usuario se conecte desde su equipo local a otro servidor, es decir, para reenviar datos de forma segura desde otra aplicación cliente que se ejecuta en el mismo equipo como cliente Secure Shell (SSH). Mediante el reenvío de puertos local, se pueden sortear los cortafuegos que bloquean ciertas páginas web. [ 5 ]

Las conexiones de un cliente SSH se reenvían, a través de un servidor SSH, al servidor de destino previsto. El servidor SSH está configurado para redirigir los datos desde un puerto específico (local al host que ejecuta el cliente SSH) a través de un túnel seguro hacia un host y puerto de destino determinados. El puerto local se encuentra en el mismo equipo que el cliente SSH y se denomina "puerto reenviado". En el mismo equipo, cualquier cliente que desee conectarse al mismo host y puerto de destino puede configurarse para conectarse al puerto reenviado (en lugar de directamente al host y puerto de destino). Una vez establecida la conexión, el cliente SSH escucha en el puerto reenviado y dirige todos los datos enviados por las aplicaciones a ese puerto, a través de un túnel seguro, al servidor SSH. El servidor descifra los datos y los redirige al host y puerto de destino. [ 6 ]

Algunos usos del reenvío de puertos local:

  • Utilizar el reenvío de puertos local para recibir correo [ 7 ]
  • Conéctese desde una computadora portátil a un sitio web mediante un túnel SSH.

Reenvío de puertos remoto

Esta forma de reenvío de puertos permite que las aplicaciones del lado del servidor de una conexión Secure Shell (SSH) accedan a los servicios que residen en el lado del cliente de SSH. [ 8 ] Además de SSH, existen esquemas de tunelización propietarios que utilizan el reenvío de puertos remoto para el mismo propósito general. [ 9 ] En otras palabras, el reenvío de puertos remoto permite a los usuarios conectarse desde el lado del servidor de un túnel, SSH u otro, a un servicio de red remoto ubicado en el lado del cliente del túnel.

Para utilizar el reenvío de puertos remoto, es necesario conocer la dirección del servidor de destino (en el lado del cliente del túnel) y dos números de puerto. Los números de puerto elegidos dependen de la aplicación que se vaya a utilizar.

El reenvío de puertos remoto permite que otros ordenadores accedan a aplicaciones alojadas en servidores remotos. Dos ejemplos:

  • Un empleado de una empresa aloja un servidor FTP en su domicilio y desea dar acceso al servicio FTP a los empleados que utilizan ordenadores en el lugar de trabajo. Para ello, puede configurar el reenvío de puertos remoto mediante SSH en los ordenadores internos de la empresa, incluyendo la dirección de su servidor FTP y utilizando los números de puerto correctos para FTP (el puerto FTP estándar es TCP/21) [ 10 ].
  • Abrir sesiones de escritorio remoto es un uso común del reenvío de puertos remoto. Mediante SSH, esto se puede lograr abriendo el puerto de computación de red virtual (5900) e incluyendo la dirección del equipo de destino. [ 6 ]

Reenvío de puertos inverso

Otro nombre: túnel SSH inverso. En pocas palabras, cuando tu portátil se conecta a una máquina remota de tal manera que las llamadas entrantes a la IP de esa máquina remota se transfieren a tu portátil y recibe una respuesta. [ 11 ]

Reenvío dinámico de puertos

El reenvío dinámico de puertos (DPF) es un método bajo demanda para atravesar un firewall o NAT mediante el uso de puertos de firewall. El objetivo es permitir que los clientes se conecten de forma segura a un servidor de confianza que actúa como intermediario para enviar/recibir datos a uno o varios servidores de destino. [ 12 ]

DPF se puede implementar configurando una aplicación local, como SSH, como un servidor proxy SOCKS , que se puede usar para procesar transmisiones de datos a través de la red o de Internet. Los programas, como los navegadores web, deben configurarse individualmente para dirigir el tráfico a través del proxy, que actúa como un túnel seguro hacia otro servidor. Una vez que el proxy ya no sea necesario, los programas deben reconfigurarse a sus ajustes originales. Debido a los requisitos manuales de DPF, no se usa con frecuencia. [ 6 ]

Una vez establecida la conexión, DPF puede utilizarse para proporcionar seguridad adicional a un usuario conectado a una red no confiable. Dado que los datos deben pasar por el túnel seguro a otro servidor antes de ser reenviados a su destino original, el usuario está protegido contra la interceptación de paquetes que pueda ocurrir en la LAN. [ 13 ]

DPF es una herramienta potente con múltiples usos; por ejemplo, un usuario conectado a Internet a través de una cafetería, un hotel o cualquier otra red con seguridad mínima puede utilizar DPF para proteger sus datos. DPF también puede utilizarse para sortear cortafuegos que restringen el acceso a sitios web externos, como en redes corporativas.

Véase también

Referencias

  1. "Definición de: reenvío de puertos" . PC Magazine . Archivado del original el 3 de junio de 2012. Consultado el 11 de octubre de 2008 .
  2. Rory Krause. "Uso del reenvío de puertos SSH para imprimir en ubicaciones remotas" . Linux Journal . Consultado el 11 de octubre de 2008 .
  3. Jeff "Crash" Goldin. "Cómo configurar un servidor web doméstico" . Red Hat . Archivado del original el 4 de octubre de 2008. Consultado el 11 de octubre de 2008 .
  4. Reenvío de puertos OpenSSH
  5. "Reenvío de puertos local y remoto y Reflection para Secure IT Client 7.1 o superior - Nota técnica 2433" . Support.attachmate.com. 9 de noviembre de 2012. Consultado el 30 de enero de 2014 .
  6. 1 2 3 "SSH/OpenSSH/Reenvío de puertos - Documentación de la comunidad de Ubuntu" . Help.ubuntu.com. 13 de diciembre de 2013. Consultado el 30 de enero de 2014 .
  7. "Ejemplo: Uso del reenvío de puertos local para recibir correo (Guía de administración del sistema: Servicios de seguridad)" . Docs.oracle.com . Consultado el 30 de enero de 2014 .
  8. "Tunneling with Secure Shell - Apéndice A: Reenvío remoto de puertos" . Vandyke.com. 12 de junio de 2005. Consultado el 30 de enero de 2014 .
  9. "Reenvío de puertos local versus remoto" . NetworkActiv . Archivado del original el 4 de noviembre de 2016. Consultado el 8 de junio de 2014 .
  10. "Número de puerto FTP 21 - Puerto 21 TCP" . Compnetworking.about.com. 19 de diciembre de 2013. Archivado del original el 3 de febrero de 2014. Consultado el 30 de enero de 2014 .
  11. "Tunelización SSH inversa: del principio al final" . JFrog . 15 de agosto de 2021. Consultado el 15 de octubre de 2024 .
  12. "Mecanismo DPF" . Pages.cs.wisc.edu . Consultado el 30 de enero de 2014 .
  13. "Reenvío dinámico de puertos SSH (videos tutoriales de seguridad de la información de la serie Hacking Illustrated)" . Irongeek.com . Consultado el 30 de enero de 2014 .
  • Alan Stafford. "Acceso a la web a velocidad de la luz: compartiendo el ancho de banda" . PC World . Archivado del original el 18 de marzo de 2008. Consultado el 11 de octubre de 2008 .
  • Uso de UPnP para reenvío programático de puertos y NAT Traversal : software gratuito que utiliza UPnP y el protocolo de dispositivo de puerta de enlace a Internet (IGD) para automatizar el reenvío de puertos. 
  • Código fuente de reenvío TCP en C# Código fuente en C# que explica/prueba de concepto del reenvío TCP. 
  • Open.NAT : una biblioteca de clases .NET ligera y fácil de usar que permite el reenvío de puertos en dispositivos NAT compatibles con UPNP y PMP. 
  • Herramienta de prueba de reenvío de puertos Port Checker