Proteccion contra escaneo de puertos: bloquear sondeo
Cómo los sitios web usan JavaScript para sondear puertos de red local y detectar servicios, y cómo bloquear el escaneo de puertos a nivel del navegador.
Prefieres la documentación del producto mantenida?
Este artículo tiene una página equivalente en el centro de documentación. Usa los docs para el flujo canónico, las flags actuales y la referencia duradera.
Introducción
Tu computadora ejecuta servicios en varios puertos de red: servidores de desarrollo, motores de bases de datos, protocolos de escritorio remoto, VNC, Docker y más. Cada vez que visitas un sitio web, los scripts de esa página pueden intentar sondear tus puertos de red local para descubrir qué servicios están ejecutándose. El patrón de puertos abiertos y cerrados crea una huella digital distintiva de tu entorno local, una que es lo suficientemente única como para identificarte entre sesiones e incluso entre diferentes navegadores.
Esta es una seria preocupación de privacidad. La huella digital de puertos puede persistir incluso cuando cambias tu dirección IP, borras tus cookies o cambias a un perfil de navegador diferente. Los servicios ejecutándose en tu máquina tienden a permanecer consistentes en el tiempo, haciendo de esta una señal de rastreo altamente confiable para cualquier sitio web que decida recopilarla.
BotBrowser proporciona protección de puertos integrada que controla cómo el navegador responde a los sondeos de puertos locales a nivel del motor. En lugar de simplemente bloquear conexiones (lo cual es en sí detectable), BotBrowser asegura que todos los sondeos de puertos locales devuelvan resultados uniformes. Esto hace imposible para los sitios web distinguir puertos abiertos de cerrados, neutralizando efectivamente toda esta categoría de rastreo por huella digital.
Por qué importa la privacidad de puertos
El escaneo de puertos desde el navegador es una preocupación de privacidad real y bien documentada. Se ha observado que sitios web sondean docenas de puertos locales para construir una imagen del software que se ejecuta en las máquinas de los visitantes. Los tipos de información que pueden recopilarse incluyen detalles sobre todo tu entorno informático.
Las herramientas de desarrollo son un objetivo común. Cuando un desarrollador web tiene servicios ejecutándose en puertos comúnmente asociados con frameworks y herramientas de compilación, cualquier sitio web puede saber que el visitante es probablemente un desarrollador de software. Esta información por sí sola reduce significativamente el grupo de identidades potenciales.
El software de acceso remoto es otra señal. Los servicios asociados con escritorio remoto, acceso por terminal y herramientas de compartir pantalla revelan detalles importantes sobre cómo usas tu máquina y qué tipo de infraestructura gestionas.
Los servicios de bases de datos ejecutándose en puertos estándar informan a los sitios web sobre el stack tecnológico con el que trabajas. Ya sea que uses bases de datos relacionales, almacenes de documentos o cachés en memoria, cada servicio en ejecución añade otro punto de datos a tu huella digital de puertos.
Los servicios de contenedores y virtualización son particularmente reveladores. Su presencia indica un cierto tipo de usuario técnico y puede revelar detalles sobre tu flujo de trabajo de desarrollo y despliegue.
Las herramientas de seguridad y redes completan el panorama. Los clientes VPN, interfaces de gestión de firewall y servicios de monitoreo de seguridad contribuyen cada uno a un perfil completo de tu configuración informática.
La combinación de todas estas señales crea una huella digital estable. Tu conjunto de servicios en ejecución tiende a ser consistente entre sesiones de navegación, convirtiéndolo en una de las señales de rastreo más confiables disponibles. Incluso si rotas tu IP, borras todo el almacenamiento del navegador y usas un perfil de navegador nuevo, el patrón de tus servicios en ejecución permanece mayormente igual.
Cuando los resultados del escaneo de puertos se combinan con técnicas tradicionales de fingerprinting del navegador como análisis de Canvas, renderizado WebGL y enumeración de fuentes, la huella digital general se vuelve aún más única y persistente. Este enfoque multicapa del rastreo por huella digital es la razón por la que la protección de puertos es un componente esencial de una privacidad integral.
El desafío de la protección de puertos
Proteger contra el fingerprinting basado en puertos es más matizado de lo que inicialmente pudiera parecer. Varios enfoques comunes tienen limitaciones significativas que reducen su efectividad en la práctica.
Por qué el bloqueo simple se queda corto
Un enfoque directo de protección de puertos es bloquear todas las conexiones a direcciones locales. Sin embargo, esto crea su propio conjunto de problemas que pueden hacer tu navegador más identificable, no menos.
Cuando las conexiones a localhost se bloquean directamente, el patrón de error es diferente de lo que produce un navegador estándar. Un sitio web puede detectar el comportamiento de bloqueo en sí, convirtiendo tu medida de protección en otra señal distintiva. Además, el bloqueo uniforme es conspicuo a su manera. Si cada puerto devuelve la misma respuesta bloqueada instantáneamente, la uniformidad destaca contra la variación natural que un navegador normal mostraría.
El bloqueo también rompe funcionalidad legítima. Muchas aplicaciones web necesitan comunicarse con servicios locales. Los servicios de streaming de música que se conectan con apps de escritorio, las herramientas de desarrollo que usan localhost para hot reloading, y los flujos de autenticación que dependen de servidores de redirección locales todos dependen de la conectividad con localhost. El bloqueo generalizado interrumpe estos flujos de trabajo.
Extensiones de navegador
Las extensiones que filtran solicitudes de red pueden bloquear conexiones a direcciones locales a través de sus reglas de filtro. Sin embargo, las extensiones operan en la capa de JavaScript, lo que significa que interceptan solicitudes después de que el motor del navegador ya ha comenzado a procesarlas. Las características de temporización del bloqueo en sí pueden proporcionar información analizable. Las extensiones también pueden detectarse a través de sus efectos secundarios en las API del navegador, y no todos los tipos de conexión pueden interceptarse consistentemente a través de diferentes mecanismos de solicitud como WebSocket, cargas de imágenes y llamadas fetch.
Reglas de firewall
Los firewalls del sistema operativo pueden restringir qué procesos pueden vincularse a puertos. Sin embargo, esto no aborda el fingerprinting de puertos porque el navegador está haciendo conexiones salientes a localhost, no recibiendo conexiones entrantes desde internet. Las reglas de firewall que bloquean al navegador de conectarse a localhost romperían la comunicación legítima con servicios locales y crearían los mismos problemas de detectabilidad que el bloqueo simple.
Namespaces de red y contenedores
Ejecutar el navegador en un contenedor con un namespace de red separado puede prevenir que alcance los servicios del host. Este enfoque es efectivo en aislamiento pero añade complejidad significativa de infraestructura. Puede no ser práctico para todos los escenarios de despliegue, especialmente cuando el navegador necesita interactuar con servicios en la máquina host como parte de flujos de trabajo legítimos.
Enfoques basados en VPN
Algunas configuraciones de VPN pueden enrutar el tráfico local de forma diferente. Esto añade sobrecarga de red e introduce complejidad adicional sin abordar completamente la preocupación subyacente de fingerprinting. El problema fundamental es cómo responde el navegador a los sondeos de puertos, y los cambios de enrutamiento por sí solos no normalizan esas respuestas.
Enfoque de BotBrowser para la protección de puertos
Protección a nivel del motor
BotBrowser resuelve el problema de fingerprinting de puertos al nivel correcto: dentro del motor del navegador mismo. El flag --bot-port-protection (PRO) activa protección que controla el comportamiento de acceso a puertos en la capa más profunda posible. Cuando está habilitado, todas las conexiones a direcciones locales producen características de temporización uniformes independientemente de si un servicio está realmente ejecutándose en ese puerto.
chrome --bot-profile="/path/to/profile.enc" \
--bot-port-protection
Este enfoque es fundamentalmente diferente de los métodos de bloqueo y filtrado descritos anteriormente, y proporciona protección que esos métodos no pueden igualar.
Las conexiones proceden normalmente. BotBrowser no bloquea conexiones a localhost. En su lugar, controla el comportamiento de temporización observable para que los puertos abiertos y cerrados sean indistinguibles para cualquier script ejecutándose en la página. Tus servicios locales continúan funcionando como se espera.
Sin artefactos detectables. Todas las API del navegador se comportan normalmente. No hay propiedades faltantes, prototipos alterados o patrones de error inusuales que indicarían que la protección está activa. El navegador se ve y se comporta exactamente como una instalación estándar.
Los servicios locales legítimos siguen funcionando. Las aplicaciones que necesitan comunicación con localhost funcionan correctamente. Ya sea que estés usando un servicio de streaming de música, un servidor de desarrollo local o cualquier otra aplicación que dependa de la conectividad con localhost, todo funciona como se espera. La protección aborda específicamente las señales de temporización que permitirían a un sitio web distinguir entre estados de puertos.
Cobertura integral
La protección de puertos de BotBrowser cubre todos los rangos de direcciones comúnmente sondeados para asegurar privacidad completa:
- 127.0.0.0/8: el rango completo de loopback IPv4, incluyendo todas las direcciones 127.x.x.x
- ::1: dirección de loopback IPv6
- localhost: acceso basado en nombre de host a servicios locales
La protección cubre 30 puertos comúnmente sondeados a través de estos rangos de direcciones. Estos son los puertos más frecuentemente objetivos del fingerprinting de puertos basado en navegador, cubriendo herramientas de desarrollo, bases de datos, servicios de acceso remoto, plataformas de contenedores y otro software comúnmente ejecutado.
Configuración basada en perfil
Además del flag CLI, la protección de puertos puede habilitarse directamente en la configuración del perfil. Esto es ideal para perfiles que siempre deberían tener la protección de puertos activa, asegurando que la protección nunca se omita accidentalmente.
{
"configs": {
"portProtection": true
}
}
Cuando se establece en el perfil, la protección de puertos se activa automáticamente cuando el perfil carga. No se necesita ningún flag CLI adicional. Esto facilita estandarizar la protección de puertos en toda tu flota de perfiles de navegador.
Configuración y uso
Configuración básica de CLI
Comenzar con la protección de puertos requiere solo un flag adicional añadido a tu comando de lanzamiento de BotBrowser:
chrome --bot-profile="/path/to/profile.enc" \
--bot-port-protection \
--user-data-dir="$(mktemp -d)"
Esta única adición protege tu huella digital de servicios locales durante toda la sesión de navegación.
Configuración completa de privacidad
Para privacidad de red integral, combina la protección de puertos con proxy, DNS y protección WebRTC. Esta combinación aborda todos los vectores principales de fingerprinting y rastreo a nivel de red:
chrome --bot-profile="/path/to/profile.enc" \
--bot-port-protection \
--proxy-server=socks5://user:pass@proxy:1080 \
--bot-local-dns \
--bot-webrtc-ice=google
Esta configuración asegura que tus servicios locales, consultas DNS, dirección IP y conexiones WebRTC estén todos protegidos simultáneamente. Cada capa de protección aborda un vector de rastreo diferente, y juntas proporcionan una solución integral de privacidad de red.
Integración con Playwright
BotBrowser se integra naturalmente con Playwright. Añade el flag de protección de puertos a tus argumentos de lanzamiento y la protección está activa para toda la navegación de páginas durante la sesión del navegador:
const { chromium } = require('playwright-core');
(async () => {
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-port-protection',
],
headless: true,
});
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
// La protección de puertos está activa para toda la navegación
await browser.close();
})();
Integración con Puppeteer
La misma integración sencilla funciona con Puppeteer. Añade el flag y tus servicios locales están protegidos para cada página que el navegador visite:
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-port-protection',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
})();
Despliegue en servidor headless
En servidores headless, la protección de puertos es especialmente importante. Los servidores típicamente ejecutan muchos servicios, incluyendo bases de datos, agentes de monitoreo, plataformas de contenedores y servidores de aplicaciones. Sin protección de puertos, cualquier sitio web visitado por el navegador podría potencialmente catalogar todos estos servicios, creando una huella digital altamente distintiva vinculada a ese servidor específico.
chrome --bot-profile="/path/to/profile.enc" \
--bot-port-protection \
--headless=new \
--proxy-server=socks5://user:pass@proxy:1080
Para despliegues en producción, considera establecer la protección de puertos en la configuración del perfil en lugar de pasarla como flag CLI. Esto asegura que la protección esté siempre activa independientemente de cómo se lance el navegador.
Verificación
Para confirmar que la protección de puertos funciona correctamente en tu entorno:
- Inicia un servicio conocido en un puerto específico (por ejemplo, un servidor HTTP simple en el puerto 8080)
- Lanza BotBrowser con
--bot-port-protection - Navega a una página de prueba de fingerprinting que verifique la accesibilidad de puertos
- Confirma que la página de prueba no puede distinguir el puerto abierto de los puertos cerrados
- Verifica que tus servicios locales sigan funcionando correctamente a través del navegador
Este proceso de verificación asegura que la protección está activa y que tus flujos de trabajo legítimos no se ven afectados.
Mejores prácticas
-
Habilita la protección de puertos en máquinas de desarrollo. Los desarrolladores típicamente ejecutan muchos servicios que crean una huella digital de puertos altamente distintiva. La protección de puertos es especialmente valiosa en este escenario porque la combinación de servidores de desarrollo, bases de datos y herramientas crea una huella que a menudo es única para un solo individuo.
-
Habilita la protección de puertos en servidores. Los servidores headless que ejecutan múltiples servicios como bases de datos, agentes de monitoreo, Docker y servidores de aplicaciones son particularmente susceptibles al fingerprinting de puertos. El rico panorama de servicios en un servidor de producción o staging lo convierte en un objetivo fácil para la identificación a través del análisis de puertos.
-
Combina con otras protecciones de red. La protección de puertos aborda el fingerprinting de servicios locales, que es una pieza del panorama de privacidad de red. Combínala con configuración de proxy para privacidad de IP, prevención de fugas DNS para privacidad de consultas y protección WebRTC para privacidad de conexión. Juntas, estas protecciones crean una capa integral de privacidad de red.
-
Usa configuración basada en perfil para protección consistente. Si la protección de puertos debería estar activa para un perfil específico, establécela en el campo
configs.portProtectiondel perfil para que se active automáticamente cada vez. Esto elimina el riesgo de olvidar incluir el flag CLI y asegura protección consistente en todas las sesiones. -
Prueba después de cambios de configuración. Siempre que modifiques tu configuración de red, configuración de proxy o entorno del servidor, verifica que la protección de puertos sigue funcionando como se espera. Una verificación rápida confirma que todas las capas de protección funcionan correctamente juntas.
-
Considera tu superficie completa de huella digital. La protección de puertos es más efectiva cuando se usa como parte de una estrategia completa de protección de huella digital. Revisa tu configuración de Canvas, WebGL, fuentes y otras huellas digitales junto con la protección de puertos para asegurar cobertura integral contra el rastreo.
Preguntas frecuentes
¿La protección de puertos rompe los flujos de trabajo de desarrollo local? No. La protección de puertos controla las características de temporización de las conexiones locales, no si tienen éxito o fallan. Las conexiones legítimas a servicios locales funcionan normalmente. Tus servidores de desarrollo, conexiones a bases de datos y herramientas locales continúan funcionando como se espera. La protección específicamente previene que los sitios web usen diferencias de temporización para mapear tu panorama de servicios locales.
¿La protección de puertos cubre todos los puertos? BotBrowser cubre 30 puertos comúnmente sondeados a través de loopback IPv4 (127.0.0.0/8), loopback IPv6 (::1) y localhost. Estos puertos fueron seleccionados basándose en análisis del mundo real de qué puertos son más frecuentemente objetivo del fingerprinting de puertos basado en navegador. Cubren la gran mayoría de servicios que los scripts de fingerprinting intentan detectar.
¿Puedo usar la protección de puertos sin un proxy? Sí. La protección de puertos es independiente de la configuración de proxy. Protege tu huella digital de servicios locales independientemente de tu configuración de enrutamiento de red. Sin embargo, para privacidad integral, recomendamos combinar la protección de puertos con un proxy para también proteger tu dirección IP.
¿La protección de puertos afecta las conexiones WebSocket a localhost? Las conexiones WebSocket a localhost siguen funcionando normalmente. La protección asegura que el comportamiento de conexión sea uniforme entre puertos, previniendo que los sitios web usen sondeos WebSocket para mapear tus servicios locales.
¿La protección de puertos está habilitada por defecto?
No. La protección de puertos requiere ya sea el flag CLI --bot-port-protection o la configuración del perfil configs.portProtection. No está activa por defecto, dándote control total sobre cuándo y dónde se aplica la protección.
¿La protección de puertos funciona en modo headless? Sí. La protección de puertos funciona de forma idéntica tanto en modo con ventana como en modo headless. Ya sea que estés ejecutando BotBrowser en un escritorio o en un servidor headless, la protección proporciona el mismo nivel de cobertura.
¿Los sitios web pueden detectar que la protección de puertos está activa? La protección de puertos de BotBrowser opera a nivel del motor, por debajo de la capa de JavaScript. La normalización de temporización asegura que los puertos abiertos y cerrados sean indistinguibles entre sí. No hay artefactos visibles en JavaScript, comportamientos alterados de API o patrones de respuesta inusuales que indicarían que la protección está activa. El navegador se comporta exactamente como lo haría una instalación estándar.
¿Qué pasa con los puertos en la red local (192.168.x.x)? La protección de puertos de BotBrowser cubre los rangos de direcciones de loopback (127.0.0.0/8, ::1, localhost). Para direcciones de red local (192.168.x.x, 10.x.x.x, 172.16.x.x), consulta la documentación más reciente para detalles de cobertura actual.
¿Cómo complementa la protección de puertos otras funciones de BotBrowser? La protección de puertos es una capa en el sistema integral de protección de huella digital de BotBrowser. Funciona junto con la protección de Canvas, protección de WebGL, protección de fuentes, prevención de fugas WebRTC, prevención de fugas DNS y muchas otras funciones para crear una huella digital de navegador consistente y auténtica. Cada función aborda un vector de rastreo diferente, y juntas proporcionan protección completa contra el rastreo basado en huella digital.
Resumen
El fingerprinting de puertos basado en navegador crea una señal de rastreo persistente analizando qué servicios están ejecutándose en tu máquina. Esta huella digital persiste a través de cambios de IP, borrado de cookies y reinicios del navegador, convirtiéndola en uno de los métodos de rastreo más duraderos disponibles para los sitios web hoy en día.
La protección de puertos a nivel del motor de BotBrowser asegura que todos los sondeos de puertos devuelvan resultados uniformes, haciendo imposible para los sitios web mapear tu panorama de servicios locales. La protección funciona al nivel más profundo posible, no produce artefactos detectables y preserva la compatibilidad total con servicios locales legítimos.
Combinada con la configuración de proxy, prevención de fugas DNS y protección WebRTC, la protección de puertos completa el panorama de privacidad de red. Juntas, estas funciones aseguran que tu entorno de red no revele nada que pueda usarse para el rastreo por huella digital.
Para protecciones de red relacionadas, consulta Prevención de fugas DNS y Prevención de fugas WebRTC. Para gestión completa de identidad, consulta Aislamiento de navegador multicuenta.
Artículos Relacionados
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.