Meses atrás, llegó un cliente solicitando ayuda por un problema de conexión que estaba presentando entre la aplicación que había desarrollado y el servidor donde se alojaba la misma. Después de hacer algunas pruebas y consultar con mis compañeros del Dpto. de Soporte Técnico, resultó que el inconveniente se producía porque la aplicación en cuestión requería la habilitación de unos puertos especiales, conocidos como puertos pasivos.
Al ser un concepto nuevo para mí, me dispuse a investigar. Leí numerosas documentaciones en internet, que hablaban sobre redes y protocolos, pero, como suele ser habitual en el mundo de la informática, el lenguaje técnico solo acabó por confundirme.
Un día, conversando con mi amigo Tavo, quien es programador en ServiciosHosting.com, le relaté sobre mi búsqueda frustrada de información acerca de los puertos del servidor. Para mi sorpresa, él me brindó una explicación sencilla, que finalmente me permitió comprender este concepto fundamental del que muy poco se oye hablar.
En este artículo, te guiaré a través de la conversación que tuvimos ese día y otros conocimientos que he ido recopilando a lo largo de estos meses. Para que tú también puedas aprender qué son los puertos del servidor, cómo habilitarlos y por qué son tan importantes para el funcionamiento de las redes.
Los puertos de un servidor
En informática, algunos conceptos pueden resultar un tanto abstractos, ya que no se refieren a objetos físicos que podamos ver ni tocar. Para comprenderlos mejor, es común recurrir a analogías con situaciones o elementos de la vida cotidiana. Esto fue precisamente lo que hizo Tavo.
Definición
Nina, imagina que tu servidor es como un puerto marítimo. Los barcos que atracan en él son los programas que se ejecutan. Cada barco necesita un lugar específico para atracar, un espacio al que anclarse. Lo mismo sucede con los programas: en el mundo digital, estos espacios se conocen como puertos.
Al igual que en un puerto real, un barco puede atracar en diferentes muelles. Sin embargo, cada espacio solo puede ser ocupado por un barco a la vez. De la misma manera, en un servidor, un programa puede configurarse para usar uno u otro puerto, pero un puerto solo puede ser utilizado por un programa a la vez.
Representación gráfica de la analogía entre los puertos marítimos y los puertos de un servidor.
A lo que yo respondí: ¿Esos puertos son los mismos que se utilizan para conectar dispositivos a un equipo?
No, ¡Hay dos tipos de puertos en informática! Los que permiten establecer comunicación entre una máquina y un dispositivo externo, como por ejemplo una impresora o un teclado, y los que permiten establecer comunicación entre el servidor y un programa. Para no confundirnos, de ahora en adelante, a los primeros los identificaremos como puertos físicos y a los segundos como puertos lógicos.
Si observas la siguiente imagen, podrás distinguir ambos fácilmente:
Diferencias entre los puertos físicos y los puertos lógicos
Ejemplos de puertos físicos (tangibles) y puertos lógicos (intangibles) de un servidor.
Un puerto lógico, en informática, no es más que un punto de conexión virtual entre el software de un servidor y una aplicación o servicio, el cual, permite establecer la comunicación entre ambos y enrutar/direccionar el tráfico de información de forma correcta.
Entiendo, ¿Cómo puedo saber cuál es el puerto lógico que usa una aplicación específica?
¡Buena pregunta! Volviendo al tema de los puertos lógicos, para entender su funcionamiento e importancia, es necesario, primero comprender la forma en la que están distribuidos. A continuación te haré un resumen:
Puertos lógicos, enumerando los espacios
Los puertos de un servidor están numerados. En total, existen 65.535 puertos disponibles. Los primeros 1024 puertos están reservados para programas y servicios importantes del sistema, como FTP o SSH y son conocidos como «Wellknown Ports» (Puertos Bien Conocidos). Los puertos por encima del 1024 están disponibles para ser usados en los programas que tú instales.
Además, hay dos protocolos importantes que utilizan los puertos: UDP y TCP. Cada uno tiene su propio conjunto de puertos disponibles, ya que, son usados para distintos fines. Esto significa que un servidor posee un total de 131.070 puertos para la comunicación.
- 0 a 1023: Puertos «bien conocidos» reservados para servicios estándar como HTTP (puerto 80), FTP (puerto 21) o SSH (puerto 22).
- 1024 a 49151: Puertos «registrados» asignados por la IANA (Internet Assigned Numbers Authority) para aplicaciones específicas.
- 49152 a 65535: Puertos «efímeros» utilizados temporalmente por aplicaciones que necesitan un puerto libre para establecer una comunicación.
Por lo general, solo unos pocos puertos se encuentran habilitados por defecto en el servidor, ya que, mantener abiertos todos los puertos al mismo tiempo representaría una brecha de seguridad.
¿Es fácil habilitar un puerto en un servidor?
¡Sí! se trata de algo muy sencillo. Solo debes ir al firewall. Para explicarte mejor cómo funciona te mostraré el extracto de una documentación que encontré en internet.
¿Cómo habilitar un puerto en un servidor?
Para habilitar un puerto en el servidor, es necesario ir al cortafuegos (también conocido como firewall). Existen muchos tipos de firewalls, todos ellos tienen en común unas secciones llamadas inbound ports y outbound ports, las cuales están separadas de acuerdo a los protocolos TCP y UDP, es decir, existen dos secciones para TCP y dos secciones para UDP, la cuales, sirven para habilitar los puertos.
Algo parecido a lo que se muestra en la siguiente imágen:
Protocolos
Ya hemos hablado un poco acerca de UDP y TCP ¿pero, qué son exactamente? Se trata de los dos protocolos principales en los que se basa la arquitectura de red del firewall de un servidor.
El firewall funciona como un filtro que controla el tráfico de red que entra y sale del servidor. Para ello, se basa en las reglas configuradas para los diferentes puertos, que son puntos de acceso específicos para los programas y servicios.
Cada protocolo tiene sus propias características:
TCP (Transmission Control Protocol)
Es un protocolo orientado a la conexión, el cual, se encarga de garantizar una comunicación confiable entre las aplicaciones de una red.
UDP (User Datagram Protocol)
Es un protocolo sin conexión que ofrece una comunicación más rápida y eficiente, pero no garantiza la entrega de datos.
¿Los puertos de entrada y salida son lo mismo que los puertos activos y pasivos?
No. Si bien están relacionados, se trata de conceptos distintos. A continuación, te explicaré para qué sirve cada uno y así nunca más volverás a confundirlos:
Tipos de puertos
De entrada o de salida
INBOUND PORTS ( Puertos de entrada):
- Se refiere al tráfico de datos que llega al servidor desde un cliente.
- En el contexto de un servidor web, TCP_IN sería el tráfico HTTP que llega al servidor desde un navegador web.
OUTBOUND PORTS (Puertos de salida):
- Se refiere al tráfico de datos que sale del servidor hacia un cliente.
- En el contexto de un servidor web, TCP_OUT sería la respuesta HTTP que el servidor envía al navegador web.
En resumen, los puertos de entrada (inbound ports) se utilizan para controlar la cantidad de datos que recibe el servidor. Mientras que, los puertos de salida (outbound ports) se utilizan para controlar la cantidad de datos que envía el servidor.
Activos y pasivos
Para comprender un poco mejor este punto, vamos a tomar como ejemplo el protocolo de transferencia de archivos, mejor conocido como FTP (por sus siglas en inglés).
FTP requiere dos canales para funcionar:
- Canal de comunicación: Permite establecer una conexión mediante los comandos que el usuario escribe en un cliente FTP (como Filezilla).
- Canal de transferencia: Permite el intercambio de archivos entre cliente y servidor.
Podemos representarlo de la siguiente manera:
Cuando un cliente se conecta a un servidor, el puerto que le indica el proveedor es el puerto FTP, ese es el puerto utilizado en el primer canal para establecer la conexión (el de los comandos).
Para el segundo canal, el de intercambio de archivos, un programa puede usar un puerto activo o pasivo. Esto se refiere, al modo en que la conexión para el intercambio de información es establecida.
Modo activo
En el caso de FTP en modo activo, el servidor es el que se conecta con el cliente. Cuando un cliente establece la conexión con el primer canal, envía una petición al servidor para que se comunique con él a través de ese puerto. El servidor se conecta con el cliente para hacer el intercambio de archivos, enviar o recibir (o ambos). Para el servidor ese es un puerto de salida y para el cliente ese es un puerto de entrada.
Importante: Como el servidor establece una conexión saliente al cliente para el canal de datos. Esto puede ser un problema si el cliente que está detrás de un firewall bloquea las conexiones entrantes.
¿Qué sucede en el modo pasivo?
Pues, básicamente, lo contrario. En el modo pasivo, el cliente establece una conexión saliente al servidor para el canal de datos. Esto es más seguro, ya que el servidor no necesita realizar conexiones salientes.
Modo pasivo
Cuando el cliente se conecta con el servidor, en primera instancia el servidor le indica que se conecte a través de un puerto determinado para el intercambio de datos. Entonces, el cliente se conecta con el servidor a través de ese puerto. Para el cliente eso es un puerto de salida y para el servidor es un puerto de entrada.
Los puertos de entrada son puertos que se habilitan para establecer el canal de comunicación/canal de datos entre el cliente y el servidor. Mientras que, los puertos de salida son aquellos utilizados en el intercambio de archivos.
Hay una cosa que no me queda clara aún, ¿Por qué no es seguro habilitar todos los puertos al mismo tiempo en el firewall de un servidor?
En general, se dice que es porque representa una brecha de seguridad pero existen otros motivos. Estos son algunos de los principales:
Seguridad del servidor y cómo se relaciona con los puertos
Cuantos más puertos estén abiertos, mayor es la cantidad de puntos vulnerables que pueden ser blancos de ataques por parte de malwares en el servidor.
Si un atacante logra acceder al servidor a través de un puerto abierto, puede robar datos confidenciales.
Habilitar todos los puertos, puede disminuir el rendimiento del servidor.
Conclusiones
Espero que esta información sea de ayuda en tu búsqueda. Recuerda, estos son los puntos clave que debes tener en cuenta:
- Los puertos lógicos, son una parte fundamental del funcionamiento del servidor. Comprender cómo funcionan puede ayudarte a configurar aplicaciones más seguras y eficientes.
- Los puertos lógicos de un servidor no son lo mismo que los puertos físicos de un servidor.
- Los puertos activos y pasivos no son lo mismo que los puertos de entrada y salida.
- Los puertos del servidor están directamente relacionados con varios protocolos de red.
¡Gracias! Ahora entiendo. ¿Cómo puedo mantenerme actualizada con estos temas?
Muy fácil, solo debes seguir a ServiciosHosting.com en redes sociales y estar al día con sus publicaciones. Cada semana publican nuevos contenidos sobre tecnología.