GNU/Linux >> Tutoriales Linux >  >> Linux

Abrir un puerto en Linux

Antes de aprender a abrir un puerto en Linux, comprendamos qué son los puertos de red. Un puerto es un punto final de comunicación. Dentro de un sistema operativo, un puerto permite que los paquetes de datos realicen procesos específicos o servicios de red.

Por lo general, los puertos identifican un servicio de red específico que se les asigna. Esto se puede cambiar configurando manualmente el servicio para usar un puerto diferente, pero en general, se pueden usar los valores predeterminados.

El primer 1024 puertos (Puertos 0-1023 ) se denominan números de puerto conocidos y están reservados para los servicios más utilizados, incluidos SSH (puerto 22), HTTP y HTTPS (puertos 80 y 443), etc. Los números de puerto superiores a 1024 se denominan efímeros puertos .

Entre los puertos efímeros, Números de puerto 1024-49151 se denominan Registrado/Usuario Puertos. El resto de puertos, 49152-65535 se llaman como Dinámico/Privado Puertos.

En este tutorial, mostraremos cómo podemos abrir un puerto efímero en Linux, ya que los servicios más comunes usan los puertos conocidos.

Lista de todos los puertos abiertos

Antes de abrir un puerto en Linux, primero revisemos la lista de todos los puertos abiertos y elijamos un puerto efímero para abrir de esa lista.

Podemos usar el netstat comando para enumerar todos los puertos abiertos, incluidos los de TCP , UDP , que son los protocolos más comunes para la transmisión de paquetes en la capa de red.

NOTA :Si su distribución no tiene netstat , No es un problema. Puedes usar el ss Comando para mostrar puertos abiertos a través de conectores de escucha.

netstat -lntu

Esto imprimirá todos los escuchando enchufes (-l ) junto con el número del puerto (-n ), con TCP puertos (-t ) y UDP puertos (-u ) también aparece en la salida.

Solo para asegurarnos de obtener resultados consistentes, verifiquemos esto usando el ss comando para enumerar los sockets de escucha con un puerto abierto.

ss -lntu

Esto da más o menos los mismos puertos abiertos que netstat , ¡así que estamos listos para irnos!

Abrir un puerto en Linux para permitir conexiones TCP

Abramos un puerto cerrado y hagamos que escuche TCP Conexiones, por el bien de este ejemplo.

Desde el puerto 4000 no se está utilizando en mi sistema, elijo abrir el puerto 4000 . Si ese puerto no está abierto en su sistema, no dude en elegir otro puerto cerrado. Solo asegúrate de que sea mayor que 1023 !

Nuevamente, solo para asegurarnos, asegurémonos de que el puerto 4000 no se use, usando netstat o el ss comando.

netstat -na | grep :4000
ss -na | grep :4000

La salida debe quedar en blanco, verificando así que no se está utilizando actualmente, para que podamos agregar las reglas de puerto manualmente al firewall de iptables del sistema .

Para usuarios de Ubuntu y sistemas basados ​​en cortafuegos ufw

Ubuntu tiene un cortafuegos llamado ufw , que se encarga de estas reglas para puertos y conexiones, en lugar de las antiguas iptables cortafuegos Si es usuario de Ubuntu, puede abrir directamente el puerto usando ufw

sudo ufw allow 4000

¡Puede omitir los siguientes pasos y probar directamente su puerto recién abierto!

Para sistemas basados ​​en CentOS y firewalld

Para este tipo de sistemas, si tiene firewalld como su firewall principal, se recomienda que use el firewall-cmd para actualizar las reglas de su cortafuegos, en lugar de las antiguas iptables cortafuegos.

firewall-cmd --add-port=4000/tcp

NOTA:Esto restablecerá el firewalld reglas predeterminadas en un reinicio, por lo que si desea modificar esta configuración de forma permanente, agregue el --permanent bandera al comando.

firewall-cmd --add-port=4000/tcp --permanent

¡Puede omitir los siguientes pasos y probar directamente su puerto recién abierto!

Para otras distribuciones de Linux

Así que agreguemos este nuevo puerto a las reglas de iptables de nuestro sistema, usando iptables comando.

Si este comando aún no está instalado, obténgalo usando su administrador de paquetes.

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

Esto configura el cortafuegos para añadir (-A ) la nueva regla para aceptar paquetes de entrada vía protocolo (-p ) TCP donde el puerto de destino (--dport ) es 4000 y especifica el objetivo salto (-j ) regla como ACCEPT .

Para actualizar las reglas del firewall, reinicie iptables servicio.

sudo service iptables restart

O usando systemctl si lo tienes.

sudo systemctl restart iptables

Pruebe el puerto recién abierto para conexiones TCP

Ahora que hemos abierto con éxito un nuevo TCP (Puerto 4000 en mi caso), vamos a probarlo.

Primero, iniciaremos netcat (nc ) y escuche en el puerto 4000, mientras envía la salida de ls a cualquier cliente conectado. Entonces, después de que un cliente haya abierto una conexión TCP en el puerto 4000, recibirá el resultado de ls .

ls | nc -l -p 4000

Esto hace que netcat escuche en el puerto 4000. Deje esta sesión en paz por ahora.

Abra otra sesión de terminal en la misma máquina.

Como abrí un puerto TCP, usaré telnet para comprobar la conectividad TCP. Si el comando no existe, nuevamente, instálelo usando su administrador de paquetes.

Formato para telnet :

telnet [hostname/IP address] [port number]

Así que ingresa la IP de tu servidor y el número de puerto, que es 4000 en mi caso, y ejecuta este comando.

telnet localhost 4000

Esto intenta abrir una conexión TCP en localhost en el puerto 4000.

Obtendrá un resultado similar a este, que indica que se ha establecido una conexión con el programa de escucha (nc ).

Como puede ver, la salida de ls (while.sh en mi caso) también se ha enviado al cliente, lo que indica una conexión TCP exitosa.

Para mostrarle que el puerto está realmente abierto, podemos usar nmap para comprobar esto.

nmap localhost -p 4000

¡De hecho, nuestro puerto ha sido abierto! ¡Hemos abierto con éxito un nuevo puerto en nuestro sistema Linux!

NOTA :nmap solo enumera los puertos abiertos que tienen una aplicación actualmente escuchando. Si no usa ninguna aplicación de escucha como netcat, esto mostrará el puerto 4000 como cerrado, ya que actualmente no hay ninguna aplicación escuchando en ese puerto. Del mismo modo, telnet tampoco funcionará, ya que también necesita una aplicación de escucha para vincularse. Esta es la razón por la que nc es una herramienta tan útil. Esto simula dichos entornos con un simple comando.

Pero esto es solo temporal, ya que los cambios se restablecerán cada vez que reiniciemos el sistema.

Necesita actualizar las reglas después de cada reinicio

El enfoque presentado en este artículo solo actualizará temporalmente las reglas del firewall hasta que el sistema se apague o reinicie. Por lo tanto, se deben repetir pasos similares para abrir el mismo puerto nuevamente después de reiniciar.

Para cortafuegos ufw

El ufw las reglas son no restablecer al reiniciar, por lo que si es un usuario de Ubuntu, ¡no necesita preocuparse por esta parte!

Esto se debe a que está integrado en el proceso de arranque y el kernel guarda las reglas del cortafuegos usando ufw , a través de los archivos de configuración apropiados.

Para cortafuegos

Como se mencionó anteriormente, firewalld también sufre el mismo problema, pero esto se puede evitar agregando un --permananent bandera al comando inicial, al abrir un puerto o establecer cualquier otra regla.

Por ejemplo, puede abrir el puerto TCP 4000 permanentemente usando el siguiente comando:

firewall-cmd --zone=public --add-port=400/tcp --permanent

Para iptables

Para las iptables cortafuegos, aunque este inconveniente no se puede evitar, podemos minimizar la molestia.

Podemos guardar las iptables reglas a un archivo de configuración, como /etc/iptables.conf .

sudo iptables-save | sudo tee -a /etc/iptables.conf

Luego podemos recuperarlo del archivo de configuración después de reiniciar, usando el siguiente comando:

sudo iptables-restore < /etc/iptables.conf

Ahora, las iptables ¡Las reglas ahora se actualizaron y nuestros puertos se abrieron nuevamente!

Conclusión

En este tutorial, le mostramos cómo puede abrir un nuevo puerto en Linux y configurarlo para las conexiones entrantes.


Linux
  1. ¿Cómo cerrar puertos en Linux?

  2. Cómo abrir puerto en Linux

  3. Obtenga una lista de puertos abiertos en Linux

  4. ¿Cuál es el número máximo de puertos?

  5. Agotamiento del puerto de red de Linux

Cómo comprobar los puertos de escucha en Linux (Puertos en uso)

Cómo hacer un escaneo de puertos en Linux

Cómo encontrar y cerrar puertos abiertos en Linux

Cómo usar Netcat para escanear puertos abiertos en Linux

Cómo hacer ping a un número de puerto en Linux

¿Cómo comprobar los puertos abiertos en Linux?