目次
- 1 1. Introducción
- 2 2. ¿Qué es un puerto?
- 3 3. Cómo verificar puertos en Ubuntu
- 4 4. Verificación de la configuración del firewall
- 5 5. Ejemplo práctico: Verificación del estado de un puerto específico
- 6 6. Puertos y seguridad
- 7 7. Conclusión
- 8 FAQ: Preguntas frecuentes sobre la verificación de puertos en Ubuntu
- 8.1 Q1. ¿Qué hacer si un puerto no está abierto en Ubuntu?
- 8.2 Q2. ¿Cuál es la diferencia entre ss y netstat?
- 8.3 Q3. ¿Cómo detectar un escaneo de puertos?
- 8.4 Q4. ¿Cómo verificar qué proceso utiliza un puerto específico?
- 8.5 Q5. ¿Cómo permitir solo una dirección IP con ufw?
- 8.6 Q6. ¿Cómo cambiar el número de un puerto?
- 8.7 Q7. ¿Es posible permitir varios puertos a la vez?
1. Introducción
En la gestión de redes y la administración de servidores, es fundamental conocer con precisión el estado de los puertos. Especialmente al utilizar Ubuntu, comprobar los puertos abiertos y los procesos en uso permite reforzar la seguridad y realizar la resolución de problemas de manera más rápida. En este artículo se explica en detalle cómo usar los comandos y herramientas básicos para verificar puertos en Ubuntu. Está dirigido a principiantes e intermedios, ofreciendo pasos prácticos y fáciles de seguir.2. ¿Qué es un puerto?
2.1 Concepto básico de los puertos
Un puerto es una interfaz de comunicación virtual que permite a los ordenadores y dispositivos de red enviar y recibir datos. En concreto, cuando varias aplicaciones se comunican al mismo tiempo en una misma dirección IP, los puertos ayudan a identificar y distribuir correctamente la información de cada aplicación. Por ejemplo, un servidor web utiliza el puerto 80 para manejar la comunicación HTTP. Si el mismo servidor permite conexiones SSH, utiliza el puerto 22. De esta forma, cada servicio se diferencia por su número de puerto, lo que hace imprescindible verificar su estado en la gestión de redes.2.2 Tipos y funciones de los puertos
Los puertos se dividen en tres categorías principales:- Puertos bien conocidos (0–1023)
- Son números de puerto estandarizados a nivel mundial, asignados a servicios ampliamente utilizados.
- Ejemplos:
- HTTP: 80
- HTTPS: 443
- SSH: 22
- Puertos registrados (1024–49151)
- Asignados a aplicaciones o empresas específicas.
- Ejemplos:
- MySQL: 3306
- PostgreSQL: 5432
- Puertos dinámicos (49152–65535)
- Se utilizan temporalmente por aplicaciones, muy comunes en las comunicaciones del lado cliente.

3. Cómo verificar puertos en Ubuntu
En Ubuntu, se pueden utilizar varias herramientas para comprobar el estado de los puertos. Aquí se explican cuatro comandos especialmente prácticos.3.1 Uso del comando ss
El comandoss
es una potente herramienta de gestión de red en sistemas Linux. Es rápido y ofrece información detallada de las conexiones. Comando básico:sudo ss -ltn
Explicación de opciones:- -l: muestra solo los puertos en estado de escucha (listening).
- -t: muestra solo el protocolo TCP.
- -n: muestra direcciones y números de puerto en formato numérico.
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
3.2 Uso del comando netstat
El comandonetstat
ha sido utilizado durante mucho tiempo para la gestión de red. Aunque está siendo reemplazado por ss
, todavía está disponible en muchos sistemas. Comando básico:sudo netstat -ltn
Ejemplo de salida:Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
3.3 Uso del comando lsof
El comandolsof
es útil para identificar qué procesos están utilizando un puerto específico. Verificación de un puerto en particular:sudo lsof -i :80
Ejemplo de salida:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1234 www 4u IPv4 12345 0t0 TCP *:http (LISTEN)
3.4 Uso del comando nmap
nmap
es una herramienta especializada en el escaneo de redes, utilizada también en auditorías de seguridad. Escaneo del localhost:sudo nmap localhost
Ejemplo de salida:Starting Nmap 7.80 ( https://nmap.org ) at 2024-12-21 18:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Puntos clave:- Muestra una lista de puertos abiertos y sus servicios asociados.
- También permite escanear servidores externos, aunque se debe contar con autorización previa.
4. Verificación de la configuración del firewall
En Ubuntu es común utilizar un firewall para reforzar la seguridad. En particular,ufw
(Uncomplicated Firewall) es una herramienta sencilla y potente ampliamente usada.
En esta sección se explica cómo comprobar el estado de los puertos con ufw
y cómo modificar la configuración según sea necesario.4.1 Comprobar el estado de ufw
Comando para verificar el estado del firewall:sudo ufw status verbose
Ejemplo de salida:Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
Explicación:- Status: active: indica que el firewall está habilitado.
- Logging: on: el registro de actividad está habilitado.
- Default: deny (incoming), allow (outgoing): bloquea conexiones entrantes por defecto, permite salientes.
- ALLOW: muestra qué puertos o servicios están permitidos (ejemplo: SSH y HTTP).
sudo ufw enable
4.2 Permitir o bloquear puertos
Permitir un puerto:sudo ufw allow 22/tcp
- Permite conexiones TCP al puerto 22 (SSH).
sudo ufw deny 80/tcp
- Bloquea el acceso al puerto 80 (HTTP).
sudo ufw allow from 192.168.1.100 to any port 22 proto tcp
- Permite conexiones SSH solo desde la IP
192.168.1.100
.
4.3 Restablecer y revisar la configuración
Si se necesita reiniciar la configuración, ejecute:sudo ufw reset
Este comando borra todas las reglas y restaura la configuración por defecto.
Después de aplicar cambios, siempre revise las reglas de nuevo.
5. Ejemplo práctico: Verificación del estado de un puerto específico
Aquí se explica el procedimiento utilizando como ejemplo el estado del puerto SSH (22).5.1 Verificar el estado del puerto
Ejemplo de comando:sudo ss -ltn | grep ':22'
Ejemplo de salida:LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
Puntos clave:- Si aparece
LISTEN
, significa que el puerto está en espera de conexiones. 0.0.0.0
indica que acepta conexiones desde todas las direcciones IP.
5.2 Verificar procesos
Ejemplo de comando:sudo lsof -i :22
Ejemplo de salida:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 56789 0t0 TCP *:ssh (LISTEN)
Puntos clave:sshd
es el proceso demonio que gestiona las conexiones SSH.- Verificar el PID (ID del proceso) permite detenerlo o reiniciarlo si es necesario.
sudo kill 1234
5.3 Ejemplo de resolución de problemas
Problema: El puerto no está abierto o no se puede establecer conexión. Pasos de solución:- Verificar la configuración del firewall.
sudo ufw status verbose
- Si el puerto está bloqueado, añadir una regla para permitirlo.
sudo ufw allow 22/tcp
- Comprobar el estado del servicio y reiniciarlo si es necesario.
sudo systemctl restart ssh
6. Puertos y seguridad
La gestión de puertos está directamente relacionada con la seguridad de la red. A continuación, se explican las recomendaciones principales.6.1 Cerrar puertos innecesarios
Es importante cerrar los puertos que no se utilizan para reducir el riesgo de ataques. Ejemplo: cerrar el puerto 80sudo ufw deny 80/tcp
6.2 Medidas contra escaneo de puertos
El escaneo de puertos es una técnica utilizada por atacantes para detectar vulnerabilidades. Las medidas de protección más eficaces incluyen:- Fortalecer las reglas del firewall:
sudo ufw default deny incoming
- Monitorear registros:
sudo tail -f /var/log/ufw.log
- Usar herramientas de detección:
- Por ejemplo,
fail2ban
puede bloquear automáticamente intentos de acceso sospechosos.

7. Conclusión
En este artículo se han explicado los pasos concretos para verificar puertos en Ubuntu, el uso de comandos específicos y la gestión del firewall conufw
, además de medidas de seguridad.7.1 Resumen de puntos clave
- Conceptos básicos y tipos de puertos: son las entradas y salidas de comunicación, divididos en puertos bien conocidos, registrados y dinámicos.
- Uso de comandos para verificación:
ss
,netstat
,lsof
ynmap
permiten comprobar el estado de puertos y procesos. - Gestión del firewall: con
ufw
se pueden permitir o bloquear puertos para reforzar la seguridad. - Importancia de la seguridad: cerrar puertos innecesarios, monitorear registros e implementar herramientas contra ataques son pasos fundamentales.
7.2 Aplicación futura
La gestión de puertos es la base de la seguridad de red. Aplica lo aprendido en este artículo para mantener un servidor seguro y bien administrado.FAQ: Preguntas frecuentes sobre la verificación de puertos en Ubuntu
Q1. ¿Qué hacer si un puerto no está abierto en Ubuntu?
A: Si un puerto no está abierto, pruebe los siguientes pasos:- Verificar la configuración del firewall:
sudo ufw status verbose
Si el firewall bloquea el puerto, permita el acceso con:sudo ufw allow [número_de_puerto]/tcp
- Comprobar si el servicio está en ejecución:
sudo systemctl status [nombre_servicio]
Ejemplo: para SSH:sudo systemctl status ssh
Si es necesario, reinicie el servicio:sudo systemctl restart [nombre_servicio]
- Verificar el archivo de configuración del servicio: Asegúrese de que use el puerto correcto (ejemplo para SSH:
/etc/ssh/sshd_config
).Q2. ¿Cuál es la diferencia entre ss
y netstat
?
A: Ambos muestran conexiones de red, pero tienen diferencias:ss
: herramienta moderna recomendada en sistemas Linux actuales. Es rápida y ofrece información detallada. Ejemplo:sudo ss -ltn
netstat
: herramienta clásica que está quedando obsoleta. Se utiliza en sistemas más antiguos por compatibilidad. Ejemplo:sudo netstat -ltn
ss
.Q3. ¿Cómo detectar un escaneo de puertos?
A: Existen varias formas de hacerlo:- Revisar los registros del firewall:
sudo tail -f /var/log/ufw.log
Busque intentos frecuentes de conexión sospechosos.- Usar herramientas IDS/IPS:
- Por ejemplo,
fail2ban
oSnort
bloquean automáticamente accesos maliciosos.
- Escanear su propio servidor con nmap:
sudo nmap localhost
Cierre los puertos innecesarios que aparezcan abiertos.Q4. ¿Cómo verificar qué proceso utiliza un puerto específico?
A: Use el comandolsof
:sudo lsof -i :[número_de_puerto]
Ejemplo: para el puerto 80:sudo lsof -i :80
Ejemplo de salida:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1234 www 4u IPv4 12345 0t0 TCP *:http (LISTEN)
Q5. ¿Cómo permitir solo una dirección IP con ufw
?
A: Ejecute:sudo ufw allow from [dirección_IP] to any port [número_de_puerto] proto tcp
Ejemplo: permitir SSH desde 192.168.1.100
:sudo ufw allow from 192.168.1.100 to any port 22 proto tcp
Q6. ¿Cómo cambiar el número de un puerto?
A: Edite el archivo de configuración del servicio. Ejemplo para SSH:- Editar el archivo:
sudo nano /etc/ssh/sshd_config
- Buscar la línea
Port
y asignar un nuevo número:
Port 2222
- Reiniciar el servicio:
sudo systemctl restart ssh
- Permitir el nuevo puerto en el firewall:
sudo ufw allow 2222/tcp
Q7. ¿Es posible permitir varios puertos a la vez?
A: Sí, se puede hacer de dos formas:- Permitir un rango de puertos:
sudo ufw allow 1000:2000/tcp
Explicación: permite el rango de puertos del 1000 al 2000.- Permitir puertos individuales:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp