Iniciar sesión
Iniciar sesión

Cómo abrir puertos y listar puertos abiertos en Linux

Cómo abrir puertos y listar puertos abiertos en Linux
Hostman Team
Technical writer
Linux Network
10.10.2025
Reading time: 6 min

Al trabajar con redes en Linux, puede ser necesario abrir o cerrar un puerto de red. La gestión de puertos es esencial para la seguridad: cuantos menos puertos abiertos tenga un sistema, menos vectores de ataque potenciales existen. Además, si un puerto está cerrado, un atacante no puede recopilar información sobre el servicio que se ejecuta en ese puerto específico.

Esta guía explica cómo abrir o cerrar puertos y cómo comprobar los puertos abiertos en distribuciones de Linux como Ubuntu/Debian y CentOS/RHEL utilizando cortafuegos como ufw, firewalld e iptables.

Demostraremos este proceso en dos distribuciones Linux: Ubuntu 22.04 y CentOS 9, ejecutadas en un VPS de Hostman. Todos los comandos proporcionados aquí funcionarán en cualquier distribución basada en Debian o RHEL.

¿Qué es un puerto de red?

Los puertos se utilizan para acceder a aplicaciones y protocolos específicos. Por ejemplo, un servidor puede alojar tanto un servidor web como una base de datos — los puertos dirigen el tráfico al servicio adecuado. Técnicamente, un puerto de red es un número entero no negativo que va de 0 a 65535.

  • Puertos reservados (0–1023): utilizados por protocolos y servicios de red populares como SSH (puerto 22), FTP (puerto 21), HTTP (puerto 80) y HTTPS (puerto 443).

  • Puertos registrados (1024–49151): pueden ser utilizados por aplicaciones específicas para comunicarse.

  • Puertos dinámicos (49152–65535): se usan para conexiones temporales y pueden asignarse dinámicamente a aplicaciones.

Cómo abrir puertos en distribuciones basadas en Debian

En sistemas basados en Debian (Ubuntu, Debian, Linux Mint, etc.), puedes usar ufw (Uncomplicated Firewall).

ufw viene preinstalado en la mayoría de las distribuciones basadas en APT. Para verificar si está instalado:

ufw version

Si se muestra una versión, ufw está instalado. De lo contrario, instálalo con:

apt update && apt -y install ufw

Por defecto, ufw está inactivo, lo que significa que todos los puertos están abiertos. Puedes verificar su estado con:

ufw status

Para activarlo:

ufw enable

Deberás confirmar con y. Ten en cuenta que habilitar ufw puede interrumpir las conexiones SSH actuales. Por defecto, ufw bloquea todo el tráfico entrante y permite todo el tráfico saliente.

Para comprobar la política por defecto:

cat /etc/default/ufw

Image7

Abrir puertos con ufw

Para abrir un puerto:

ufw allow <port_number>

Ejemplo — abrir el puerto 22 para SSH:

ufw allow 22

Puedes abrir varios puertos separándolos con comas y especificando el protocolo (tcp o udp):

ufw allow 80,443,8081,8443/tcp
ufw allow 80,443,8081,8443/udp

En lugar de números de puerto, puedes usar el nombre del servicio (definido en /etc/services).

Image8

Ejemplo — abrir Telnet (puerto 23):

ufw allow telnet

Nota: No puedes especificar varios nombres de servicios a la vez; ufw devolverá un error:

Image1 (1)

Para abrir un rango de puertos:

ufw allow <start_port>:<end_port>/<protocol>

Ejemplo:

ufw allow 8000:8080/tcp

Cerrar puertos con ufw

Para cerrar un puerto:

ufw deny <port_number>

Ejemplo — cerrar el puerto 80:

ufw deny 80

También puedes usar el nombre del servicio. Ejemplo — cerrar FTP (puerto 21):

ufw deny ftp

Ver puertos abiertos con ufw

Para listar todos los puertos abiertos y cerrados:

ufw status

Image18

O para una vista más detallada:

ufw status verbose

Cómo abrir un puerto en distribuciones basadas en RHEL

Las distribuciones basadas en RHEL (CentOS 7+, RHEL 7+, Fedora 18+, OpenSUSE 15+) usan firewalld por defecto.

Abrir puertos con firewalld

Verifica si firewalld está instalado:

firewall-offline-cmd -V

Si se muestra una versión, firewalld está instalado. Si no, instálalo:

dnf install firewalld

Por defecto, firewalld está deshabilitado. Verifica su estado:

firewall-cmd --state

Para habilitarlo:

systemctl start firewalld

Abrir el puerto 8080 para TCP:

firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • --zone=public: especifica la zona de la regla.
  • --add-port=8080/tcp: especifica el puerto y el protocolo.
  • --permanent: guarda la regla de forma permanente.

Image12

También puedes abrir un servicio utilizando su nombre, por ejemplo HTTP (puerto 80):

firewall-cmd --zone=public --add-service=http --permanent

Aplicar los cambios:

firewall-cmd --reload

Cerrar puertos con firewalld

Para cerrar un puerto por número:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent

Image4

O por nombre del servicio:

firewall-cmd --zone=public --remove-service=http --permanent

Recarga siempre después de los cambios:

firewall-cmd --reload

Listar puertos abiertos con firewalld

Para listar todos los puertos abiertos:

firewall-cmd --list-ports

Gestionar puertos con iptables

A diferencia de ufw y firewalld, iptables viene preinstalado en muchas distribuciones (Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux).

Abrir puertos con iptables

Para abrir el puerto 8182 para conexiones entrantes:

iptables -A INPUT -p tcp --dport 8182 -j ACCEPT
  • -A INPUT: agrega una regla a la cadena INPUT.
  • -p tcp: especifica el protocolo.
  • --dport 8182: especifica el puerto a abrir.
  • -j ACCEPT: permite el tráfico a través del puerto.

Para conexiones salientes:

iptables -A OUTPUT -p tcp --dport 8182 -j ACCEPT

Para abrir un rango de puertos:

iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j ACCEPT

Cerrar puertos con iptables

Para cerrar un puerto:

iptables -A INPUT -p tcp --dport 8182 -j DROP

Cerrar un rango de puertos:

iptables -A INPUT -p tcp --match multiport --dports 1024:2000 -j DROP

Guardar reglas de iptables

Por defecto, las reglas de iptables solo son efectivas hasta que se reinicie el servidor. Para guardarlas permanentemente, instala iptables-persistent:

Para sistemas basados en APT:

apt update && apt -y install iptables-persistent

Para sistemas basados en DNF:

dnf -y install iptables-persistent

Guardar las reglas actuales:

iptables-save

Las reglas se recargarán automáticamente tras el siguiente reinicio.

Ver puertos abiertos con iptables

Listar todas las reglas y puertos abiertos:

iptables -L -v -n

Listar solo reglas IPv4:

iptables -S

Listar reglas IPv6:

ip6tables -S

Conclusión

En esta guía hemos mostrado cómo abrir y cerrar puertos de red en Linux y cómo comprobar los puertos abiertos actualmente utilizando tres herramientas diferentes: ufw, firewalld e iptables. Una gestión adecuada de los puertos reduce el riesgo de posibles ataques a la red y ayuda a ocultar información sobre los servicios que utilizan esos puertos.

Linux Network
10.10.2025
Reading time: 6 min

Similares

Sistema Linux

Cómo usar el comando Telnet en Linux

El comando Telnet es una herramienta práctica de comunicación en red en Linux. Desde el escaneo de puertos remotos hasta la depuración de conexiones, Telnet ofrece una forma sencilla, basada en texto, de interactuar con un host remoto. En esta guía paso a paso aprenderás cómo instalar, configurar y utilizar Telnet en Linux. También explicaremos sus principales opciones y características para que tengas una comprensión completa. ¿Qué es Telnet? Telnet, abreviatura de Telecommunication Network, es un protocolo de red que permite conectarse de forma remota a otro ordenador mediante el TCP (Transmission Control Protocol). Permite especificar directamente el host remoto y el puerto para enviar comandos y recibir respuestas en tiempo real. Telnet se utiliza principalmente para: Probar puertos abiertos: comprobar si un servidor tiene un puerto accesible. Acceder a servicios: conexión directa a servicios web, de correo electrónico u otros servicios de red. Solucionar problemas de red: diagnosticar errores de conectividad o puertos bloqueados. Instalación de Telnet en Linux Telnet no viene preinstalado en la mayoría de las distribuciones modernas de Linux. El método de instalación depende del sistema que utilices. Para sistemas basados en Ubuntu/Debian Los usuarios de Ubuntu, Debian o similares pueden instalar Telnet con el siguiente comando: sudo apt install telnet Para sistemas basados en Red Hat/CentOS En Red Hat, CentOS o Fedora, utiliza yum o dnf: sudo yum install telnet o en versiones más recientes: sudo dnf install telnet Sintaxis del comando Telnet La sintaxis de Telnet es muy sencilla: telnet [hostname/IP] [port] Parámetros: [hostname/IP]: especifica el nombre o dirección IP del host remoto. [port]: indica el número de puerto al que conectarse (por defecto, 23). Telnet establece una conexión directa con servicios en puertos específicos, como: HTTP (puerto 80), SMTP (puerto 25) y FTP (puerto 21). Opciones principales del comando Telnet Telnet ofrece múltiples opciones para personalizar su funcionamiento y hacerlo más flexible. Opción Descripción -4 Fuerza el uso exclusivo de IPv4. -6 Fuerza el uso exclusivo de IPv6. -8 Permite la transferencia de datos de 8 bits. -E Desactiva el carácter de escape. -K Impide el envío automático de credenciales (como tickets Kerberos). -L Activa el modo loopback (conexión al propio host). -X atype Especifica el tipo de autenticación (por ejemplo, KERBEROS_V4). -a Introduce automáticamente el nombre de usuario al iniciar sesión. -d Activa el modo de depuración mostrando detalles de la conexión. -e char Define un carácter de escape personalizado. -l user Especifica el nombre de usuario para la conexión. -n tracefile Guarda la actividad de la sesión en un archivo de registro. -b addr Define la dirección o interfaz local utilizada para la conexión. -r Crea una conexión Telnet inversa (reverse Telnet).   Uso práctico de Telnet Telnet se utiliza habitualmente para diagnosticar y probar redes. A continuación, algunos ejemplos. Probar puertos abiertos Para comprobar si el puerto 80 de un servidor está abierto: telnet example.com 80 Si el puerto está abierto, Telnet mostrará una pantalla en blanco esperando entrada, lo que indica que el puerto está escuchando. Si está cerrado o bloqueado, aparecerá un mensaje como: Connection refused Interactuar con servidores SMTP Telnet puede utilizarse para depurar servidores de correo enviando comandos SMTP en texto plano: telnet mail.example.com 587 Una vez conectado, puedes escribir comandos como HELO, MAIL FROM o RCPT TO para comunicarte con el servidor. Enviar solicitudes HTTP También puedes usar Telnet para probar manualmente un servidor web: telnet example.com 80 Luego escribe: GET / HTTP/1.1 Host: example.com Pulsa Enter dos veces para enviar la solicitud. La respuesta del servidor se mostrará inmediatamente en la terminal. Forzar conexión IPv4 Si el servidor admite IPv4 e IPv6, puedes forzar la conexión a través de IPv4: telnet -4 example.com 80 Esto asegura compatibilidad con redes que solo utilizan IPv4. Depurar un servidor MySQL Telnet también puede utilizarse para comprobar si el puerto de MySQL (3306) está abierto: telnet database.example.com 3306 Si la conexión tiene éxito, Telnet mostrará un mensaje de bienvenida del servidor MySQL. Consideraciones de seguridad Aunque es útil, Telnet es inseguro por diseño, ya que transmite todos los datos —incluidas las contraseñas— en texto plano. 👉 Por tanto: Evita usar Telnet en redes públicas o sin cifrado. Utiliza siempre redes privadas o seguras. Usa alternativas seguras, como SSH (Secure Shell), para comunicaciones cifradas. Desactiva el servicio Telnet en tus servidores si no es necesario. Casos de uso avanzados Telnet también puede utilizarse en otros contextos más específicos: Supervisión de servicios: consultar protocolos como IMAP o POP3 para depurar problemas de correo. Gestión de dispositivos IoT: algunos dispositivos conectados usan Telnet como interfaz de texto. Uso educativo: excelente herramienta para aprender sobre protocolos de red y respuestas de servidor. Problemas comunes y soluciones A pesar de su sencillez, Telnet puede presentar errores. Connection Refused: El puerto de destino está cerrado o bloqueado por un cortafuegos. Time-Out Errors: Retraso de red o problema de enrutamiento. Permission Denied: Falta de privilegios o puerto reservado. Revisar regularmente las configuraciones del servidor y del cortafuegos ayuda a evitar estos problemas. Alternativas a Telnet Si la falta de cifrado de Telnet representa un riesgo de seguridad, existen varias alternativas más seguras: SSH (Secure Shell): la alternativa más común, con cifrado y autenticación segura. → Usa el comando ssh para conectarte de forma segura a servidores remotos. Netcat (nc): potente herramienta para depuración, escaneo de puertos y pruebas de conectividad (TCP/UDP). OpenSSL s_client: permite probar conexiones SSL/TLS de forma segura en puertos específicos. Conclusión Telnet es una herramienta simple pero poderosa para diagnosticar y depurar redes en Linux. Mientras seas consciente de sus limitaciones de seguridad, sigue siendo una opción útil para probar servicios y analizar conexiones. Con esta guía, podrás instalar, configurar y utilizar Telnet de forma eficaz y segura para administrar tus sistemas Linux de manera remota y profesional.
13 October 2025 · 6 min to read
Linux

Cómo copiar archivos a través de SSH

El protocolo SSH (Secure Shell) es un protocolo de red para la gestión remota de sistemas operativos mediante línea de comandos. Es ampliamente considerado el estándar para el acceso remoto a máquinas *nix. Permite iniciar sesión de forma segura en un servidor, ejecutar comandos de forma remota, gestionar archivos (crear, eliminar, copiar, etc.) y mucho más. La mayoría de los proveedores de nube y alojamiento requieren SSH para acceder a sus servicios. En este artículo veremos cómo copiar archivos a través de SSH en sistemas Windows y Linux. Cómo funciona SSH SSH puede transmitir de forma segura cualquier tipo de datos (audio, vídeo, datos de protocolos de aplicación) a través de un canal de comunicación cifrado. A diferencia de protocolos obsoletos e inseguros como Telnet y rlogin, SSH garantiza la confidencialidad y la autenticidad de los datos — fundamentales para la comunicación en Internet. Así es como se establece una conexión segura entre cliente y servidor: Establecimiento de conexión TCP: Por defecto, el servidor escucha en el puerto 22. Ambas partes comparten una lista de algoritmos compatibles (compresión, cifrado, intercambio de claves) y acuerdan cuáles utilizar. Autenticación: Para evitar la suplantación de identidad, ambas partes verifican sus identidades utilizando cifrado asimétrico (pares de claves pública/privada). Primero se autentica el servidor. En la primera conexión, el cliente muestra una advertencia con los detalles del servidor. Las claves de servidores de confianza se almacenan en /home/<username>/.ssh/known_hosts. Generación de clave: Una vez verificado el servidor, ambas partes generan una clave simétrica para cifrar todos los datos intercambiados. Autenticación del usuario: Se realiza mediante contraseña o una clave pública enviada por el cliente, almacenada en el servidor en /home/<username>/.ssh/authorized_keys. La implementación más popular en Linux es OpenSSH, que viene preinstalada en la mayoría de las distribuciones (Ubuntu, Debian, RHEL, etc.). En Windows se utilizan clientes como PuTTY o MobaXterm. Desde Windows 10 y Server 2019, las herramientas OpenSSH también están disponibles de forma nativa. Copiar archivos a través de SSH Dos utilidades principales para copiar archivos en Linux son scp y sftp. Ambas vienen con OpenSSH. SSH admite dos versiones de protocolo: 1 y 2. OpenSSH admite ambas, aunque la versión 1 se utiliza rara vez. Configurar autocompletado Para activar el autocompletado con la tecla Tab al usar scp, configura la autenticación por clave pública: Generar un par de claves: ssh-keygen Salida esperada: Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Por defecto, las claves (id_rsa para privada y id_rsa.pub para pública) se guardan en ~/.ssh/. Copiar la clave pública al servidor remoto: ssh-copy-id [username]@[ip-address] Copiar la clave pública al servidor remoto: Secure Copy (SCP) Para transferencias pequeñas (por ejemplo, configuraciones de servicios), scp es ideal. Copiar de local a remoto: scp test.txt user@192.168.1.29:/home/user/ Copiar múltiples archivos: scp test1.txt test2.txt user@192.168.1.29:/home/user/ Copiar múltiples archivos: scp user@192.168.1.29:/home/user/test.txt ~/ Copiar directorios: scp -r testdir user@192.168.1.29:/home/user/ Copiar de remoto a remoto: scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/ Secure FTP (SFTP) SFTP es otra utilidad incluida en OpenSSH. Desde OpenSSH 9.0, scp utiliza SFTP por defecto en lugar del antiguo protocolo SCP/RCP. A diferencia de FTP clásico, sftp transmite datos cifrados a través de un túnel seguro. No requiere un servidor FTP separado. Ejemplo de uso: sftp misato@192.168.1.29 sftp> ls sftp> lcd testdir/ sftp> get test.txt sftp> bye Gestores de archivos gráficos como Midnight Commander y Nautilus también usan sftp. En Nautilus, el servidor remoto aparece como una carpeta local, por ejemplo user@ip. Copiar archivos a través de SSH en Windows En Windows, se utiliza la herramienta de línea de comandos pscp de PuTTY para copiar archivos. Copiar al servidor: pscp C:\server\test.txt misato@192.168.1.29:/home/misato/ Copiar desde el servidor: pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt Listar archivos en el servidor remoto: pscp -ls user@192.168.1.29:/home/misato Usar comillas para rutas con espacios: pscp "C:\dir\bad file name.txt" misato@192.168.1.29:/home/misato/ Ver ayuda: pscp Conclusión Hemos visto cómo copiar archivos desde y hacia un servidor usando el protocolo seguro SSH. Si trabajas con servidores en la nube, entender SSH es esencial: es el método estándar para el acceso remoto a máquinas *nix y una parte fundamental del trabajo diario en DevOps y administración de sistemas.
10 October 2025 · 5 min to read
Sistema Linux

Cómo montar una compartición SMB en Linux

El protocolo Server Message Block (SMB) facilita el intercambio de archivos en red, permitiendo que las aplicaciones lean, escriban archivos y soliciten servicios a programas del servidor. Este protocolo es clave para una comunicación fluida entre distintos dispositivos de una red, especialmente en entornos mixtos como Windows y Linux. Montar una compartición SMB en Linux permite a los usuarios acceder a archivos en un servidor Windows u otro dispositivo con SMB directamente desde su sistema Linux. Este tutorial te guía paso a paso para montar una compartición SMB en Linux, garantizando un uso compartido de archivos y comunicación en red sin problemas. Requisitos previos para montar comparticiones SMB Antes de montar una compartición SMB, asegúrate de cumplir con los siguientes requisitos: Un sistema Linux, como un servidor en la nube económico de Hostman, con privilegios de root o sudo. El paquete cifs-utils instalado en tu sistema Linux. Credenciales de acceso (nombre de usuario y contraseña) para la compartición SMB. Conectividad de red entre tu sistema Linux y el servidor SMB. Instalar los paquetes necesarios El paquete cifs-utils es esencial para montar comparticiones SMB en Linux. Además, el paquete psmisc proporciona el comando fuser, útil para gestionar y monitorear el uso de archivos. Actualizar la lista de paquetes y el sistema Primero, actualiza la lista de paquetes y mejora tu sistema: sudo apt update Instalar cifs-utils y psmisc Instala los paquetes necesarios: sudo apt install cifs-utils psmisc Verificar la instalación Verifica la instalación de cifs-utils y la disponibilidad del comando fuser: mount -t cifsfuser Encontrar los detalles de la compartición SMB Identifica los detalles de la compartición SMB, incluyendo el nombre del servidor o la dirección IP y el nombre de la carpeta compartida. Puede que necesites consultar con tu administrador de red o revisar la configuración del servidor. Ejemplo: Servidor: servidor-smb.ejemplo.com Carpeta SMB-Freigabe: carpetacompartida Montar comparticiones SMB usando el comando mount Para montar la compartición SMB, usa el comando mount con la opción -t cifs, especificando el protocolo SMB. Crear un directorio como punto de montaje: sudo mkdir /mnt/comparticion_smb Montar la compartición SMB con el siguiente comando: sudo mount -t cifs -o username=tu_usuario,password=tu_contraseña //192.0.2.17/SharedFiles /mnt/comparticion_smb Reemplaza tu_usuario y tu_contraseña con tus credenciales reales. Asegúrate de que /mnt/comparticion_smb exista. Verificar el montaje Para confirmar que la compartición SMB se ha montado correctamente, usa: mount -t cifs Navega al punto de montaje y lista los archivos: cd /mnt/comparticion_smbls Crear un archivo de credenciales Para evitar ingresar credenciales cada vez, crea un archivo de credenciales. Este archivo debe estar oculto y seguro. Crear el archivo: nano ~/.smbcredentials Agregar el contenido (sustituyendo por tus datos reales): username=tu_usuariopassword=tu_contraseña Establecer los permisos adecuados: sudo chown tu_usuario: ~/.smbcredentialssudo chmod 600 ~/.smbcredentials Montar usando el archivo de credenciales sudo mount -t cifs -o credentials=~/.smbcredentials //192.168.2.12/SharedFiles /mnt/comparticion_smb Automatizar el montaje de comparticiones SMB Para automatizar el montaje, añade una entrada en el archivo /etc/fstab. Esto asegurará que la compartición SMB se monte al iniciar el sistema. 1. Abre /etc/fstab para editarlo: sudo nano /etc/fstab 2. Añade la siguiente línea: //servidor-smb.ejemplo.com/carpetacompartida /mnt/comparticion_smb cifs username=tu_usuario,password=tu_contraseña,iocharset=utf8,sec=ntlm 0 0 3. Guarda y cierra el archivo. 4. Prueba la entrada de fstab: sudo mount -a Asegúrate de que no aparezcan errores. Solución de problemas comunes Permiso denegado Verifica tus credenciales y los permisos en el servidor SMB. No existe el archivo o directorio Confirma que la IP del servidor, la ruta compartida y el punto de montaje sean correctos. Error de montaje 13 = Permiso denegado Revisa que el nombre de usuario y la contraseña sean correctos. Error de montaje 112 = El host no responde Verifica la conectividad de red y la disponibilidad del servidor. Desmontar una compartición SMB Para desmontar la compartición SMB, utiliza el comando umount seguido del punto de montaje: sudo umount /mnt/comparticion_smb Conclusión Montar una compartición SMB en Linux es un proceso sencillo que mejora la capacidad de compartir archivos entre sistemas operativos distintos. Siguiendo esta guía, podrás configurar y solucionar problemas de montaje de SMB de forma eficiente, facilitando así la comunicación en red y el acceso a archivos. ¡No olvides revisar cómo configurar una imagen de servidor en Linux! Preguntas frecuentes ¿Qué es Samba en Linux y cómo se relaciona con SMB? Samba es una implementación de código abierto del protocolo SMB/CIFS en Linux. Permite que los sistemas Linux compartan archivos e impresoras con dispositivos Windows a través de la red. ¿Cuál es el comando para montar una carpeta compartida de Windows en Linux? Usa mount -t cifs //servidor/carpeta /mnt/punto_montaje -o username=tu_usuario. ¿Cómo puedo montar automáticamente una compartición SMB al iniciar Linux? Agrega la configuración del montaje en /etc/fstab con las credenciales adecuadas. ¿Necesito acceso root para montar una compartición SMB? Para el montaje tradicional, sí. Pero también existen herramientas en espacio de usuario como gio mount que pueden usarse sin permisos de root.
16 July 2025 · 5 min to read

¿Tienes preguntas,
comentarios o inquietudes?

Nuestros profesionales están disponibles para asistirte en cualquier momento,
ya sea que necesites ayuda o no sepas por dónde empezar.
Hostman's Support