Qué es, para qué sirve y qué obtendrás
En esta guía práctica aprenderás a escanear puertos TCP de un equipo con Nmap: qué significa un escaneo de puertos, qué tipos de sondeo existen (TCP SYN vs TCP connect), qué privilegios necesitas, opciones útiles y ejemplos paso a paso que puedas ejecutar y verificar en tu laboratorio. Al terminar sabrás cuándo usar -sS o -sT, cómo escanear todos los puertos (-p-), cómo guardar resultados y cómo interpretar estados como open, closed o filtered.
Requisitos previos
- Tener Nmap instalado en tu sistema. En Linux suele instalarse desde el repositorio (apt, dnf, pacman). Si necesitas ayuda para instalarlo en Linux, consulta nuestra guía: Instalar Nmap en Linux: Guía Práctica.
- Privilegios: para realizar sondeos basados en paquetes crudos (por ejemplo -sS) necesitas permisos de administrador/root en Unix (o privilegios equivalentes).
- En Windows, Nmap requiere el driver Npcap para captura y envío de paquetes crudos; sin Npcap puedes recurrir a -sT (connect scan) que usa la API de sockets de alto nivel.
Nota: escanear sistemas sin autorización puede ser ilegal. Realiza estos pasos solo en equipos autorizados o en un entorno de laboratorio controlado.
Qué son los puertos objetivo y comportamiento por defecto de Nmap
Un puerto TCP es una puerta lógica por la que un servicio escucha (por ejemplo 22 para SSH, 80 para HTTP). Cuando no especificas -p, Nmap por defecto escanea los 1.000 puertos TCP más comunes para ahorrar tiempo en exploraciones iniciales. (nmap.org
Escaneo rápido vs escaneo completo
- -F (fast): escanea ~100 puertos más comunes; útil para reconocimiento rápido.
- –top-ports N: escanea los N puertos más frecuentes según nmap-services.
- -p-: escanea todos los puertos desde 1 hasta 65535 (equivalente a -p 1-65535). Úsalo cuando necesites un barrido completo. (nmap.org
Tipos de sondeo TCP: TCP SYN (-sS) vs TCP connect (-sT)
La diferencia clave está en cómo se realiza el handshake:
- TCP SYN (-sS) — llamado «half-open» scan: Nmap envía SYN y evalúa la respuesta (SYN/ACK = abierto, RST = cerrado) sin completar el handshake completo. Es más rápido y genera menos conexiones completas en los logs de destino, pero requiere envío de paquetes crudos (privilegios root en Unix). Por defecto Nmap intenta realizar un SYN scan cuando tiene privilegios. (nmap.org
- TCP connect (-sT) — usa la llamada connect() del sistema: el sistema operativo completa el handshake por ti. No requiere privilegios especiales y es el modo que Nmap emplea si no dispone de permisos para paquetes crudos. Es más ruidoso y a veces más lento en grandes barridos. (nmap.org
Otras opciones útiles para escaneos TCP
- -Pn: evita la fase de descubrimiento (host discovery) y fuerza el escaneo de puertos aunque el host no responda a pings o probes; útil contra hosts que bloquean ICMP o probes de descubrimiento.
- -T <0-5>: controles de timing; -T4 es común para acelerar (más ruido). -T5 puede causar falsos positivos o detección por IDS.
- -sV: detección de versión del servicio (intenta identificar servidor y versión). Puedes controlar agresividad con –version-intensity.
- –top-ports N y -F para escaneos rápidos.
Comandos de ejemplo (paso a paso) y cómo verificar que han funcionado
Ejemplo 1 — reconocimiento inicial, detectando versiones (ejecutar como root para -sS):
sudo nmap -sS --top-ports 100 -T4 -sV 192.168.1.10
Qué hace: escanea los 100 puertos más comunes con SYN scan, acelera timings y detecta versiones. Verificación: en la salida busca la sección «PORT STATE SERVICE VERSION» y confirma que aparecen puertos en estado «open» con servicio/version.
Ejemplo 2 — escaneo completo de puertos (más tiempo):
sudo nmap -sS -p- -T4 -sV -oA scan-completo 192.168.1.10
Qué hace: escanea todos los puertos 1-65535, detecta versiones y guarda los resultados en tres formatos (normal, XML y grepable) con la base ‘scan-completo’. Revisa los ficheros scan-completo.nmap (legible), scan-completo.xml (automático) y scan-completo.gnmap (grepable) para comprobar resultados.
Comandos alternativos en Windows sin Npcap
Si no tienes Npcap instalado o no tienes permisos para paquetes crudos, usa:
nmap -sT -Pn -p 1-1024 10.0.0.5
Esto hace un connect scan a los puertos 1-1024 sin discovery. En Windows, instalar Npcap permite volver a usar -sS y otras técnicas basadas en paquetes crudos. (nmap.org
Guardar resultados y formatos
- -oN <fichero> — salida normal legible.
- -oX <fichero> — XML (útil para procesar con herramientas).
- -oG <fichero> — formato grepable.
- -oA <base> — guarda en los tres formatos anteriores usando la base indicada.
Interpretación práctica de estados de puerto
- open: servicio responde en ese puerto (se puede conectar).
- closed: puerto accesible pero sin servicio escuchando (RST recibido).
- filtered: Nmap no puede determinar si está abierto o cerrado porque paquetes son bloqueados (firewall).
- unfiltered / open|filtered: otros estados que indican comportamientos intermedios; consulta la manpage si aparece alguno.
Consejos para escaneos fiables y rápidos
- Empieza con un escaneo rápido (–top-ports, -F) para identificar objetivos prioritarios y luego amplía con -p- si hace falta.
- Ajusta -T según la latencia y la sensibilidad de la red; -T4 funciona bien en LAN. Evita -T5 salvo en pruebas controladas.
- Orden de puertos: Nmap randomiza la ordenación por defecto para evitar disparar reglas secuenciales de bloqueo.
- Para reducir falsos positivos en -sV, usa –version-intensity para controlar cuánto indagar.
- En red local, Nmap usa ARP para descubrir hosts en la misma subred; -Pn no evita ARP local — conoce el contexto de la red. (nmap.org
Limitaciones en Windows y entornos virtualizados
En Windows Nmap depende de Npcap para funciones avanzadas de envío/captura de paquetes; si Npcap no está instalado o se instaló sin privilegios adecuados, SÍ es posible hacer escaneos básicos con -sT, pero perderás precisión y técnicas como SYN scan. En máquinas virtuales revisa la configuración de red (modo puente vs NAT) ya que NAT puede ocultar puertos del hipervisor. (nmap.org
Errores comunes y soluciones
- Error: «Operation not permitted» al intentar -sS — Solución: ejecutar con sudo/root o ajustar capacidades en Linux (cap_net_raw). Comprueba permisos y Npcap en Windows.
- Muchos puertos apareciendo como filtered — puede deberse a un firewall intermedio o IPS; prueba -Pn si sospechas bloqueo en la fase de discovery y ajusta tiempos.
- Salida con «All 1000 scanned ports … are in ignored states» — significa que Nmap no encontró puertos en estados que considere interesantes. Repite con -p- si buscas puertos no habituales.
Buenas prácticas legales y éticas
No escanees equipos sin autorización explícita. Pide permiso por escrito, limita pruebas a ventanas acordadas y registra los escaneos. Para aprendizaje, usa máquinas propias, contenedores o redes de laboratorio.
Recursos internos relacionados
- Si necesitas descubrir hosts en tu LAN antes de escanear puertos, consulta: Cómo escanear red local con Nmap para descubrir equipos.
Resolución de problemas rápidos
- ¿No ves puertos abiertos? Ejecuta:
sudo nmap -sS -p- -T4 -sV <IP>y comprueba scan-completo.nmap. - ¿No tienes permisos en Windows? Instala Npcap con privilegios y reinicia el sistema, luego repite el -sS.
- ¿Resultados inconsistentes desde Internet vs LAN? Revisa NAT, firewalls y si Nmap usó ARP en la LAN (comportamiento distinto). (nmap.org
Recomendación final
Para reconocimiento: comienza con nmap -sS --top-ports 100 -T4 -sV <target>. Si necesitas exhaustividad, escala a nmap -sS -p- -T4 -sV -oA scan-completo <target> ejecutando con privilegios adecuados. Ajusta -T y –version-intensity según la estabilidad de la red y el ruido que puedas tolerar.
Preguntas frecuentes
¿Puedo escanear todos los puertos sin ser root? Sí: con -sT (connect scan) puedes escanear todos los puertos sin privilegios de root; sin embargo no podrás realizar técnicas que requieren paquetes crudos como -sS en sistemas Unix. (nmap.org
¿Cuánto tarda un -p-? Depende de la latencia y el timing (-T), el ancho de banda y el objetivo; puede ir de minutos en LAN a horas desde Internet. Usa -T4 y –min-rate para acelerar, con precaución.
Si necesitas, puedo añadir ejemplos concretos para tu distribución Linux o para Windows con Npcap (incluyendo comandos exactos de instalación) — dime qué sistema usas.
