Ich verbiete versehentlich die SSH-Verbindung zu einem Remote-Server ... Wie geht es weiter?

61

Sagen wir es noch einmal, wir machen alle Fehler , und ich habe gerade einen gemacht.

Eine kurze Geschichte: Ich habe ein paar Sachen mit einem VPS (Debian) gemacht, den ich gemietet habe, als ich ein merkwürdiges Verhalten bemerkte. Mit dem netstatBefehl sah ich eine nicht autorisierte Verbindung über SSH. Ich wusste nicht, was ich tun sollte, also beschloss ich, seine Verbindung zu schließen mit iptables:

iptables -A INPUT -p tcp --dport ssh -s IP -j DROP

Aber ich bin müde und schrieb

iptables -A INPUT -p tcp --dport ssh -j DROP

und ich habe mich (und alle anderen) rausgeschmissen ...

Wie behebe ich das?

tomatoGuy
quelle
1
nein, weil er alle ssh-pakete auf der maschine blockiert. In einem falsch konfigurierten Subnetz müssen Sie nur für diese Mac-Adresse einen TCP-Speicherauszug erstellen, das Subnetz abrufen, in dem die Arp-Funktion ausgeführt wird, und eine virtuelle Netzwerkkarte im selben Subnetz konfigurieren und mit dieser kommunizieren.
jfalcon aka Don Fanning
50
Nun, Sie haben auf jeden Fall den Zugriff für die nicht autorisierte Person entfernt.
ein CVn
2
Für das nächste Mal wäre vielleicht der Schalter eines Toten praktisch.
Wayne Conrad
2
Wer ist dein Gastgeber? Viele VM-Hosts bieten eine serielle Konsole, mit der Sie SSH in Fällen ausführen können, in denen Sie von einem Remotestandort aus nicht in der Lage sind.
Jon

Antworten:

60

Es gibt verschiedene Alternativen:

  • Überprüfen Sie, ob sie über IPMI- / KVM- / Konsolenzugriff auf den Server verfügen, sodass Sie ihn so steuern können, als ob eine physische Tastatur angeschlossen wäre.
  • Wenn dies nicht angeboten wird, prüfen Sie, ob Sie die VM von einer Wiederherstellungs-Linux-CD booten können (einige Anbieter bieten dies an). Korrigieren Sie dann die Firewall-Regeln auf diese Weise und booten Sie sie wie gewohnt.
  • Wenn Sie keinen Konsolenzugriff haben, bevor Sie zum Wiederherstellen booten oder das Volume an eine andere VM anhängen (wie im Fall von Amazon, der Antwort des kreditgebenden Benutzers 3550767), können Sie Ankh2054s Antwort des Neustarts zuerst versuchen, wenn Sie die Regeln nicht gespeichert haben ( wahrscheinlich der Fall, seit Sie sich rausgeschmissen haben, bevor Sie die Chance hatten zu retten). Verwenden Sie das Bedienfeld oder bitten Sie jemanden, es mit einem nicht ordnungsgemäßen Zurücksetzen / Ausschalten (auch bekannt als Hard-Reboot oder Hard-Shutdown) aus- und wieder einzuschalten, falls das Init-Skript die Regeln beim ordnungsgemäßen Neustart automatisch speichert (credit @jfalcon, @joshudson).

    Wägen Sie die Nachteile ab (Daten, die während des Neustarts geschrieben wurden, können verloren gehen, und die Überprüfung des Dateisystems kann beim Start erforderlich sein, sodass die Startzeit länger ist, obwohl diese Verzögerung möglicherweise geringer ist als der Start zur Wiederherstellung).

g491
quelle
1
Abhängig vom VPS-Server ist möglicherweise kein Remotezugriff verfügbar. systeme wie vmware, kvm, xen, etc .. haben konsolen, sind aber nicht für den öffentlichen verbrauch eingerichtet. Closes, die diese Form der öffentlichen Kontrolle ermöglichen, ist Openstack.
jfalcon aka Don Fanning
4
das heißt, wenn es in Amazon / Google Space ist, könnte er das Laufwerk Snapshot und mounten von einer anderen virtuellen Maschine, um die Korrektur zu tun.
jfalcon aka Don Fanning
47

Wenn Sie die IPtables-Regel noch nicht gespeichert haben, können Sie den Server auf VPS neu starten (sofern verfügbar), und die Regel sollte verschwinden.

Ankh2054
quelle
es sei denn, das Init-Skript speichert die Iptables beim Herunterfahren.
jfalcon aka Don Fanning
3
@jfalcon: Deshalb kannst du sie bitten, den virtuellen Stecker zu ziehen.
Joshudson
22
@jfalcon Das ist auch der Grund, warum es eine schlechte Idee ist, beim Herunterfahren automatisch zu speichern ... Treffen Sie beim Speichern eine bewusste Entscheidung des Systemadministrators, nicht etwas, das vom System blind ausgeführt wird.
ein CVn
@joshudson: Sie müssen dem Neustart-Affen genau mitteilen, was er tun soll, und das Ausschalten erzwingen. Nicht nur ein Herunterfahren einleiten.
jfalcon aka Don Fanning
@ MichaelKjörling: Diese Philosophie ist auch falsch. Dies ist ein VPS, so dass er wahrscheinlich seine Anwendungen in einer Sandbox ablegt und keine Kontrolle darüber hat, wer den Netzschalter betätigt. Und Sie haben keine Ahnung, wie das VPS-Hosting die Builds konfiguriert hat. Es ist nichts falsch daran, beim Herunterfahren zu sparen. Sein Fehler war sein Fehler. Der kluge Schachzug wäre gewesen, SSH auf einen nicht standardmäßigen Port zu stellen oder fail2ban zu verwenden, anstatt mit einer panischen Reaktion zu reagieren.
jfalcon aka Don Fanning
30

Dafür gibt es von Menschen besetzte Hotlines. Rufen Sie den Diensteanbieter an, und lassen Sie einen seiner Betreiber die Regel für Sie entfernen.

RobertG
quelle
3

Eine allgemeine Möglichkeit, eine fehlerhafte Instanz zu reparieren, besteht darin, sie herunterzufahren und das Root-Volume an eine Arbeitsinstanz anzuhängen. Dort können Sie dann das Volume bereitstellen und Protokolle anzeigen oder Konfigurationsdateien bearbeiten. Sie können das Volume dann trennen und in einer eigenen Instanz starten.

user3550767
quelle
2
Wahr für AWS VPSes; nicht allgemein wahr.
MadHatter
@MadHatter Die genauen Details können variieren, aber wenn ein VPS-Anbieter keine Methode anbietet, um mit einem bekannten funktionierenden Image zu booten, von dem aus Sie Ihr Root-Dateisystem bereitstellen und reparieren können, würde ich davon ausgehen, dass sie aus dem Geschäft ausscheiden, sobald Kunden dies tun über diese Einschränkung gelernt.
Kasperd
In der Regel bieten sie einen Konsolenzugriff an, sodass Sie im Einzelbenutzermodus oder von einem Rettungsmedium (in der Regel als ISO abstrahiert) booten können. Ich gehe davon aus, dass dies in der Tat weitaus normaler ist als die ungewöhnliche Vorgehensweise von AWS, bei der ein zweiter VPS (vorübergehend) erforderlich ist.
MadHatter
@MadHatter Welcher der beiden Ansätze seltsam erscheint, hängt sehr wohl davon ab, was Sie am besten kennen. Und jeder Ansatz erledigt die Arbeit. Was am häufigsten vorkommt, kann ich nicht wirklich kommentieren, da ich bisher nur einen einzigen VPS-Anbieter für einen solchen Zugang benötigt habe.
Kasperd
@kasperd: Nein, was Sie verwenden, hängt davon ab, welchen VPS-Anbieter der jeweilige Anbieter unterstützt. Es ist keine Frage der Wahl. Wenn Sie AWS verwenden, stellen Sie das Volume auf einem anderen VPS bereit. Wenn Sie einen normaleren VPS-Anbieter verwenden, starten Sie den Computer als Einzelbenutzer oder von einem Notfallmedium. Ich möchte nicht sagen, dass dies ein Schwanz ist (na ja, nicht ganz), aber weil es wichtig ist, zu verstehen, dass man herausfinden muss, welche Methode (n) der Anbieter unterstützt, und sie dann anwenden muss. Der Versuch, die AWS-Methode beispielsweise mit Hetzner zu verwenden, funktioniert einfach nicht , da ein Hetzner-vserver den FS eines anderen nicht sehen kann (afaik).
MadHatter
3

Formelle Antwort: Rufen Sie das VPS-Verwaltungsfenster auf, rufen Sie den lokalen Zugriff (virtuelles KVM) auf oder rufen Sie sie an.

Erklärung der Schritte / Regeln, um zu verhindern, dass Sie erneut darauf hereinfallen:

  1. Es gibt Änderungen an IP-, Routing- und Firewall-Regeln, die möglicherweise fehlerhaft werden und Ihren Zugriff blockieren.
  2. Dies gilt auch für die Konfiguration dedizierter Netzwerkgeräte und nicht nur für VPS

Also , wenn Sie 100% sicher sind , dass Sie sich erholen können .. Ich empfehle immer einen Weg zu machen , um Netzwerk - Konfiguration in den vorherigen Zustand zurückgesetzt .. wie, offene Hintergrund Sitzung mit entweder screen, nohupoder tmux, auch cronkann für diese Arbeit, und fügen Sie iptables -Foder Ein anderes gewünschtes Mittel, um irgendetwas auf den vorherigen Zustand zurückzusetzen.

kagali-san
quelle