Escaneo de puertos con Nmap: guía práctica desde cero
· 10 min de lectura
Aprende qué es un puerto, cómo funciona un escaneo, qué significan los estados abierto, cerrado y filtrado, los tipos de escaneo y opciones más útiles de Nmap, cómo leer los resultados en un laboratorio y cómo reducir la superficie que expones a internet.
Antes de atacar o defender un sistema, hay que saber qué tiene expuesto: qué servicios escuchan, en qué puertos, con qué versiones. Ese es el primer paso de cualquier prueba de penetración y también de cualquier revisión defensiva, y la herramienta estándar para hacerlo es Nmap (Network Mapper), un escáner libre y gratuito que lleva más de dos décadas siendo la referencia.
En casi todos los laboratorios de whoami-labs el trabajo empieza igual: una IP y un escaneo. De lo que encuentres ahí depende todo lo demás. Por eso entender bien Nmap, y sobre todo saber leer lo que te dice, es una de las habilidades más importantes que puedes aprender.
En esta lección vas a ver qué es un puerto, cómo funciona un escaneo por dentro, qué significan los estados que muestra Nmap, las opciones que más vas a usar, un flujo de reconocimiento completo en un laboratorio y cómo se reduce lo que un escaneo puede descubrir de tus sistemas.
Escanea solo sistemas propios o en entornos autorizados, como los laboratorios de whoami-labs. Escanear redes ajenas sin permiso puede ser ilegal y suele violar las condiciones de tu proveedor de internet.
Qué es un puerto y qué hace un escaneo#
Una dirección IP identifica una máquina; un puerto identifica un servicio dentro de esa máquina. Hay 65.535 puertos TCP y otros tantos UDP. Por convención, ciertos servicios usan puertos conocidos: 22 para SSH, 80 para HTTP, 443 para HTTPS, 445 para SMB, 3306 para MySQL.
Un escaneo de puertos consiste en intentar conectar con muchos puertos de una máquina y observar cómo responde cada uno. Las respuestas revelan qué servicios están activos, cuáles están cerrados y cuáles están protegidos por un firewall.

La mayoría de escaneos TCP se basan en el saludo de tres pasos (three-way handshake) con el que empieza toda conexión: el cliente envía SYN, el servidor responde SYN/ACK si el puerto está abierto, y el cliente confirma con ACK. Según lo que responda la máquina al primer paquete, Nmap clasifica el puerto.
Los estados de un puerto#
| Estado | Qué significa | Qué responde la máquina |
|---|---|---|
| open | Hay un servicio escuchando | SYN/ACK en TCP |
| closed | No hay servicio, pero la máquina responde | RST en TCP |
| filtered | Un firewall bloquea; no se sabe si hay servicio | Nada, o un error ICMP de «inalcanzable» |
| unfiltered | Accesible, pero no se sabe si está abierto | Aparece en escaneos ACK |
| open/filtered | No se puede distinguir entre abierto y filtrado | Típico en UDP, donde muchos servicios no responden |
Los puertos abiertos son tu mapa de ataque. Los filtrados te dicen que hay un firewall, lo que también es información útil.
Tipos de escaneo más usados#
| Opción | Nombre | Cuándo usarla |
|---|---|---|
-sS | SYN scan («medio abierto») | El escaneo por defecto con privilegios de root: rápido y no completa la conexión |
-sT | Connect scan | Sin privilegios de root; completa la conexión, más visible en los registros |
-sU | UDP scan | Para servicios UDP como DNS (53), SNMP (161) o TFTP (69); es lento |
-sV | Detección de versiones | Pregunta a cada servicio abierto qué software y versión es |
-sC | Scripts por defecto | Ejecuta scripts NSE seguros que obtienen información extra |
-O | Detección de sistema operativo | Intenta adivinar el sistema por su forma de responder |
-A | Agresivo | Combina -sV, -sC, -O y traceroute |
-sn | Descubrimiento de equipos | Solo averigua qué máquinas están vivas, sin escanear puertos |
Las opciones que más vas a usar#
# Escaneo rápido de los 1000 puertos más comunes
nmap IP_DEL_LAB
# Todos los puertos TCP (los servicios no siempre están en puertos estándar)
nmap -p- IP_DEL_LAB
# Puertos concretos, con versiones y scripts por defecto
nmap -p 22,80,445 -sV -sC IP_DEL_LAB
# Más velocidad en una red de laboratorio
nmap -p- --min-rate 2000 -T4 IP_DEL_LAB
# No intentar descubrir si el equipo está vivo (cuando bloquea ping)
nmap -Pn IP_DEL_LAB
# Guardar los resultados en los tres formatos (normal, XML y grepable)
nmap -p- -sV -sC -oA escaneo_lab IP_DEL_LAB
La opción -T controla la velocidad, de -T0 (muy lento y sigiloso) a -T5 (muy rápido y agresivo). En laboratorios se suele usar -T4; en redes reales, velocidades altas pueden saturar equipos o disparar alertas.
Los scripts NSE#
El Nmap Scripting Engine (NSE) incluye cientos de scripts para obtener información adicional: listar recursos compartidos SMB, comprobar si un FTP acepta acceso anónimo, leer títulos de páginas web o buscar configuraciones débiles.
# Scripts de una categoría
nmap --script "default and safe" -p 21,80,445 IP_DEL_LAB
# Un script concreto: ¿el FTP permite acceso anónimo?
nmap --script ftp-anon -p 21 IP_DEL_LAB
# Enumerar recursos compartidos SMB
nmap --script smb-enum-shares -p 445 IP_DEL_LAB
Las categorías más útiles para empezar son default, safe, discovery y version. Evita las categorías intrusive, brute o dos fuera de un laboratorio.
Flujo de reconocimiento en un laboratorio#
Este es el flujo que se usa en la mayoría de laboratorios de whoami-labs. Divide el trabajo en dos fases para ir rápido y no perder nada.
Paso 1: descubrir todos los puertos abiertos#
sudo nmap -p- --min-rate 2000 -T4 -oN puertos.txt IP_DEL_LAB
Esta fase solo busca qué puertos están abiertos, en los 65.535 puertos TCP. Suele tardar uno o dos minutos en un laboratorio.
Paso 2: estudiar a fondo solo esos puertos#
Con la lista de puertos abiertos, lanza el escaneo detallado únicamente sobre ellos:
sudo nmap -p 21,22,80,8080 -sV -sC -oA detalle IP_DEL_LAB
Paso 3: leer el resultado#
Un resultado típico se parece a esto:
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh OpenSSH 8.2p1 Ubuntu
80/tcp open http Apache httpd 2.4.41
|_http-title: Panel de gestión interna
8080/tcp open http Apache Tomcat 9.0.30
Cada línea es una pista para el siguiente paso:
- FTP con acceso anónimo: conéctate y revisa si hay archivos con credenciales.
- SSH: guarda la versión; normalmente se usará más adelante con credenciales encontradas.
- HTTP con un panel: abre la web, revisa el código fuente y busca directorios ocultos.
- Tomcat: revisa si el gestor (
/manager) usa credenciales por defecto.
Paso 4: investigar las versiones#
Con el software y la versión exactos, busca vulnerabilidades conocidas en fuentes como el NVD o Exploit-DB, o con searchsploit en Kali. Recuerda que una versión antigua no garantiza que sea vulnerable: las distribuciones a veces aplican parches sin cambiar el número de versión.

Descubrir los equipos de una red#
En muchos ejercicios no te dan una IP, sino una red entera, y primero hay que averiguar qué máquinas están encendidas. Para eso existe el descubrimiento de equipos (host discovery), que no escanea puertos: solo pregunta quién responde.
# ¿Qué equipos están vivos en la red 192.168.56.0/24?
sudo nmap -sn 192.168.56.0/24
# Guardar solo las IP encontradas, una por línea
sudo nmap -sn 192.168.56.0/24 -oG - | awk '/Up$/{print $2}' > vivos.txt
# Escanear después todos esos equipos
sudo nmap -sV -iL vivos.txt
En una red local, Nmap usa peticiones ARP, que son muy fiables porque ningún equipo puede ignorarlas sin dejar de funcionar en la red. Fuera de la red local combina pings ICMP con intentos de conexión a puertos comunes. Si una máquina bloquea todo eso, aparecerá como caída aunque esté encendida: en ese caso, -Pn le indica a Nmap que la escanee igualmente.
Las notaciones de rangos más útiles son 192.168.56.0/24 (las 256 direcciones de esa red), 192.168.56.10-50 (un intervalo) y -iL archivo.txt (una lista de objetivos).
Nmap y otras herramientas de escaneo#
Nmap no es la única opción, aunque sí la más completa. Conviene conocer las alternativas para saber cuándo usar cada una:
| Herramienta | Punto fuerte | Cuándo usarla |
|---|---|---|
| Nmap | Detección de versiones, scripts NSE, salida detallada | Casi siempre: es la referencia |
| Masscan | Velocidad extrema en rangos enormes | Barridos de redes muy grandes, solo para encontrar puertos abiertos |
| RustScan | Descubre puertos muy rápido y luego llama a Nmap | Laboratorios donde quieres la fase 1 en segundos |
| Netcat | Probar a mano un puerto concreto | Comprobar un servicio puntual o hablar con él directamente |
Un patrón habitual es usar una herramienta rápida para encontrar los puertos abiertos y Nmap para estudiarlos en detalle, exactamente el mismo flujo de dos fases que viste antes.
Qué revela un escaneo a un atacante#
| Información | Para qué la usa |
|---|---|
| Puertos y servicios abiertos | Elegir por dónde empezar |
| Versiones de software | Buscar vulnerabilidades conocidas |
| Sistema operativo | Ajustar técnicas y exploits |
| Configuraciones débiles (FTP anónimo, SMB sin contraseña) | Acceder sin explotar nada |
| Servicios internos expuestos por error | Bases de datos, paneles o APIs que no deberían verse desde fuera |
Cómo reducir lo que se puede descubrir#
En esta lección, «corregir» significa reducir la superficie expuesta: que un escaneo encuentre lo mínimo posible.
Exponer solo lo necesario#
Revisa qué escucha cada servidor y desactiva lo que no usas:
# Ver qué servicios escuchan en un servidor Linux propio
sudo ss -tulpn
Las bases de datos, paneles de administración y servicios internos deben escuchar solo en 127.0.0.1 o en la red interna, nunca en una IP pública.
Firewall por defecto en denegar#
Configura el firewall para bloquear todo lo entrante salvo los puertos imprescindibles. En Ubuntu, por ejemplo, con ufw:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Mantener el software actualizado y discreto#
- Aplica actualizaciones de seguridad con regularidad.
- Evita que los servicios anuncien su versión exacta cuando sea posible (por ejemplo,
ServerTokens Proden Apache). - Retira paneles de administración de internet o protégelos con VPN.
Detectar escaneos#
Los sistemas de detección de intrusos como Suricata o Snort, y servicios como fail2ban para intentos repetidos, ayudan a ver y frenar escaneos y ataques automatizados. Escanea tú mismo tus sistemas con regularidad: es la forma de saber qué ve un atacante antes que él.
Errores comunes#
- Escanear solo los 1.000 puertos por defecto. Muchos servicios escuchan en puertos altos; usa
-p-. - Olvidar UDP. Servicios como SNMP o TFTP solo aparecen con
-sU. - Confiar ciegamente en la versión detectada. Es una estimación; confirma antes de sacar conclusiones.
- Ir demasiado rápido en redes reales. Velocidades altas pueden tumbar equipos frágiles o perder resultados.
- No guardar los resultados. Usa
-oApara poder revisarlos y compararlos después.
Preguntas frecuentes#
¿Es ilegal usar Nmap?#
La herramienta es legal y la usan administradores de todo el mundo. Lo que puede ser ilegal es escanear sistemas sin autorización. Practica en tus propias máquinas y en laboratorios como los de whoami-labs.
¿Por qué hay que usar sudo con algunos escaneos?#
El escaneo SYN (-sS) y la detección de sistema operativo necesitan crear paquetes a bajo nivel, algo que solo puede hacer un usuario con privilegios. Sin ellos, Nmap usa el escaneo de conexión completa (-sT).
¿Qué diferencia hay entre filtered y closed?#
closed significa que la máquina respondió que no hay servicio en ese puerto. filtered significa que no hubo respuesta clara porque algo (normalmente un firewall) bloquea el paquete.
¿Cuánto tarda un escaneo de todos los puertos?#
Depende de la red y de la velocidad. En un laboratorio local con --min-rate suele ser cuestión de uno o dos minutos; en internet o con firewalls que descartan paquetes puede tardar mucho más.
¿Qué hago después del escaneo?#
Investigar cada servicio abierto: abrir las webs, probar accesos anónimos, buscar versiones vulnerables y enumerar más a fondo. El escaneo no es el fin, es el mapa.
Resumen#
- Un puerto identifica un servicio; un escaneo descubre qué puertos responden y cómo.
- Nmap clasifica los puertos como open, closed o filtered, entre otros estados.
- El flujo eficaz en un laboratorio es: todos los puertos primero (
-p-) y detalle solo de los abiertos (-sV -sC). - Cada servicio y versión encontrada es una pista para el siguiente paso.
- La defensa consiste en exponer lo mínimo, firewall por defecto en denegar, software actualizado y detección de escaneos.