Qué es el Reenvío de Puertos Ejemplos y Seguridad
Qué es el Reenvío de Puertos Ejemplos y Seguridad

¿Qué es el Reenvío de Puertos? Hacking y Seguridad

El reenvío de puertos (en inglés, port forwarding) es algo cada muy común en el pentesting, pero muchos no entienden los detalles. Al abrir un puerto a través de una red, dispositivos específicos y otros ordenadores pueden comunicarse fácilmente con diversas tecnologías en la red abierta. Aunque esta mayor conectividad puede ser una gran ayuda, también puede presentar graves riesgos de seguridad para ciertos usuarios.

El reenvío de puertos puede ser un riesgo de seguridad para algunos usuarios. Para las personas que tienen sistemas antiguos con software desactualizado o que manejan archivos seguros, el reenvío de puertos puede no valer la pena. El reenvío de puertos para dispositivos específicos puede ser más peligroso que otros, como cámaras o dispositivos de audio. El reenvío de puertos debe considerarse cuidadosamente, pero la mayoría de la gente no disminuirá significativamente su seguridad al abrir un puerto.

A decir verdad, hay mucho que considerar cuando se reenvía un puerto. No sólo importa la seguridad de la red, sino que también hay que tener en cuenta el dispositivo que se abre ahora.

¿Qué es el Reenvío de Puertos?

Concepto alegórico de reenvío de puertos
Concepto alegórico de reenvío de puertos

El reenvío de puertos, o mapeo de puertos, es una técnica que se utiliza para permitir el acceso de dispositivos externos a los servicios de los ordenadores en las redes privadas. El concepto central del reenvío de puertos es NAT, es decir, la traducción de direcciones de red, que permite a los dispositivos internos compartir una única dirección IP pública.

En otras palabras, una instalación NAT que toma el tráfico de un puerto permitido actualiza la dirección de destino a la dirección IP mapeada configurada, y anota esto para poder enrutar el tráfico saliente de vuelta apropiadamente se conoce como reenvío de puertos.

Ejemplos de Reenvío de Puertos en Pentesting

Vamos a encender la máquina Kali Linux (Parrot OS, o la que tengas a disposición) y comprobar si la página web está siendo alojada. Para ver cómo la dirección local y el puerto pueden ser reenviados al host remoto, se puede lograr usando varios métodos, así que vamos a verlos uno por uno.

Reenvío de puertos usando Metasploit

Tomemos una sesión SSH usando Metasploit. Aquí obtenemos la sesión de Metasploit y luego al usar el comando netstat, observamos que el puerto 8080 se está ejecutando en el host local (o localhost).

use auxiliary/scanner/ssh/ssh_login
set rhosts 192.168.1.108
set username esgeeks
set password skeegse
exploit
sessions -u 1
sessions 2
netstat -antp

A continuación, hacemos uso de portfwd (ver documentación aquí) para reenviar todo el tráfico a la máquina Kali, donde se menciona el puerto local y el remoto y la dirección local.

portfwd add -l 8081 -p 8080 -r 127.0.0.1

Cuando cargamos esta página en el navegador web usando 127.0.0.1:8081 en la máquina Kali, veremos que se muestra el contenido de la página web.

Reenvío de puertos locales SSH

Es el método utilizado en SSH para reenviar los puertos de aplicación de una máquina cliente a la máquina servidor. Haciendo uso de esto, el cliente SSH escucha las conexiones en un puerto que ha sido configurado, y hace un túnel hacia un servidor SSH cuando se recibe una conexión. Así es como el servidor se conecta a un puerto de destino que está configurado y está presente en una máquina distinta del servidor SSH.

Esto abre una conexión a la máquina con IP 192.168.1.108 y reenvía cualquier conexión del puerto 8080 en la máquina local al puerto 8081.

ssh -L 8081:localhost:8080 -N -f -l esgeeks 192.168.1.108

Reenvío de puertos usando Socat

Socat es generalmente una utilidad de línea de comandos en Linux que se utiliza para transferir datos entre dos hosts. Aquí lo utilizamos para el reenvío de puertos donde todas las conexiones TCP a 127.0.0.1:8080 serán redirigidas al puerto 1234.

socat TCP-LISTEN:1234,fork,reuseaddr tcp:127.0.0.1:8080 &

Cuando cargamos esta página en el navegador web usando 192.168.1.108:1234 en la máquina Kali, veremos que se muestra el contenido de la página web.

¿Cómo Funciona el Reenvío de Puertos?

Los puertos son la forma en que los ordenadores distinguen entre los múltiples servicios que escuchan en un ordenador.

El uso de puertos permite a un dispositivo ejecutar una miríada de procesos y servicios diferentes. Cada servicio tiene su propio puerto: por ejemplo, los servidores de correo electrónico suelen usar el puerto 587, mientras que los sitios web utilizan el puerto 80.

En total, hay más de 65.000 puertos diferentes, pero sólo unos 1.000 se utilizan regularmente. Los demás se pueden asignar a los dispositivos o aplicaciones de tu elección, y este proceso se llama reenvío de puertos.

Ejemplo del funcionamiento de reenvío de puertos
Ejemplo del funcionamiento de reenvío de puertos

Para entenderlo bien, también debes saber que, gracias a NAT (Network access translation), todos los dispositivos internos comparten la misma dirección IP externa.

Así que vamos a utilizar una pequeña alegoría para explicar cómo funciona el reenvío de puertos.

Puedes pensar en los puertos como en las puertas de una casa: tu ordenador está en el 1234 de LindoVecindario y tiene unas 65.000 puertas. Si el puerto 22, utilizado para el protocolo de acceso remoto SSH, está a la escucha, imagina que la puerta 22 del 1234 de LindoVecindario está desbloqueada.

El problema con NAT es que proporciona diferentes direcciones internas y externas. Para continuar con la analogía de la casa, imagina que el mundo exterior sólo pudiera enviar visitantes a LindoVecindario, no a casas específicas dentro del vecindario. Si un visitante pregunta por la puerta 22 de LindoVecindario, el portero (que representa el NAT en el router) no sabrá a qué casa enviarlo.

Aquí es donde entra en juego el reenvío de puertos. Al configurar algunos ajustes del router (u otra puerta de enlace por defecto), éste podrá enviar las conexiones entrantes al ordenador correcto dentro de la red.

Tipos de Reenvío de Puertos

Hay varios tipos de reenvío de puertos, y cada uno de ellos sirve para diferentes propósitos. El reenvío de puertos local y remoto utiliza el puerto TCP 22, o SSH Tunneling.

  • Reenvío de puertos local. Este tipo de reenvío de puertos se utiliza cuando quieres utilizar tu dispositivo LAN para obtener datos de un destino al que no tienes acceso, pero sí lo tiene un dispositivo en el medio, o un intermediario. Esto permite que los datos sean extraídos del destino remoto a tu dispositivo local.
  • Reenvío de puertos remoto. Este tipo de reenvío de puertos permite que tu dispositivo sea visible para otros dispositivos remotos o en Internet. En este caso, los datos son empujados desde tu dispositivo al servidor de destino remoto, y luego de vuelta al puerto de origen y a tu dispositivo. Con el reenvío remoto, cualquier persona en Internet o dispositivo remoto puede tener acceso a tu dispositivo.
  • Reenvío dinámico de puertos. El reenvío dinámico de puertos es prácticamente una extensión del reenvío local de puertos. La diferencia es que cualquier programa de tu dispositivo LAN puede usar el túnel SSH y acceder a cualquier puerto de destino remoto usando sólo un puerto de tu lado. El reenvío dinámico de puertos funciona creando una especie de proxy.

¿Para qué Sirve el Reenvío de Puertos?

Por lo que parece, el reenvío de puertos puede parecer que está en el ámbito de los profesionales de la seguridad y los programadores. Aunque este tipo de personas son ciertamente grandes usuarios del reenvío de puertos, es útil para una gama mucho más amplia de la población usuaria de ordenadores.

Uso de puertos de red
Uso de puertos de red

Estos son algunos de los usos más comunes del reenvío de puertos:

  • Alojar servidores de juegos para jugar en modo multijugador, accesibles desde fuera de la red doméstica.
  • Ejecutar protocolos de escritorio remoto para acceder a tu ordenador a distancia.
  • Permitir la transferencia de archivos desde tu ordenador al mundo exterior o a redes externas.
  • Ejecutar un sitio web de acceso público desde el ordenador de casa.
  • Utilizar aplicaciones torrent para descargar rápidamente archivos.
  • Alojar tu propio servidor VPN que te permita acceder a tu red doméstica desde lejos.

Aunque muchas de estas tareas pueden realizarse sin la ayuda del reenvío de puertos, a menudo es la solución más fácil.

¿Por qué Puede ser Peligroso el Reenvío de Puertos?

Dato

Si tu ordenador es una casa, los puertos son las puertas exteriores. 65.536 de puertas exteriores.

El reenvío de puertos puede ser peligroso por varias razones. Para los principiantes, lo mejor es describir los puertos de una red como una serie de puertas; tradicionalmente, sin el reenvío de puertos, todas las puertas de una red están cerradas. Los programas pueden entrar por los puertos cerrados, pero la red y el dispositivo los revisarán todos.

El reenvío de puertos desbloquea una puerta, permitiendo que los programas y otros dispositivos se conecten al dispositivo abierto sin ninguna comprobación. Esto es extremadamente útil para una variedad de aplicaciones, pero detiene la comprobación inicial, introduciendo el riesgo de seguridad.

Peligros del reenvío de puertos
Peligros del reenvío de puertos

Técnicamente hablando, sólo los programas asignados a ese puerto pueden utilizarlo para acceder. Sin embargo, el riesgo se hace real cuando el malware u otros propósitos nefastos buscan el paso abierto. Aunque es poco probable, esto puede permitir el acceso no deseado a tus dispositivos.

Aunque el reenvío de puertos siempre puede suponer un peligro, ya que permite que fluya más información desde y hacia un dispositivo, en general no debería ser un problema para los dispositivos que se mantienen seguros. Esto incluye dispositivos con sistemas operativos actualizados, un buen estado del sistema y una protección adecuada, como las contraseñas. Si no estás seguro de la seguridad de un dispositivo o almacenas archivos vitales y protegidos en él, es mejor evitar el reenvío de puertos en ese dispositivo.

Cómo Hacer más Seguro el Reenvío de Puertos

A pesar del riesgo inherente al reenvío de puertos, hay algunas medidas importantes que se pueden tomar para hacer el proceso más seguro. Cruzando entre la configuración de la red, la configuración del dispositivo y el software adicional, algunas opciones incluyen:

  • Actualizar los sistemas operativos de los dispositivos
  • Ajustar manualmente los puertos según sea necesario
  • Desactivar Universal Plug and Play, o UPnP
  • Emplear la activación de puertos (port triggering)

Aunque todas estas opciones pueden combinarse para producir una forma increíblemente segura de recibir los beneficios del reenvío de puertos, es posible que todas ellas no tengan sentido para todo el mundo. Además de algunos de estos pasos específicos, es importante mantener una ciberseguridad saludable cuando se utiliza el reenvío de puertos; incluso más de lo habitual. El reenvío de puertos tiene poco peligro para los usuarios que son conscientes y precavidos.

¿Cómo de Seguro es el Reenvío de Puertos?

El reenvío de puertos puede ser un riesgo de seguridad para algunos usuarios. Para maximizar su seguridad, puedes

  • abrir sólo los puertos exactos que necesitas, no más
  • cerrar los puertos tan pronto como hayas terminado con ellos
  • instalar todas las actualizaciones de seguridad en tu ordenador
  • considerar otras soluciones más seguras, como el Port Triggering

Consejo

Recuerda que abrir un puerto en tu ordenador es como dejar una puerta sin cerrar en tu casa. Cuantos más puertos abra, y cuanta más gente los conozca, menos seguro será guardar objetos de valor en esa casa.

Palabras Finales

El reenvío de puertos te permite abrir un servicio específico en tu ordenador para recibir el tráfico interno de Internet. Desde los videojuegos hasta el escritorio remoto, es una herramienta muy útil. El reenvío de puertos conlleva algunas consideraciones de seguridad, pero en general se pueden superar.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda