Frage Kann ich feststellen, ob zwei IP-Adressen zum selben Server gehören?


Bei zwei öffentlichen IP-Adressen und dem Wissen, die sich beide im selben Netzwerk befinden, wäre es möglich, von einem entfernten Standort (d. H. Einem anderen Land) aus zu bestimmen, ob sie zu einem oder zwei Servern gehören?


20
2018-04-29 14:14


Ursprung


Können Sie näher erläutern, was Sie erreichen möchten und welche Art von Servern Sie identifizieren möchten? - bobstro
Ping-Timings können einen Hinweis liefern - zum Beispiel, wenn alle IPs in einer zufälligen Zeitperiode antworten, aber zwei von ihnen antworten mit fast der gleichen Verzögerung.
Kannst du eins tun und sehen, ob das andere auch nicht reagiert? - Ben Voigt
@ AndréDaniel Ping Timings werden vollständig fehlschlagen, wenn die Server zusammen sind. Das gleiche Rack ist nicht der gleiche Server. - TomTom


Antworten:


Nein, im allgemeinen Fall nicht.


Einige Ergänzungen, um unsere Gäste von SO glücklich zu machen:

  • Es gibt nichts in den TCP / IP-Basisprotokollen (z. B. IP / TCP / UDP, ICMP), das speziell dazu gedacht ist, die in der Frage geforderte Unterscheidung zu treffen.
  • Das gleiche gilt für viele Protokolle höherer Ebene, z. HTTP.
  • Es ist tatsächlich möglich, mehr oder weniger feine Unterschiede in den Antwortmustern zu verwenden, um a vermuten über das System. Wenn Sie zwei sehr unterschiedliche Systeme haben, z.B. ein Linux- und ein Windows-Server, könnte dies ausreichen, um sicher zu sein, zwei Hosts zu haben.
  • Dies wird umso schwieriger, je ähnlicher die Systeme sind. Zwei Knoten in einem HA-Webcluster mit identischer Hardware und identischem Betriebssystem sind wahrscheinlich auf diese Weise nicht voneinander zu trennen. Ich betrachte dies heute als den allgemeinen Fall in den meisten Szenarien.
  • Zu guter Letzt: Sind zwei virtuelle Maschinen auf der gleichen physischen Box ein oder zwei Server? Je nachdem, warum Sie versuchen, in erster Linie zu unterscheiden, kann dies wichtig sein und es ist völlig unmöglich, auf der Netzwerkebene zu sagen.

29
2018-04-29 14:16



Sven's Antwort ist zu 100% korrekt, aber es könnte möglich sein, zu erraten, ob sie verschiedene Betriebssysteme ausführen (über nmap oder den hier beschriebenen Ping-Test) kellyodonnell.com/content/determining-os-type-ping). Sie könnten jedoch immer noch beide VMs sein, die von dem einen Host ablaufen. - Andy
@Andy: Deshalb habe ich gesagt "im allgemeinen Fall". In einigen Fällen können Sie das herausfinden, auf der anderen Seite bemerken Sie manchmal nicht einmal, dass nicht ein Computer hinter einer IP-Adresse steckt, sondern einhundert ... - Sven♦
@Sven: Die Frage ist, ob zwei IPs mit einem einzelnen Computer korrelieren und nicht, ob Dienste auf einer gemeinsamen IP mit mehreren Maschinen korrelieren. Ich stimme zu, dass es keine universelle Methode gibt, die garantiert jedes Mal funktioniert, aber wenn man genug Gemeinsamkeiten zwischen den erhaltenen Antworten findet, könnte es möglich sein, eine vernünftige Schätzung zu machen. Michelle muss genau darlegen, was zu tun ist, um festzustellen, ob eine nützliche Lösung existiert. Spielt es eine Rolle, ob es sich um eine Konfiguration mit Lastausgleich oder um eine virtuelle Konfiguration handelt? - bobstro
Mehrdeutig, wenn Sie Virtualisierung einwerfen. Angenommen, Sie haben zwei VMs, Guest A und Guest B, jeweils mit unterschiedlicher IP, aber mit demselben / 27-Net. Nehmen wir weiter an, dass diese beiden Gäste von Host C gehostet werden. In einer Hinsicht gehören die zwei / 27 Adressen zu verschiedenen "Servern", aber in einem anderen Sinne könnten sie die gleiche NIC und denselben Host passieren, also kann man argumentieren, dass die IPs gehören zum selben "Server". Wenn Guest A seinerseits zwei weitere VMs beherbergt, Guest X & Guest Y, ebenfalls mit eigenen / 27 Adressen, welche dieser IPs gehören demselben Computer an? Was ist, wenn Sie "VMotion" eine dieser VMs? Ich habe keine gute Antwort. - Joshua Huber


Neugierig auf "warum". Bedenken über Dual-Homed-Maschinen sind in der Regel als Kopfschmerzen einiger unbenannter Systemadministratoren lokalisiert. Details sollen vom OSI-Modell verborgen werden.

Linux-zentrierte Antwort voraus.

Es gibt einige Möglichkeiten, Fingerabdrücke zu erstellen und eine pädagogische Vermutung zu machen.

  1. nmap -o und nmap mit einem anständigen Port-Scan. Server binden nicht immer an beide Netzwerkkarten. Aber oft tun sie es.

  2. MAC-Adressen. Wenn Sie irgendwelche Mittel haben, um die MAC-Adressen zu erhalten, verwenden Hersteller gerne aufeinanderfolgende Adressen für integrierte Hardware. Zwei fast identische MAC-Adressen sind wahrscheinlich das gleiche Motherboard. Dies gilt natürlich nicht für Aftermarket-Karten.

  3. Schöne Grüße. Telnet, ftp, smtp und dergleichen bieten alle identifizierende Informationen. Prüfen Sie, ob diese Dienste ausgeführt werden, und bieten Sie ausreichend eindeutige Informationen an. Banner sind heute wahrscheinlich selten, aber immer noch einen Versuch wert.

  4. Testen Sie NIC-unabhängiges Verhalten. Versuchen Sie beispielsweise, Hosts zu verweigern, indem Sie ssh ein Dutzend Mal eine falsche Authentifizierung zuweisen. Wenn das Ablehnen von Hosts ausgelöst wird, sollten Sie feststellen, dass der Socket beim nächsten Versuch sofort geschlossen wird. Sehen Sie, ob dies auch für die andere IP passiert.

A / 27 net ist ... was, 29 Hosts? Ich würde sagen, die Chancen, eine Dual-Home-Maschine mit hohem Vertrauen zu identifizieren, ist super dünn, vielleicht 5%. Aber angesichts so wenig Hosts können Sie vielleicht eine fundierte Vermutung abgeben.

Spaßfrage für ein Interview. Ich kann es tatsächlich stehlen.


13
2018-04-29 15:24



Zu # 4, wenn beide Adressen ssh laufen und Sie sich damit verbinden können, können Sie die Host-Schlüssel vergleichen. Im Prinzip könnten zwei verschiedene Server denselben Host-Schlüssel erhalten, aber es wäre ein sehr seltsames Setup. Wenn Sie also denselben Host-Schlüssel von beiden Adressen erhalten, handelt es sich höchstwahrscheinlich um denselben Server. - Nate Eldredge
Zwei Boxen mit demselben Hostschlüssel können aus dem Klonen von Maschinen resultieren. - Peter Green


Theoretisch können Sie in den meisten Fällen ein sinnvolles Konfidenzniveau angeben. Es gibt jedoch ein paar Vorbehalte, die es in der Praxis viel schwieriger machen.

Ich werde andere Antworten überlappen, und ich habe wahrscheinlich Sachen verpasst, aber das ist zumindest eine detaillierte Überlegung, warum diese besonderen Dinge wichtig sind oder nicht.

Aber vergessen Sie zunächst einmal die MAC-Adressen. Wenn Sie keinen direkten Zugriff auf das Netzwerksegment haben, können Sie sie nicht sehen.

Vertrauen Sie Port-Scans auch nicht. Firewall-Ports sind für nur bestimmte IP-Adressen trivial, Software hört nur auf bestimmten IP-Adressen zu oder hat ein IDS / IPS-System, das Filterung anwendet, wenn ein Scan erkannt wird. All dies wird Ihre Tests vermasseln.

Ok, so wie du es erzählen kannst, ist einfach: Die Wahrscheinlichkeit, dass zwei Boxen genau identisch sind, ist gering, es sei denn, sie sind auf andere Weise miteinander verbunden. Was Sie also tatsächlich tun, ist zu beweisen, dass es sich um verschiedene Boxen handelt, die nicht versuchen, zu beweisen, dass sie gleich sind.

  1. Klingeln. Sie müssen beide gleichzeitig testen und viele Tests durchführen. Es stellt sich heraus, dass es zwar in Netzwerkzeiten zu Jitter kommt, es sich jedoch um Pseudozufallsrauschen mit ziemlich hoher Qualität handelt. Wenn Sie genügend Samples in einem kleinen Zeitrahmen haben, reicht das Rauschen aus, um Ihnen einen genauen Vergleich zu ermöglichen.

    Jeder Layer 2 Hop in einem Netzwerk fügt eine geringe Latenzzeit hinzu, unterschiedliche Staupegeln ergeben unterschiedliche Latenzwerte. Wenn die zwei IPs signifikant unterschiedliche gleichzeitige Latenz zeigen, dann können Sie annehmen, dass sie wahrscheinlich nicht die gleiche Box sind.

    Vorbehalt 1: Ein einzelner Server mit zwei Uplinks (nicht verbunden) und konfiguriert mit einer anderen IP auf jedem Uplink könnte genug Uplink-Ungleichgewicht haben, um dies auszuschalten.

  2. Portscan Zielports können in einem von drei Zuständen sein: Zuhören, geschlossen, gefiltert. Sie sind nicht wirklich nützlich, wie oben erwähnt, aber es gibt immer noch nützliche Informationen.

    1. Boxen mit Ports, die auf mehreren IPs geöffnet sind, werden wahrscheinlich die gleiche Software auf allen IPs ausführen. Es ist möglich, sagen wir, nginx auf einer IP und Apache auf einer anderen, aber die meisten Leute nicht stören. Fingerabdruck die Dienste laufen, um nach Ähnlichkeiten zu suchen. Suchen Sie nach der Software und der Version, für die sie Werbung macht, nach den unterstützten Optionen, nach dem Hostnamen (falls vorhanden), nach Macken im Verhalten der Software, nach solchen Dingen.

      Web-Dienste sind die am wenigsten nützlichen dafür, viel nützlicher sind Dinge wie SMTP (schwer zu mischen und anzupassen aufgrund der sendmail-Unterstützung, leckt viele Informationen), SNMP (eine Informations-Goldmine), SSH (wer betreibt mehrere SSH-Daemons? ) und HTTPS (wenn Sie Glück haben und die gleiche Software verwenden, können Sie nach Unterschieden in der SSL-Konfiguration suchen, eine identische aber ungewöhnliche Konfiguration ist ein guter Indikator). NTP war früher ein guter Test, aber es wird wegen der starken Verwendung als DoS-Verstärker hart gesperrt, SNTP ist nicht wirklich genau genug für eine rauchende Waffe auf die gleiche Weise.

    2. Layer 3 Fingerprinting. Die Hauptmethode für die Fernabfrage eines Betriebssystems ist die Verwendung von Macken in der TCP / IP-Implementierung. Die genauen Details sind viel zu lang, aber im Wesentlichen verlieren die Paketmetadaten eine Menge Informationen, ebenso wie ein geschlossener oder gefilterter Port auf eine Verbindung reagiert und wie sich ein Host verhält, wenn er fehlerhafte Pakete empfängt. Während diese Eigenschaften keine bestimmten Informationen darüber liefern, was läuft, sind sie für jede IP, die an einen bestimmten TCP / IP-Stack gebunden ist, einigermaßen garantiert gleich. Signifikant unterschiedliche Systeme sollten signifikant unterschiedliche Eigenschaften aufweisen.

    Vorbehalt 2: Zwei Kästchen, die genau die gleichen Betriebssystem- und Hersteller-Patches ausführen, werden wahrscheinlich gleich aussehen. Unter Windows sind zwei Kopien derselben Windows-Version, auf denen automatische Updates ausgeführt werden, kaum zu unterscheiden, sofern nicht unterschiedliche Firewalls ausgeführt werden. Unter Linux beziehen sich die Unterschiede wahrscheinlich hauptsächlich darauf, welche Kernel-Version und welche Optionen ausgeliefert werden. Dieser Test kann nur mit hoher Wahrscheinlichkeit ergeben, dass sich zwei IPs nicht auf demselben Betriebssystem befinden.

  3. Replay-Angriffe. Mit der Liste der Ports, die auf beiden IPs geöffnet sind, führen Sie identische Aktionen für jede IP aus und suchen nach Diskrepanzen im Verhalten. Dinge wie Time-outs, Fehlermeldungen, Wiederholungslimits, etc. Einige Software ist härter oder weniger oft konfiguriert, um basierend auf IP unterschiedlich zu sein. Wenn Sie wissen, dass eine IP-Adresse Nachrichten für eine bestimmte Domäne akzeptiert, überprüfen Sie, ob die andere IP-Adresse auch Mail für diese Domäne akzeptiert.

    Vorbehalt 3: Dies sind Daten von geringerer Qualität als der Service-Fingerprint-Teil von Test 2, da dieses Zeug auf verschiedenen IPs einfacher zu konfigurieren ist und alle Arten von Interaktion hinter den Kulissen möglich sind. Hohe Wahrscheinlichkeit falscher Ergebnisse führt zu wenig Vertrauen in diese Ergebnisse.

Wie ich bereits sagte, ist die zugrunde liegende Theorie, dass verschiedene Hosts wahrscheinlich unterschiedliche Konfigurationen haben werden und dass Informationen leckt.

Was dies nicht berücksichtigt, ist, dass es viel schwieriger zu sagen ist, ob dieselbe Site, die auf zwei IPs ausgeführt wird, derselbe Server oder zwei Server ist, die für Redundanz konfiguriert sind. Systemadministratoren, die das Konfigurationsmanagement ausführen, werden ebenfalls nicht berücksichtigt, um ihre Systeme sehr ähnlich zu halten. Es berücksichtigt auch keine Hosts, die mehrere Dienste auf verschiedenen Hosts mit einer einzigen IP-Adresse vernetzen.

Virtualisierungstechnologie wirft einige merkwürdige Schlüssel in den Arbeiten auf. Container-Systeme wie Docker teilen sich genug vom Stack, damit die einzelnen Container ähnlicher aussehen als sie tatsächlich sind. Virtuelle Nics, die mit einer physischen NIC verbunden sind, sollten nicht von physikalisch separater Hardware unterschieden werden können, sind aber nicht davon abhängig, hauptsächlich weil die Bridge Software ist und die Pakete den Host-IP-Stack durchlaufen müssen.

Es gibt viele Möglichkeiten, Menschen zu verwirren, die versuchen, auf Wiederholbarkeit zu prüfen. Das Beste, auf das Sie hoffen können, ist ein Muster, das einen geringen Zweifel hat.

Die Moral davon, für Leute, die Server betreiben, ist, dass Sie Ihre Server so konfigurieren sollten, dass sie so wenig Informationen wie möglich verlieren:

  1. Reduzieren Sie die Bannerinformationen so weit wie möglich. Je weniger ein Angriff über deine Konfiguration weiß, desto besser für dich.

  2. Lassen Sie Software nur Verbindungen auf der IP akzeptieren, auf der sie ausgeführt werden soll, und nur bei Bedarf. Wenn es nicht extern zugänglich sein muss, binden Sie es nur an localhost. Reduzierende Angriffsfläche ist immer gut.

  3. Wenn Sie unbedingt etwas hören müssen und Sie die Korrelation zwischen zwei IPs vermeiden möchten, versuchen Sie, ungewöhnliche Optionen auf ein Minimum zu beschränken. Sie möchten, dass es sich einfügt.

  4. Lassen Sie eine Firewall mit einer Standard-Drop-Richtlinie laufen. Ich denke, dass ein IDS-Setup einen Wert haben kann, der Angreifern mit zufälligen Antworten antwortet. Ein Rauschen würde es einem Angreifer schwerer machen, seinen Ergebnissen zu vertrauen, führt aber dazu, dass Sie sich von anderen abheben.

  5. Zufällige Verzögerungsmodule sind wertlos, um Timing-Angriffe zu verhindern. Nicht wirklich. Wählen Sie eine zufällige Zahl und würfeln Sie mehrmals, indem Sie das Ergebnis und die Zahl, die Sie am Anfang gewählt haben, aufschreiben. Am Ende steht ein Bereich mit festem Offset. Wenn die Zufallszahl ersetzt wird, bewegt sich der Bereich. Wenn der Bereich geändert wird, bleibt der Versatz derselbe und es ist nur eine Frage der Wiederholung des Abtastprozesses, um eine neue Grundlinie zu erhalten.

  6. IP-Stack-Normalisierer existieren, waren aber ein vernachlässigter Teil der Sicherheitsforschung, als ich das letzte Mal nachgesehen habe. Es wäre wahrscheinlich ein guter Markt, in einen Sicherheitsanbieter zu investieren.


7
2018-04-30 04:53