En las redes de computadoras , el reenvío de puertos o el mapeo de puertos es una aplicación de 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 firewall . Esta técnica se usa más comúnmente para hacer que los servicios en un host que residen en una red protegida o enmascarada (interna) estén disponibles para los hosts en el lado opuesto de la puerta de enlace (red externa), reasignando la dirección IP de destino y el número de puerto de la comunicación a un anfitrión interno.[1] [2]
Propósito
El reenvío de puertos permite que las computadoras remotas (por ejemplo, computadoras en Internet ) se conecten a una computadora o servicio específico dentro de una red de área local privada (LAN). [3]
En una red residencial típica, los nodos obtienen acceso a Internet a través de un módem de cable o DSL conectado a un enrutador o traductor de direcciones de red (NAT / NAPT). Los hosts de la red privada están conectados a un conmutador Ethernet o se comunican a través de una LAN inalámbrica . La interfaz externa del dispositivo NAT está configurada con una dirección IP pública. Las computadoras detrás del enrutador, por otro lado, son invisibles para los hosts en Internet, ya que cada una se comunica solo con una dirección IP privada.
Al configurar el reenvío de puertos, el administrador de la red reserva un número de puerto en la puerta de enlace para el uso exclusivo de comunicarse 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, los números de puerto de servicios de Internet conocidos, como el número de puerto 80 para servicios web (HTTP), se utilizan en el reenvío de puertos, de modo que los servicios de Internet comunes pueden implementarse en hosts dentro de redes privadas.
Las aplicaciones típicas incluyen las siguientes:
- Ejecución de un servidor HTTP público dentro de una LAN privada
- Permitir el acceso de Secure Shell a un host en la LAN privada desde Internet
- Permitir el acceso FTP a un host en una LAN privada desde Internet
- Ejecutar un servidor de juegos disponible públicamente dentro de una LAN privada
Los administradores configuran el reenvío de puertos en el sistema operativo de la puerta de enlace. En los kernels de Linux , esto se logra mediante reglas de filtrado de paquetes en los componentes del kernel 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 que comienzan con Yosemite lo implementan en el módulo Packet Filter (pf).
Cuando se usa en dispositivos de puerta de enlace, se puede implementar un reenvío de puerto con una sola regla para traducir la dirección y el puerto de destino. (En los kernels de Linux , esta es la regla DNAT). En este caso, la dirección de origen y el puerto no se modifican. Cuando se utiliza en máquinas que no son la puerta de enlace predeterminada de la red, la dirección de origen debe cambiarse para que sea la dirección de la máquina traductora, o los paquetes pasarán por alto el traductor y la conexión fallará.
Cuando se implementa un reenvío de puerto mediante un proceso de proxy (como en los firewalls de la capa de aplicación, los firewalls basados en SOCKS o mediante los proxies de circuito TCP), no se traducen realmente los paquetes, solo se transfieren los datos. Esto generalmente da como resultado que la dirección de origen (y el número de puerto) se 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 la configuración a veces es posible para diferenciar el acceso por la dirección de origen del host de origen.
Los sistemas operativos similares a Unix a veces usan el reenvío de puertos donde los números de puerto menores que 1024 solo pueden ser creados por software que se ejecuta como usuario root. Ejecutar con privilegios de superusuario (para vincular el puerto) puede ser un riesgo de seguridad para el host, por lo tanto, el reenvío de puertos se usa para redirigir un puerto de número bajo a otro puerto de número alto, de modo que el software de la aplicación pueda ejecutarse como una operación común. usuario del sistema con privilegios reducidos.
El protocolo Universal Plug and Play (UPnP) proporciona una función para instalar automáticamente instancias de reenvío de puertos en pasarelas de Internet residenciales. UPnP define el Protocolo de dispositivo de puerta de enlace de Internet (IGD), que es un servicio de red mediante el cual una puerta de enlace de Internet anuncia su presencia en una red privada a través del Protocolo de descubrimiento de servicio simple (SSDP). Una aplicación que proporciona un servicio basado en Internet puede descubrir tales pasarelas y usar el protocolo UPnP IGD para reservar un número de puerto en la pasarela y hacer que la pasarela reenvíe paquetes a su conector de escucha .
Tipos de reenvío de puertos
El reenvío de puertos se puede dividir en los siguientes tipos específicos: reenvío de puertos local, remoto y dinámico. [4]
Reenvío de puerto 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 la computadora local a otro servidor, es decir, reenviar datos de forma segura desde otra aplicación cliente que se ejecuta en la misma computadora que un cliente Secure Shell (SSH). Al usar el reenvío de puerto local, los firewalls que bloquean ciertas páginas web pueden ser ignorados. [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 datos desde un puerto específico (que es local al host que ejecuta el cliente SSH) a través de un túnel seguro a un puerto y host de destino específicos. El puerto local está en la misma computadora que el cliente SSH, y este puerto es el "puerto reenviado". En la misma computadora, cualquier cliente que desee conectarse al mismo puerto y host de destino puede configurarse para conectarse al puerto reenviado (en lugar de hacerlo directamente al puerto y host de destino). Una vez establecida esta 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 luego los redirige al puerto y al host de destino. [6]
En la línea de comando, "-L" especifica el reenvío de puerto local. Es necesario incluir el servidor de destino y dos números de puerto. Los números de puerto inferiores a 1024 o superiores a 49150 están reservados para el sistema. Algunos programas solo funcionarán con puertos de origen específicos, pero en su mayor parte se puede utilizar cualquier número de puerto de origen.
Algunos usos del reenvío de puertos locales:
- Uso del reenvío de puerto local para recibir correo [7]
- Conéctese desde una computadora portátil a un sitio web mediante un túnel SSH.
Reenvío de puerto remoto
Esta forma de reenvío de puertos permite que las aplicaciones en el lado del servidor de una conexión Secure Shell (SSH) accedan a los servicios que residen en el lado del cliente SSH. [8] Además de SSH, existen esquemas de tunelización patentados que utilizan el reenvío de puertos remotos para el mismo propósito general. [9] En otras palabras, el reenvío de puerto 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 puerto remoto, se deben 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 puerto remoto permite que otras computadoras accedan a aplicaciones alojadas en servidores remotos. Dos ejemplos:
- Un empleado de una empresa aloja un servidor FTP en su propia casa y desea dar acceso al servicio FTP a los empleados que utilizan computadoras en el lugar de trabajo. Para hacer esto, un empleado puede configurar el reenvío de puerto remoto a través de SSH en las computadoras internas de la empresa al incluir la dirección de su servidor FTP y usar los números de puerto correctos para FTP (el puerto FTP estándar es TCP / 21) [10]
- La apertura de sesiones de escritorio remoto es un uso común del reenvío de puertos remotos. A través de SSH, esto se puede lograr abriendo el puerto de computación de la red virtual (5900) e incluyendo la dirección de la computadora de destino. [6]
Reenvío de puertos dinámico
El reenvío dinámico de puertos (DPF) es un método bajo demanda para atravesar un firewall o NAT mediante el uso de agujeros de alfiler en el firewall. El objetivo es permitir que los clientes se conecten de forma segura a un servidor de confianza que actúa como intermediario con el fin de enviar / recibir datos a uno o varios servidores de destino. [11]
El DPF se puede implementar configurando una aplicación local, como SSH, como un servidor proxy SOCKS, que se puede utilizar 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 es necesario, los programas deben reconfigurarse a su configuración original. Debido a los requisitos manuales de DPF, no se usa con frecuencia. [6]
Una vez que se establece la conexión, DPF se puede utilizar para proporcionar seguridad adicional para un usuario conectado a una red que no es de confianza. Dado que los datos deben pasar a través del túnel seguro a otro servidor antes de ser reenviados a su destino original, el usuario está protegido contra el rastreo de paquetes que puede ocurrir en la LAN. [12]
DPF es una herramienta poderosa con muchos usos; por ejemplo, un usuario conectado a Internet a través de una cafetería, un hotel o una red mínimamente segura puede desear utilizar DPF como una forma de proteger los datos. El DPF también se puede utilizar para eludir los firewalls que restringen el acceso a sitios web externos, como en redes corporativas.
Ver también
- Agujero de alfiler para cortafuegos
- NAT transversal
- Reenvío de paquetes
- Traducción de dirección de puerto (PAT)
- Activación de puerto
- Dirección auxiliar UDP
- Cubierta segura
Referencias
- ^ "Definición de: reenvío de puertos" . Revista de PC . Consultado el 11 de octubre de 2008 .
- ^ Rory Krause. "Uso del reenvío de puertos ssh para imprimir en ubicaciones remotas" . Diario de Linux . Consultado el 11 de octubre de 2008 .
- ^ Jeff "Crash" Goldin. "Cómo configurar un servidor web doméstico" . Red Hat . Archivado desde el original el 4 de octubre de 2008 . Consultado el 11 de octubre de 2008 .
- ^ Reenvío de puertos OpenSSH
- ^ "Reenvío de puertos locales y remotos y la reflexión para Secure IT Client 7.1 o superior - Nota técnica 2433" . Support.attachmate.com. 2012-11-09 . Consultado el 30 de enero de 2014 .
- ^ a b c "SSH / OpenSSH / PortForwarding - Documentación de la comunidad de Ubuntu" . Help.ubuntu.com. 2013-12-13 . Consultado el 30 de enero de 2014 .
- ^ "Ejemplo: uso del reenvío de puerto local para recibir correo (Guía de administración del sistema: servicios de seguridad)" . Docs.oracle.com . Consultado el 30 de enero de 2014 .
- ^ http://www.vandyke.com (12 de junio de 2005). "Tunelización con Secure Shell - Apéndice A: reenvío de puerto remoto" . Vandyke.com . Consultado el 30 de enero de 2014 .
- ^ "Reenvío de puertos locales versus remotos" . NetworkActiv . Consultado el 8 de junio de 2014 .
- ^ "Número de puerto FTP 21 - Puerto 21 TCP" . Compnetworking.about.com. 2013-12-19 . Consultado el 30 de enero de 2014 .
- ^ "Mecanismo DPF" . Pages.cs.wisc.edu . Consultado el 30 de enero de 2014 .
- ^ "Reenvío dinámico de puertos SSH (vídeos tutoriales de piratería informática ilustrada de la serie InfoSec)" . Irongeek.com . Consultado el 30 de enero de 2014 .
enlaces externos
- Alan Stafford. "Acceso Web Warp Speed: compartir el ancho de banda" . PC World . Archivado desde el original el 18 de marzo de 2008 . Consultado el 11 de octubre de 2008 .
- Uso de UPnP para reenvíos de puertos programáticos y NAT transversal : software gratuito que utiliza UPnP y el Protocolo de dispositivo de puerta de enlace de Internet (IGD) para automatizar el reenvío de puertos
- Código fuente de reenvío de TCP en C # : código fuente en C # que explica el reenvío de TCP / PoC.
- Open.NAT : biblioteca de clases .NET liviana y fácil de usar para permitir el reenvío de puertos en dispositivos NAT que admiten UPNP y PMP.