Ist es möglich, über SSH auf einen Server mit einem falsch konfigurierten Subnetz zuzugreifen?

18

Wir haben einen Server, auf dem einer unserer Techniker das Subnetz falsch konfiguriert hat, und jetzt sind wir von diesem Server ausgeschlossen. Der einzige mir bekannte Zugriff ist eine serielle Konsole von IDC (dies bedeutet, dass ein IDC-Techniker gebeten wird, uns dabei zu helfen). .

Was wurde falsch konfiguriert:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

Aus Neugier - gibt es eine Möglichkeit, IDC nicht anzurufen und sich irgendwie über SSH mit diesem Host zu verbinden (dann können wir die Konfiguration reparieren)?

Alexey Kamenskiy
quelle

Antworten:

25

Sie müssen sich auf einem anderen Host im selben Netzwerksegment anmelden können. Einige der Möglichkeiten, auf den falsch konfigurierten Host zuzugreifen, erfordern root auf dem Zwischenhost. Es gibt jedoch auch eine einfache Möglichkeit, auf den Host zuzugreifen, ohne root auf dem Zwischenhost zu benötigen.

Die einfache Möglichkeit, über IPv6 auf den Host zuzugreifen

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

Die folgenden Beispielwerte in obigen Befehl müssen mit der richtigen Werte für Ihren Anwendungsfall ersetzt werden: fe80::42:ff:fe:42, eth0, user, intermediate-host, und target-server.

Detaillierte Erklärung, wie es funktioniert

ProxyCommandist eine SSH-Funktion, die verwendet werden kann, wenn Sie keine direkte TCP-Verbindung zum Zielhost herstellen können. Das Argument für ProxyCommandist ein Befehl, dessen stdin / stdout anstelle einer TCP-Verbindung verwendet werden soll.

-Wwird verwendet, um eine einzelne Portweiterleitung zu öffnen und sie mit stdin / stdout zu verbinden. Das passt gut zusammen mit ProxyCommand.

fe80::42:ff:fe:42%%eth0ist die verbindungslokale Adresse des Zielhosts. Beachten Sie, dass aufgrund der ProxyCommandVerwendung %als Escape-Zeichen der eingegebene Befehl ssh %%an dieser Stelle verwendet werden muss. Sie können alle verbindungslokalen Adressen im Segment finden, indem Sie ausführen ssh user@intermediate-host ping6 -nc2 ff02::1%eth0.

Die Verwendung von verbindungslokalen IPv6-Adressen für diesen Zweck ist normalerweise die einfachste Methode, da sie auf allen modernen Systemen standardmäßig aktiviert ist und verbindungslokale Adressen weiterhin funktionieren, auch wenn IPv4- und IPv6-Stapel stark falsch konfiguriert sind.

Zurückgreifen auf IPv4

Wenn IPv6 auf dem falsch konfigurierten Host vollständig deaktiviert ist (absolut nicht empfohlen), müssen Sie möglicherweise IPv4 verwenden. Da IPv4 keine verbindungslokalen Adressen hat, wird der Zugriff von IPv6 auf den falsch konfigurierten Host mithilfe von IPv4 komplizierter und erfordert Root-Zugriff auf dem Zwischenhost.

Wenn der falsch konfigurierte Host sein Standard-Gateway weiterhin verwenden kann, können Sie von außen darauf zugreifen. Möglicherweise hat die falsch konfigurierte Netzmaske auch das Standard-Gateway beschädigt, da der Stack die Verwendung eines Gateways außerhalb des von der Netzmaske abgedeckten Präfixes verweigert hat. In diesem Fall kann der falsch konfigurierte Host nur mit 192.168.1.8 kommunizieren, da dies die einzige andere IP-Adresse im Subnetz ist, auf die dieser falsch konfigurierte Host derzeit zugreifen kann.

Wenn Sie sich unter 192.168.1.8 angemeldet haben, können Sie möglicherweise einfach von dort zu 192.168.1.9 ssh. Wenn 192.168.1.8 derzeit nicht zugewiesen ist, können Sie es vorübergehend jedem Host in dem Segment zuweisen, auf dem Sie Root-Zugriff haben.

Kasperd
quelle
Und fe80::42:ff:fe:42ist die Adresse von ...? Ich vermute, mein Server ist falsch konfiguriert.
Alexey Kamenskiy
@AlexKey Ja, es muss durch die verbindungslokale IPv6-Adresse des falsch konfigurierten Servers ersetzt werden.
Kasperd
1
Gibt es ein Beispiel für den Zugriff über IPv4 (falls IPv6 deaktiviert ist)?
Alexey Kamenskiy
@AlexKey Falls IPv6 deaktiviert ist, müssen Sie nach meinem Dafürhalten 192.168.1.8 durchgehen, da dies die einzige andere IP-Adresse unter dem konfigurierten Präfix zu sein scheint.
Kasperd
1
@Lenniey anscheinend aus einem Grund wie dieser Frage (zumindest).
Alexey Kamenskiy
9

kasperdhabe eine großartige Antwort gepostet, die detailliert genug ist, um zu erfahren, wie ich mich von der Situation in der Frage erholen kann. Diese Antwort ist die genaue Schritt-für-Schritt-Anleitung.

  1. SSH zum Server im selben physischen Netzwerk
  2. Verwenden Sie arp -aoder ip neighbor listals, rootum die MAC-Adresse des falsch konfigurierten Servers zu ermitteln.
  3. Verwenden von MAC, um den lokalen Konverter zu verknüpfen. Finden Sie den lokalen Link für einen falsch konfigurierten Server
  4. Jetzt kann SSH als jeder Benutzer auf Server über ssh user@link-local%devwo:
    • user - Benutzername, für den wir SSH dürfen
    • link-local - selbst zugewiesene IPv6-Adresse, die in Schritt 3 wiederhergestellt wurde
    • dev ist die physikalische Schnittstelle, über die dieser Server erreichbar ist (zB eth0)
Alexey Kamenskiy
quelle
2

Sie müssen eine IP-Adresse innerhalb des konfigurierten Subnetzes Ihres Ziels laden , nicht nur innerhalb des tatsächlich gewünschten Bereichs.

Wenn Sie ein Paket mit dem Subnetz 255.255.255.248 von z. B. 10.0.0.220 an 10.0.0.2 senden, überprüft 10.0.0.2 die Subnetzmaske, um herauszufinden, wie zu antworten ist. Da .220 WAAY außerhalb des Subnetzes 255.255.255.248 ist, muss .2 die Antwort stattdessen an das Standard-Gateway senden.

Wenn Sie also eine IP-Adresse in dasselbe Subnetz wie .2 laden können, z. 10.0.0.3, dann wird es funktionieren.

In Ihrem speziellen Fall hat das Subnetz 255.255.255.254 für 10.0.0.9 nur 1 zusätzliche IP-Adresse , nämlich 10.0.0.8. Wenn Sie diese IP-Adresse laden können, sollten Sie in der Lage sein, SSH auszuführen.

daslogix
quelle