- Viernes, 27 de julio de 2018
- Sin categoría
Cuando leas tutoriales sobre configuración de servidores y cortafuegos, a menudo te encontrarás con direcciones IP en este formato:
La primera parte puede resultarle familiar, pero la parte que sigue a los dos puntos (:) puede que no. Ese número (8080) representa un puerto de red.
Una dirección IP es una secuencia única de números que representa una interfaz en una red, a menudo en Internet. Con una dirección IP, la red puede enrutar paquetes de datos a la interfaz de red de un dispositivo específico, que podría ser un servidor o un router o incluso su teléfono.
Hay muchos programas que se ejecutan en esos dispositivos que podrían estar interesados en recibir datos de la red y enviar datos a otros dispositivos. Pero la dirección IP no le dice al dispositivo receptor nada sobre a qué programa van dirigidos los datos. Ese es el papel del puerto de red.
Dentro de cada trozo de datos enviados a través de una conexión TCP o UDP (incluyendo HTTP (la web), SSH, FTP, DNS, y la mayoría de otros protocolos familiares) hay un número de puerto de origen y un número de puerto de destino.
Estos números no representan una pieza de equipo o un puerto físico como un puerto ethernet o un puerto de rayos. Son una construcción de software que asocia un proceso que proporciona un servicio con paquetes de datos que tienen el puerto de destino relevante.
Un proceso es una pieza de software que se ejecuta en el servidor. Un servidor web es un proceso, y también lo son los servidores SSH, los servidores FTP y los servidores DNS. Cada programa que se ejecuta en un servidor es un proceso.
El sistema operativo de un servidor utiliza los puertos para asegurarse de que los datos son recibidos por el proceso correcto, a menudo entregándolos a un trozo de memoria asignado para ese propósito. Los procesos están vinculados a un puerto específico, y -en el caso de las conexiones TCP- sólo un proceso puede vincularse a cada puerto. Si más de un proceso está vinculado a un puerto, habría un conflicto y los datos podrían no ser entregados al proceso correcto.
Los puertos están representados por números que van de 0 a 65535, el máximo que cabe en un entero sin signo de 16 bits. Algunos de esos números están asociados con tipos particulares de servicios. Los puertos del 0 al 1024 se denominan puertos conocidos, y están convencionalmente asociados a los tipos de servicio de red más comunes. Los servidores web utilizan el puerto 80, los servidores SSH utilizan el puerto 22, y así sucesivamente.
Los puertos del 1024 al 49151 son puertos registrados. Las organizaciones pueden registrarlos en la ICANN para utilizarlos con su software. Los puertos por encima de 49151 son puertos privados que se pueden utilizar para fines arbitrarios.
Si ejecuta el siguiente comando en su servidor CentOS, podrá ver una lista de puertos y los servicios a los que corresponden.
menos /etc/services
Entender cómo funcionan los puertos es útil en una variedad de circunstancias. Por ejemplo, muchos bots de fuerza bruta tienen como objetivo los servidores SSH a través del puerto 22. Es posible que desee asociar SSH con un puerto diferente para que su servidor no tenga que lidiar con miles de solicitudes de inicio de sesión ilegítimas. Puede cambiar el puerto SSH a uno de los puertos privados (por encima de 49151) editando la configuración «Port» en «/etc/ssh/sshd_config». Los bots de fuerza bruta ya no podrán encontrarlo. Si cambias el puerto SSH, asegúrate de recordar a qué lo has cambiado o tampoco podrás iniciar sesión.
Los puertos también son útiles para configurar cortafuegos y para ejecutar servidores de desarrollo: es habitual utilizar el puerto 8080 como alternativa al puerto 80 para servidores web.
En un futuro artículo, vamos a ver cómo se utilizan los puertos para asegurar los servidores CentOS con el cortafuegos iptables.