Escáner de puertos
Veinte puertos conocidos, una conexión TCP a cada uno, desde el servidor de sysosx —y tres respuestas honestas, no dos—. Un puerto puede estar abierto (algo responde), cerrado (el host lo rechaza activamente) o filtrado (silencio: normalmente un cortafuegos que descarta paquetes, no la prueba de que no hay nada). El objetivo por defecto es scanme.nmap.org, el host público que el proyecto nmap mantiene precisamente para que la gente aprenda a escanear; para cualquier otro host, escanea tus propios servidores o aquellos que estés autorizado a probar.
¿Quieres que esto se vigile continuamente? Vigílalo gratis con myeventwatch — alertas de caducidad y caídas, sin tarjeta.
Qué mide el escaneo
Un escaneo de puertos suele describirse como «comprobar qué puertas están abiertas», y la metáfora es lo bastante acertada para ser útil, con una corrección. Una puerta puede estar abierta, cerrada con llave o simplemente sin respuesta: llamar y no oír nada no es lo mismo que encontrar la puerta cerrada con llave, y un escáner que solo informa de abierto y cerrado está ocultando el tercer caso. Por eso este escáner informa de abierto, cerrado y filtrado como tres estados distintos. Abierto significa que la conexión tuvo éxito, así que un servicio está escuchando y aceptando conexiones. Cerrado significa que el host envió un reinicio: está vivo y no tiene nada en ese puerto. Filtrado significa que la espera completa de un segundo pasó en silencio, que es el aspecto que tiene desde fuera un cortafuegos descartando paquetes; el puerto puede tener un servicio detrás de ese cortafuegos, y el escaneo no puede afirmar lo contrario. Mantener filtrado separado es la diferencia entre un resultado sobre el que puedes actuar y uno que te engaña en silencio.
El escaneo es deliberadamente estrecho. Sonda una lista fija de unos veinte puertos —web (80, 8080, 8443, 443), correo (25, 110, 143, 993, 995), DNS (53), acceso remoto (22, 23, 3389, 5900), uso compartido de archivos (445), bases de datos (3306, 5432, 27017) y algunos más— con simples conexiones TCP y nada más. No hay lectura de banners, así que el escaneo nunca aprende (ni filtra) la versión de un servicio; no hay UDP, cuyas respuestas «filtradas» son mucho más ruidosas; y no hay forma de aportar tus propios puertos, porque una entrada de puertos arbitrarios convierte una herramienta de primer vistazo en un servicio general de mapeo. El objetivo en sí se resuelve una vez y cada conexión va a esa única dirección fijada, de modo que un nombre que cambie a mitad del escaneo no puede redirigir las sondas a otra parte. Por debajo, la página llama a GET /api/check/port-scan en el servidor de sysosx, que ejecuta las veinte conexiones en paralelo y guarda el resultado en caché diez minutos.
Cómo leer un resultado
Empieza por los puertos abiertos: son la superficie de ataque real, los servicios a los que internet puede llegar. Un 22 o un 3389 abiertos significan que el acceso remoto es alcanzable desde cualquier lugar, lo que puede ser intencionado (un servidor que administras) o puede ser lo primero que haya que restringir a tus propias direcciones. Un puerto de base de datos abierto (3306, 5432, 27017) frente a internet casi nunca es intencionado y merece atención inmediata: las bases de datos están pensadas para que lleguen a ellas las aplicaciones, no todo internet. Los puertos 80 y 443 abiertos son normales en un servidor web; los puertos de correo abiertos son normales en un servidor de correo; todo lo demás que esté abierto debería poder explicarse a sí mismo. Los puertos cerrados no necesitan nada: el host está vivo y rechazando, que es el estado esperado para la mayor parte de la lista en la mayoría de los servidores. Los puertos filtrados solo merecen una segunda mirada si esperabas algo ahí: un servicio que ejecutas y que el escaneo no puede ver suele ser una regla de cortafuegos haciendo su trabajo, o un servicio enlazado a la interfaz equivocada, y el escaneo por sí solo no puede distinguir una cosa de la otra. Un resultado sin ningún puerto abierto es un resultado normal, no un error: significa que ninguno de los veinte servicios habituales es alcanzable desde el punto de vista de este servidor, que es exactamente el aspecto de un host endurecido.
Herramientas relacionadas: el calificador SSL para la configuración TLS del puerto 443 una vez que sabes que está abierto, la comprobación de salud del sitio para alcanzabilidad y registros juntos, y el comprobador de propagación DNS cuando la pregunta es adónde apunta un nombre y no qué responde en él.
Lectura adicional: qué dicen los puertos abiertos de un servidor — cómo leer un escaneo como un operador, qué puertos abiertos son normales y cuáles son una llamada a las 3 de la mañana esperando a ocurrir.
Preguntas frecuentes
¿En qué se diferencia esto de ejecutar nmap?
Nmap lo escanea todo, de todas las maneras: rangos completos de puertos, UDP, detección de versiones, huella del sistema operativo. Esta herramienta hace una sola cosa estrecha desde el servidor de sysosx: conexiones TCP a una lista fija de unos veinte puertos conocidos, y nada más. Sin lectura de banners, sin detección de versiones, sin UDP, sin puertos personalizados. Esa estrechez es el punto: responde a «¿qué está escuchando en los puertos habituales?» sin convertirse en un escáner de uso general que cualquiera pueda apuntar a cualquier cosa.
¿Qué significan realmente abierto, cerrado y filtrado?
Abierto significa que una conexión TCP tuvo éxito: algo está escuchando y aceptando conexiones en ese puerto. Cerrado significa que el host rechazó activamente la conexión (un paquete de reinicio), que es como responde un host vivo que no tiene nada en ese puerto. Filtrado significa que el puerto no dio ninguna respuesta en un segundo, normalmente un cortafuegos descartando paquetes en silencio. Filtrado no es cerrado: un puerto filtrado puede tener un servicio detrás de un cortafuegos, y la única afirmación honesta es «sin respuesta». La tabla de resultados mantiene los tres estados separados exactamente por esa razón.
¿Por qué solo veinte puertos, y por qué no puedo añadir los míos?
Porque un escáner de puertos con una entrada de puertos arbitrarios es una herramienta para mapear cualquier host de internet, y este sitio no va a ser eso. La lista cubre los puertos que importan para un primer vistazo —web, correo, DNS, bases de datos, acceso remoto, uso compartido de archivos— y el servidor rechaza todo lo que está fuera de ella. Si necesitas un escaneo completo de un host que te pertenece, ejecuta nmap desde tu propia máquina, donde controlas el alcance y las consecuencias.
¿Por qué scanme.nmap.org es el valor por defecto?
Porque existe exactamente para este propósito: el proyecto nmap lo mantiene como un objetivo público que cualquiera puede escanear, para aprender cómo funciona el escaneo. Es el único host de internet donde escanear no necesita ninguna discusión sobre permisos. Para cualquier otro host, la regla es sencilla: escanea tus propios servidores, servidores que estés autorizado a probar u objetivos públicos de prueba, nunca la infraestructura de un desconocido.
¿Por qué el resultado se guarda en caché diez minutos, y por qué cinco escaneos nuevos por hora?
Un escaneo son veinte conexiones TCP en paralelo, no un solo apretón de manos, así que cuesta más que las demás comprobaciones y es más fácil abusar de él para sondeos masivos. La caché de diez minutos significa que una comprobación repetida del mismo host no cuesta nada, y el límite de nuevos escaneos, más estricto (cinco por hora por visitante, dos por minuto como máximo), mantiene la herramienta utilizable para una persona que comprueba sus propios servidores sin convertirse en un servicio de sondeo. Un resultado en caché se etiqueta como tal; los puertos abiertos de un host rara vez cambian de un minuto a otro.