¿Es posible saber si dos direcciones IP pertenecen al mismo servidor?

21

Dadas dos direcciones IP públicas y el conocimiento de que ambas están en la misma red / 27, ¿sería posible determinar desde una ubicación remota (es decir, un país diferente) si pertenecen a uno o dos servidores?

Michelle
fuente
2
¿Puede dar más detalles sobre lo que está tratando de lograr y la naturaleza de los servidores que está tratando de identificar?
bobstro
3
Los tiempos de ping pueden proporcionar una pista, por ejemplo, si todas las IP responden en un período de tiempo aleatorio, pero dos de ellas responden con casi el mismo retraso.
10
¿Se le permite hacer uno y ver si el otro deja de responder también?
Ben Voigt
1
@ Los tiempos de AndréDaniel Ping fallarán totalmente si los servidores están ubicados. El mismo bastidor no es el mismo servidor.
TomTom

Respuestas:

29

No, no lo es, en el caso general.


Algunas adiciones, para hacer felices a nuestros huéspedes de SO:

  • No hay nada en los protocolos básicos de TCP / IP (por ejemplo, IP / TCP / UDP, ICMP) que esté específicamente destinado a hacer la distinción solicitada en la pregunta.
  • Lo mismo es cierto para muchos protocolos de nivel superior, por ejemplo, HTTP.
  • De hecho, es posible utilizar diferencias más o menos sutiles en los patrones de respuesta para adivinar el sistema. Si tiene dos sistemas muy diferentes, por ejemplo, un servidor Linux y Windows, esto podría ser suficiente para asegurarse de tener dos hosts.
  • Esto se volverá más difícil cuanto más similares sean los sistemas. Es probable que dos nodos en un clúster web HA con hardware y sistema operativo idénticos sean imposibles de mantener separados de esta manera. Considero que este es el caso general en la mayoría de los escenarios de hoy.
  • Por último: ¿son dos máquinas virtuales en la misma caja física uno o dos servidores? Dependiendo de por qué intentas diferenciar en primer lugar, esto puede ser importante y es completamente imposible saberlo a nivel de red.
Sven
fuente
2
La respuesta de Sven es 100% correcta, pero podría ser posible adivinar si están ejecutando diferentes sistemas operativos (a través de nmap o la prueba de ping descrita aquí kellyodonnell.com/content/determining-os-type-ping ). Sin embargo, ambos podrían ser vms que se ejecutan en un host.
Andy
1
@Andy: Por eso dije "en el caso general". En algunos casos, puede averiguarlo, pero por otro lado, en algunos casos ni siquiera se da cuenta de que no hay una computadora detrás de una sola dirección IP, sino cien ...
Sven
3
@Sven: La pregunta es si dos IP se correlacionan con una sola computadora, no si los servicios en una IP común se correlacionan con varias máquinas. Estoy de acuerdo en que no hay un método universal garantizado para funcionar siempre, pero si uno puede encontrar suficientes puntos en común entre las respuestas que se reciben, es posible hacer una suposición razonable. Michelle necesita elaborar exactamente qué se debe lograr para determinar si existe una solución útil. ¿Importa si es una configuración de carga equilibrada o virtual, por ejemplo?
bobstro
1
Ambiguo cuando lanzas virtualización. Supongamos que tiene dos máquinas virtuales, Guest A e Guest B, cada una con una IP diferente pero en la misma red / 27. Supongamos además que estos dos invitados están alojados por el Host C. En un sentido, las dos / 27 direcciones pertenecen a diferentes "servidores", pero en otro sentido podrían pasar a través de la misma NIC y el mismo host, por lo que uno puede argumentar que las IP pertenecen al mismo "servidor". Si el Guest A a su vez aloja dos VM más, Guest X e Guest Y, también con sus propias direcciones / 27, ¿cuáles de estas IP pertenecen a la misma computadora? ¿Qué sucede si "vMotion" alguna de estas máquinas virtuales? No tengo una buena respuesta.
Joshua Huber
13

Curioso por "por qué". Las inquietudes sobre las máquinas de doble referencia suelen localizarse como el dolor de cabeza de algunos administradores de sistemas sin nombre. El modelo OSI debe ocultar los detalles.

Respuesta centrada en Linux por delante.

Hay algunas formas de generar huellas digitales y hacer una suposición educativa.

  1. nmap -o y nmap con un escaneo de puertos decente. Los servidores no siempre se unen a ambas NIC. Pero muchas veces lo hacen.

  2. Direcciones MAC Si tenía algún medio para obtener las direcciones MAC, a los fabricantes les gusta usar direcciones consecutivas para hardware integrado. Dos direcciones MAC casi idénticas tienen más probabilidades de ser la misma placa base. Esto no se aplica a las tarjetas del mercado de accesorios, por supuesto.

  3. Saludos. Telnet, ftp, smtp y similares ofrecen información de identificación. Vea si estos servicios se están ejecutando, ofrezca suficiente información distinta. Es probable que las pancartas sean raras hoy, pero aún así vale la pena intentarlo.

  4. Prueba de comportamiento independiente de NIC. Por ejemplo, intente disparar a los hosts denegados proporcionando autenticación falsa a ssh una docena de veces. Si se rechaza negar hosts, debería encontrar que el socket se cierra inmediatamente en el próximo intento. Vea si esto también está sucediendo para la otra IP.

A / 27 net es ... ¿qué, 29 hosts? Yo diría que las posibilidades de identificar una máquina de doble hogar con alta confianza son muy escasas, quizás un 5%. Pero dado tan pocos hosts, es posible que pueda hacer una suposición educada.

Pregunta divertida para una entrevista. Puedo robarlo en realidad.

Brian
fuente
44
En cuanto al n. ° 4, si ambas direcciones ejecutan ssh y puede conectarse a él, puede comparar las claves del host. En principio, dos servidores diferentes podrían recibir la misma clave de host, pero sería una configuración muy extraña. Entonces, si obtiene la misma clave de host de ambas direcciones, es muy probable que sean el mismo servidor.
Nate Eldredge
Dos clones con la misma clave de host pueden resultar de la clonación de la máquina.
Peter Green
7

Teóricamente, puede dar un nivel de confianza significativo en la mayoría de los casos. Sin embargo, hay un par de advertencias que hacen que sea mucho más difícil en la práctica.

Voy a superponer otras respuestas, y probablemente me haya perdido algunas cosas, pero este es al menos un razonamiento detallado de por qué estos bits en particular importan o no.

En primer lugar, olvídate de las direcciones MAC. A menos que tenga acceso directo al segmento de red, no podrá verlos.

Tampoco confíes en los escaneos de puertos. Es trivial para los puertos de firewall solo para ciertas IP, hacer que el software escuche solo en ciertas IP o tenga un sistema IDS / IPS que aplique el filtrado cuando se detecte un escaneo. Todo esto arruinará tus pruebas.

Ok, entonces la forma en que se puede decir es simple: la probabilidad de que dos cajas sean exactamente idénticas es baja a menos que estén relacionadas de otra manera. Entonces, lo que realmente estás haciendo es tratar de demostrar que son cajas diferentes, no tratar de demostrar que son lo mismo.

  1. Silbido. Debe probar ambos al mismo tiempo y hacer muchas pruebas. Resulta que si bien hay fluctuaciones en los tiempos de la red, es un ruido pseudoaleatorio de bastante alta calidad, si tiene suficientes muestras en un marco de tiempo pequeño, el ruido promedia lo suficiente como para brindarle una comparación precisa.

    Cada salto de capa 2 en una red agrega una pequeña cantidad de latencia, diferentes niveles de congestión darán diferentes valores de latencia. Si las dos IP muestran una latencia concurrente significativamente diferente, entonces puede suponer que probablemente no sean la misma casilla.

    Advertencia 1: un solo servidor con dos enlaces ascendentes (no enlazados) y configurado con una IP diferente en cada enlace ascendente podría tener un desequilibrio de enlace ascendente suficiente para deshacerse de esto.

  2. Escaneo de puertos. Los puertos de destino pueden estar en uno de tres estados: escucha, cerrado, filtrado. En lo que se encuentran no es realmente muy útil como se señaló anteriormente, pero todavía hay información útil.

    1. Las cajas con puertos abiertos en múltiples IP probablemente ejecuten el mismo software en todas las IP. Es posible ejecutar, digamos, nginx en una IP y apache en otra, pero la mayoría de las personas no se molestan. Huella digital de los servicios que se ejecutan para buscar similitudes. Busque qué software y versión se anuncia, qué opciones admite, qué nombre de host (si corresponde) se anuncia, si hay alguna peculiaridad en el comportamiento del software, cosas así.

      Los servicios web son los menos útiles para esto, mucho más útiles son cosas como SMTP (difícil de mezclar y combinar debido al soporte de sendmail, filtra mucha información), SNMP (una mina de oro de información), SSH (¿quién ejecuta múltiples demonios SSH? ) y HTTPS (si tiene suerte y están ejecutando el mismo software, puede verificar las diferencias en la configuración SSL, una configuración idéntica pero inusual es un buen indicador). NTP solía ser una buena prueba, pero ahora se está bloqueando debido a su uso intensivo como amplificador DoS, SNTP no es lo suficientemente preciso para una pistola humeante de la misma manera.

    2. Huella digital de capa 3. La principal forma de tomar huellas digitales de un sistema operativo de forma remota es por las peculiaridades de su implementación TCP / IP. Los detalles exactos son demasiado largos para entrar aquí, pero esencialmente los metadatos del paquete pierden mucha información, al igual que la forma en que un puerto cerrado o filtrado responde a una conexión y cómo se comporta un host cuando recibe paquetes mal formados. Si bien estas características no son ciertas para decir lo que se está ejecutando, se garantiza razonablemente que serán similares para cada IP vinculada a una pila TCP / IP en particular. Los sistemas significativamente diferentes deberían tener características significativamente diferentes.

    Advertencia 2: es probable que dos cuadros que ejecutan exactamente el mismo sistema operativo y parches de proveedores tengan el mismo aspecto. En Windows, dos copias de la misma versión de Windows que ejecutan actualizaciones automáticas serán bastante indistinguibles a menos que tengan diferentes firewalls en ejecución. En Linux, es probable que las diferencias se relacionen principalmente con exactamente qué versión y opciones de kernel se envían. Esta prueba solo puede dar una alta probabilidad de que dos IP no estén en el mismo sistema operativo.

  3. Repetir ataques. Con la lista de puertos abiertos en ambas IP, realice acciones idénticas en cada IP y busque discrepancias en el comportamiento. Cosas como tiempos de espera, mensajes de error, límites de reintento, etc. Algunos programas son más difíciles o están configurados con menos frecuencia para ser diferentes según la IP. Si sabe que una IP acepta correo para un dominio en particular, vea si la otra IP también acepta correo para ese dominio.

    Advertencia 3: estos son datos de menor calidad que la parte de la huella digital del servicio de la prueba 2 porque este material es más fácil de configurar de manera diferente en diferentes IP y hay todo tipo de interacción detrás de escena posible. La alta probabilidad de resultados falsos genera poca confianza en esos resultados.

Entonces, como dije, la teoría subyacente es que los diferentes hosts probablemente serán configuraciones diferentes y eso filtra información.

Lo que esto no tiene en cuenta es que es mucho más difícil saber si el mismo sitio que se ejecuta en dos IP es el mismo servidor o dos servidores configurados para la redundancia. Tampoco tiene en cuenta los administradores del sistema que ejecutan la gestión de configuración para mantener sus sistemas muy similares. Tampoco tiene en cuenta los hosts que están DNATing múltiples servicios que se ejecutan en diferentes hosts a una sola dirección IP.

La tecnología de virtualización arroja algunas llaves extrañas en las obras. Los sistemas en contenedores como Docker comparten suficiente pila para hacer que los contenedores separados se vean más similares de lo que realmente podrían ser. Las redes virtuales conectadas a un nicho físico deberían ser imposibles de distinguir del hardware físicamente separado, pero no lo son, debido principalmente al hecho de que el puente es software y, por lo tanto, los paquetes deben pasar a través de la pila IP del host.

Hay muchas maneras de confundir a las personas que intentan probar la repetibilidad. Lo mejor que puede esperar es un patrón que tenga un bajo margen de duda.

La moraleja de esto, para las personas que ejecutan servidores, es que debe configurar sus servidores para que filtren la menor información posible:

  1. Rechace la información del banner tanto como sea posible. Cuanto menos sepa un ataque sobre su configuración, mejor será para usted.

  2. Haga que el software solo acepte conexiones en la IP en la que se supone que sirve y solo cuando sea necesario. Si no necesita ser accesible externamente, haga que se vincule solo a localhost. Reducir la superficie de ataque siempre es bueno.

  3. Si absolutamente debe tener algo escuchando y desea evitar la correlación entre dos IP, intente mantener las opciones inusuales al mínimo. Quieres que se mezcle.

  4. Tener un firewall funcionando con una política de caída predeterminada. Creo que puede haber valor en una configuración IDS que responda a los atacantes con respuestas aleatorias, el ruido dificultaría que un atacante confíe en sus resultados, pero sí hace que te destaques.

  5. Los módulos de retardo aleatorio no tienen valor para prevenir ataques de tiempo. No realmente. Elija un número aleatorio y luego tire un dado varias veces, anotando el resultado más el número que eligió al principio. Lo que termina es un rango con un desplazamiento fijo. Si se sustituye el número aleatorio, el rango se mueve. Si se cambia el rango, el desplazamiento sigue siendo el mismo y solo es cuestión de repetir el proceso de muestreo para obtener una nueva línea de base.

  6. Los normalizadores de la pila de IP existen pero fueron una parte descuidada de la investigación de seguridad la última vez que miré. Probablemente sería un buen mercado para invertir para un proveedor de seguridad.

Kaithar
fuente