Iniciar sesión
Iniciar sesión

Cómo descargar archivos con cURL

Cómo descargar archivos con cURL
Emmanuel Oyibo
Technical writer
Sistema Linux
20.10.2025
Reading time: 9 min

La descarga de contenido desde servidores remotos es una tarea habitual tanto para administradores como para desarrolladores. Aunque existen numerosas herramientas para este trabajo, cURL destaca por su adaptabilidad y simplicidad. Es una utilidad de línea de comandos que admite protocolos como HTTP, HTTPS, FTP y SFTP, lo que la hace esencial para la automatización, los scripts y las transferencias de archivos eficientes.

Puedes ejecutar cURL directamente en tu computadora para obtener archivos. También puedes incluirlo en scripts para optimizar el manejo de datos, reduciendo así el esfuerzo manual y los errores. Esta guía muestra varias formas de descargar archivos con cURL. Siguiendo estos ejemplos, aprenderás a manejar redirecciones, renombrar archivos y monitorear el progreso de las descargas. Al final, deberías poder usar cURL con confianza para tareas en servidores o entornos en la nube.

Comando básico de cURL para descargar archivos

El comando curl funciona con varios protocolos, pero se utiliza principalmente con HTTP y HTTPS para conectarse a servidores web. También puede interactuar con servidores FTP o SFTP cuando sea necesario.

Por defecto, cURL recupera un recurso de una URL especificada y lo muestra en tu terminal (salida estándar). Esto es útil para previsualizar el contenido de archivos sin guardarlos, especialmente si se trata de archivos de texto pequeños.

Ejemplo: Para ver el contenido de un archivo de texto alojado en https://example.com/file.txt, ejecuta:

curl https://example.com/file.txt

Para documentos de texto cortos, este enfoque es adecuado. Sin embargo, los archivos grandes o binarios pueden llenar la pantalla con datos ilegibles, por lo que normalmente querrás guardarlos en su lugar.

Guardar archivos remotos

A menudo, el objetivo principal es almacenar el archivo descargado en tu máquina local en lugar de verlo en la terminal. cURL simplifica esto con la opción -O (O mayúscula), que conserva el nombre original del archivo remoto.

curl -O https://example.com/file.txt

Esto descarga file.txt y lo guarda en el directorio actual con el mismo nombre. Este método es rápido y mantiene el nombre del archivo existente, lo cual puede ser útil si el nombre tiene relevancia.

Elegir un nombre de archivo diferente

A veces es importante renombrar el archivo descargado para evitar conflictos o crear un esquema de nombres claro. En este caso, utiliza la opción -o (o minúscula):

curl -o myfile.txt https://example.com/file.txt

Aquí, cURL descarga el archivo remoto file.txt pero lo guarda localmente como miarchivo.txt. Esto ayuda a mantener los archivos organizados o evita sobrescrituras accidentales. Es especialmente útil en scripts que requieren nombres de archivo descriptivos.

Seguir redirecciones

Cuando se solicita un archivo, los servidores pueden instruir a tu cliente para que vaya a una URL diferente. Comprender y manejar las redirecciones es fundamental para realizar descargas exitosas.

Por qué las redirecciones son importantes

Las redirecciones se usan comúnmente en sitios web reorganizados, archivos movidos o enlaces espejo. Sin soporte para redirecciones, cURL se detiene después de recibir una respuesta de “movido” y no obtendrás el archivo.

Usar -L o --location

Para indicarle a cURL que siga una cadena de redirecciones hasta llegar al destino final, utiliza -L (o --location):

curl -L -O https://example.com/redirected-file.jpg

Esto permite que cURL obtenga el archivo correcto incluso si la URL original apunta a otro lugar. Si omites -L, cURL simplemente mostrará el mensaje de redirección y finalizará, lo que puede causar problemas en sitios con múltiples redirecciones.

Descargar múltiples archivos

cURL también puede manejar múltiples descargas a la vez, evitando que ejecutes el comando repetidamente.

Usar llaves y patrones

Si los nombres de los archivos comparten un patrón, las llaves {} te permiten especificar cada nombre de manera concisa:

curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}

cURL descarga cada archivo en secuencia, lo que resulta práctico para flujos de trabajo automatizados.

Usar rangos

Para una serie de archivos numerados o etiquetados alfabéticamente, especifica un rango entre corchetes:

curl -O https://example.com/files/file[1-5].jpg

cURL itera automáticamente por los archivos file1.jpg hasta file5.jpg. Esto es ideal para secuencias de archivos con nombres consistentes.

Encadenar múltiples descargas

Si tienes diferentes URLs para cada archivo, puedes encadenarlas juntas:

curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg

Este método descarga file1.jpg del primer sitio y file2.jpg del segundo, sin necesidad de ejecutar múltiples comandos.

Límite de velocidad y tiempos de espera

En ciertas situaciones, puede que quieras controlar la velocidad de descarga o evitar que cURL espere demasiado por un servidor que no responde.

Control de ancho de banda

Para evitar saturar tu red o simular condiciones lentas, limita la velocidad de descarga con --limit-rate:

curl --limit-rate 2M -O https://example.com/bigfile.zip

2M significa 2 megabytes por segundo. También puedes usar K para kilobytes o G para gigabytes.

Tiempos de espera

Si un servidor es demasiado lento, puede que quieras que cURL se detenga después de cierto tiempo. La opción --max-time hace precisamente eso:

curl --max-time 60 -O https://example.com/file.iso

Aquí, cURL se detiene después de 60 segundos, lo cual es útil en scripts que necesitan fallar rápidamente cuando hay problemas.

Modo silencioso y detallado

cURL puede ajustar su salida para mostrar información mínima o detalles extensos.

Descargas silenciosas

Para tareas automáticas o cron jobs donde no necesitas ver barras de progreso, incluye -s (o --silent):

curl -s -O https://example.com/file.jpg

Esto oculta el progreso y los errores, lo cual es útil para registros más limpios. Sin embargo, la depuración es más difícil si ocurre un error silencioso.

Modo detallado

En contraste, -v (o --verbose) muestra información detallada sobre las solicitudes y respuestas:

curl -v https://example.com

La salida detallada es invaluable para depurar problemas como certificados SSL inválidos o redirecciones incorrectas.

Autenticación y seguridad

Algunas descargas requieren credenciales o una conexión segura.

Autenticación HTTP/FTP

Cuando un servidor requiere un nombre de usuario y contraseña, usa -u:

curl -u username:password -O https://example.com/protected/file.jpg

Incrustar credenciales directamente puede ser riesgoso, ya que podrían aparecer en registros o listas de procesos. Considera usar variables de entorno o archivos .netrc para un manejo más seguro.

HTTPS y certificados

Por defecto, cURL verifica los certificados SSL. Si el certificado no es válido, cURL bloquea la transferencia. Puedes omitir esta verificación con -k o --insecure, aunque esto implica riesgos de seguridad. Siempre que sea posible, usa una autoridad certificadora de confianza para mantener las conexiones autenticadas.

Uso de un proxy

En algunos entornos, el tráfico debe pasar por un servidor proxy antes de llegar al destino.

Descargar a través de un proxy

Usa la opción -x o --proxy para especificar el proxy:

curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg

Reemplaza proxy_host y proxy_port con los datos correspondientes. cURL envía la solicitud al proxy, que luego recupera el archivo por ti.

Autenticación del proxy

Si tu proxy requiere credenciales, inclúyelas en la URL:

curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpg

Nuevamente, almacenar datos sensibles en texto plano puede ser peligroso, por lo que las variables de entorno o los archivos de configuración son opciones más seguras.

Monitorear el progreso de descarga

El seguimiento del progreso de la descarga es crucial para archivos grandes o conexiones lentas.

Medidor de progreso predeterminado

Por defecto, cURL muestra un medidor de progreso que incluye el tamaño total, la velocidad de transferencia y el tiempo estimado de finalización. Por ejemplo:

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100  1256  100  1256    0     0   2243      0 --:--:-- --:--:-- --:--:--  2246

Esta salida te ayuda a estimar cuánto falta y si la velocidad de transferencia es adecuada.

Barra de progreso compacta

Si prefieres menos detalles, agrega -#:

curl -# -O https://example.com/largefile.iso

Una barra más simple muestra el progreso general en porcentaje. Es más fácil de leer pero no incluye estadísticas detalladas como la velocidad actual.

Registrar el progreso en scripts

Cuando uses cURL dentro de scripts, quizás quieras registrar los datos del progreso. Normalmente, cURL envía esta información a stderr, por lo que puedes redirigirla:

curl -# -O https://example.com/largefile.iso 2>progress.log

Aquí, progress.log contiene las actualizaciones de estado que puedes analizar o guardar para revisarlas más tarde.

Conclusión

cURL destaca como una herramienta flexible de línea de comandos para descargar archivos a través de múltiples protocolos y entornos. Ya sea que necesites manejar redirecciones complejas, renombrar archivos al vuelo o limitar el ancho de banda, cURL te ofrece las opciones adecuadas. Al dominar sus principales parámetros y modos, podrás integrar cURL sin problemas en tu flujo de trabajo diario para scripting, automatización y transferencias de archivos más eficientes.

Sistema Linux
20.10.2025
Reading time: 9 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
Linux

Cómo abrir puertos y listar puertos abiertos en Linux

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 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/tcpufw allow 80,443,8081,8443/udp En lugar de números de puerto, puedes usar el nombre del servicio (definido en /etc/services). Ejemplo — abrir Telnet (puerto 23): ufw allow telnet Nota: No puedes especificar varios nombres de servicios a la vez; ufw devolverá un error: 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 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. 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 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.
10 October 2025 · 6 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