Cómo abrir un puerto en Linux
Abrir puertos en Linux es una tarea esencial que permite que ciertos servicios o aplicaciones intercambien datos a través de la red.
Los puertos actúan como canales de comunicación, permitiendo el acceso a servicios autorizados y bloqueando las conexiones no deseadas. Una correcta gestión de los puertos es clave para mantener seguridad, rendimiento estable y funcionamiento fiable del sistema.
Comprender los puertos y su función Copiar enlace
Los puertos son puntos finales lógicos de comunicación de red, donde los dispositivos envían y reciben información.
Ejemplos comunes:
-
HTTP usa el puerto 80
-
HTTPS usa el puerto 443
-
SSH usa el puerto 22
Un puerto abierto indica que hay un servicio escuchando y aceptando tráfico entrante a través de él. Un puerto cerrado bloquea la comunicación. Gestionar correctamente los puertos abiertos en Linux es fundamental para mantener disponibilidad y seguridad.
Cómo comprobar los puertos abiertos en Linux Copiar enlace
Antes de abrir un puerto, conviene verificar qué puertos están actualmente activos. Existen varias herramientas y comandos de Linux para hacerlo.
Con netstat Copiar enlace
Ejecuta el siguiente comando para mostrar los puertos abiertos:
netstat -tuln-
La opción -tuln limita la salida a puertos TCP y UDP, sin resolver nombres de host.
- netstat ofrece una vista en tiempo real de las conexiones de red activas.

Nota: si netstat no está instalado:
sudo apt install net-toolsCon ss Copiar enlace
El comando ss es una versión moderna y más rápida de netstat:
ss -tuln
Muestra los puertos en uso y la información de los sockets activos.
Con nmap Copiar enlace
Para un análisis más detallado de los puertos abiertos:
nmap localhostnmap analiza el host especificado (en este caso, localhost) y muestra los puertos accesibles. Es útil para identificar qué servicios están expuestos a la red pública.

Nota: instala nmap con:
sudo apt install nmapCómo abrir puertos en Linux Copiar enlace
Para permitir el acceso a través de un puerto específico, es necesario modificar las reglas del firewall. Linux ofrece varias herramientas para gestionar esto: iptables, ufw y firewalld.
A continuación, te mostramos cómo usarlas.
Método 1: con iptables Copiar enlace
iptables es una herramienta potente y de bajo nivel que proporciona control detallado sobre el tráfico de red.
Añadir una regla para permitir tráfico en un puerto
Ejemplo: habilitar acceso HTTP en el puerto 8080:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPTExplicación:
-
sudo: ejecuta el comando con privilegios de administrador
-
-A INPUT: agrega la regla a la cadena de entrada (tráfico entrante)
-
-p tcp: aplica la regla al protocolo TCP
-
--dport 8080: especifica el puerto 8080
-
-j ACCEPT: acepta el tráfico que cumpla la regla
Estas reglas no son permanentes: se pierden al reiniciar el sistema.

sudo apt install iptables iptables-persistentGuardar la configuración
Para hacer que las reglas persistan después del reinicio:
sudo netfilter-persistent save
Esto almacena las reglas actuales para que se apliquen automáticamente al reiniciar.
Recargar la configuración
sudo netfilter-persistent reload
Método 2: con ufw (Uncomplicated Firewall) Copiar enlace
ufw es una interfaz simplificada para iptables que facilita la gestión de reglas del firewall.
Activar ufw
sudo ufw enable
Si no está instalado:
sudo apt install ufwPermitir tráfico por un puerto específico
Ejemplo: abrir la puerta 22 (SSH):
sudo ufw allow 22/tcpEsto permite conexiones TCP entrantes al puerto 22, generalmente usadas para acceso remoto SSH.

Ver el estado del firewall
sudo ufw statusMuestra todas las reglas activas y los puertos abiertos.

Método 3: con firewalld Copiar enlace
firewalld es un servicio de firewall dinámico más flexible y fácil de configurar que iptables.
Agregar una regla permanente
Ejemplo: abrir la puerta 443 (HTTPS):
sudo firewall-cmd --permanent --add-port=443/tcp
Instala y activa firewalld con:
sudo apt install firewalldsudo systemctl enable firewalld
sudo systemctl start firewalldRecargar las reglas
sudo firewall-cmd --reload
Comprobar si el puerto está abierto
sudo firewall-cmd --list-allMuestra todas las zonas y reglas activas, incluidas las puertas abiertas.

Cómo probar el puerto abierto Copiar enlace
Después de abrir un puerto, verifica si realmente está accesible.
Con telnet Copiar enlace
telnet localhost port_numberSi la conexión se establece, el puerto está abierto y operativo.

Con nmap Copiar enlace
nmap -p port_number localhostVerifica si el puerto especificado está accesible en el host local.

Con curl Copiar enlace
curl localhost:port_numberSi el servicio responde, significa que está activo en esa puerta.

Solución de problemas comunes Copiar enlace
Si el puerto no se abre correctamente:
Verifica las reglas del firewall:
- iptables -L
- ufw status
Comprueba el estado del servicio:
- systemctl status <nombre_del_servicio>
Abrir puertos según el protocolo Copiar enlace
Dependiendo del servicio, puede ser necesario usar TCP o UDP.
Abrir un puerto TCP Copiar enlace
Ejemplo: permitir tráfico MySQL en el puerto 3306:
sudo ufw allow 3306/tcp
Abrir un puerto UDP Copiar enlace
Ejemplo: permitir tráfico SNMP en el puerto 161:
sudo ufw allow 161/udp
UDP proporciona comunicación más rápida y sin conexión, ideal para herramientas de monitoreo.
Gestionar el acceso a los puertos Copiar enlace
Restringir el acceso a una IP específica
sudo ufw allow from 192.168.1.100 to any port 22Esto permite acceso SSH al puerto 22 solo desde esa dirección IP, mejorando la seguridad.

Cerrar un puerto Copiar enlace
sudo ufw deny 80/tcpBloquea el tráfico entrante por el puerto 80 (HTTP).

Conclusión Copiar enlace
Comprobar y abrir puertos en Linux es fundamental para optimizar el funcionamiento de red y mantener la seguridad de los servicios. Con herramientas como iptables, ufw y firewalld, puedes controlar el tráfico de forma segura y flexible. Siempre prueba tus configuraciones con nmap, curl o telnet para confirmar que el puerto está correctamente abierto.
Una buena gestión de puertos garantiza servidores estables, conexiones seguras y un rendimiento confiable.