Learning Center
Sistema Linux

Cómo abrir puertos y listar puertos abiertos en Linux

10 oct 2025
Hostman Team
Hostman Team

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?
Copiar enlace

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
Copiar enlace

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
Copiar enlace

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
Copiar enlace

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
Copiar enlace

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
Copiar enlace

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

Abrir puertos con firewalld
Copiar enlace

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
Copiar enlace

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
Copiar enlace

Para listar todos los puertos abiertos:

firewall-cmd --list-ports

Gestionar puertos con iptables
Copiar enlace

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

Abrir puertos con iptables
Copiar enlace

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
Copiar enlace

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
Copiar enlace

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
Copiar enlace

Listar todas las reglas y puertos abiertos:

iptables -L -v -n

Listar solo reglas IPv4:

iptables -S

Listar reglas IPv6:

ip6tables -S

Conclusión
Copiar enlace

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.