Garantieren des SSH-Zugriffs auf einem gestressten Server

11

Ich hatte vor einiger Zeit ein Problem mit einem Server, auf dem Apache und Snort 100% des Prozessors besetzten, sodass der sshd über den Remotezugriff nicht mehr reagierte. Ich musste physisch zum Server gehen, um mich bei einem lokalen TTY anzumelden und dann Apache / Snort zu stoppen.

Ich frage mich, ob es eine Möglichkeit gibt, die SSH-Konnektivität in einer Situation mit 100% geladener CPU / Speicher zu gewährleisten. Eine "nette" Priorität zu setzen wäre genug?

Vielen Dank!

Renato Todorov
quelle

Antworten:

10

Abgesehen von der Verwendung einer Out-of-Band-Methode kann nicht garantiert werden, dass SSH auf einem vollständig geladenen Server verfügbar ist. Wenn Ihr Dienst so ausgelastet ist, dass er Ihnen nicht einmal ein einfaches SSH-Terminal zur Verfügung stellen kann, haben Sie andere Probleme.

Ja, reniceund wenn Sie einen niedrigeren niceWert angeben, wird die Leistung bei hohen Lasten verbessert. Wenn Sie jedoch etwas wie pam_security verwenden (Beispiel hier ), wird verhindert, dass Apache / was auch immer zunächst nicht mehr verwaltet werden kann.

Nathan C.
quelle
Richtig. Er versucht, das Symptom zu behandeln, nicht das eigentliche Problem.
ewwhite
@ewwhite Genau. Und die Behandlung des Symptoms führt nur dazu, dass Sie Ihrem Schwanz nachjagen und herausfinden, warum andere Dinge dadurch brechen. :)
Nathan C
Ich suche nach einer Möglichkeit, das Feuer zu löschen, aber natürlich werde ich den anderen Dämonen Grenzen setzen. Dies ist für eine Notsituation, ich muss die Ruhe haben, um zu wissen, dass ich immer sshd für den Fernzugriff haben werde.
Renato Todorov
@ RenatoTodorov In diesem Fall können Sie das Symptom nicht behandeln. Wenn Ihr System über einen außer Kontrolle geratenen Prozess verfügt, der alle {CPU, RAM, Sockets, PIDs} verbraucht, können Sie nicht garantieren, dass selbst ein niceSchuldiger schnell genug von der CPU gebootet wird, um sicherzustellen, dass Sie über SSH-Zugriff verfügen (oder dies auch) Jeder Konsolenzugriff, den Sie haben, wäre verwendbar. Das zugrunde liegende Problem (Resource-Hog) muss angegangen werden. Brandbekämpfung ist ein schlechtes Systemmanagement.
voretaq7
1
Ihr habt mich überzeugt, ich werde iDRAC 7 Express verwenden, solange ich es bereits habe. Danke euch allen!
Renato Todorov
7

Ihre Allzwecklösung hierfür ist ein Out-of-Band-Verwaltungstool wie Dell iDRAC, IBM Remote Supervisor oder HP iLO. Es kann immer eine Konsole anzeigen (ob das Betriebssystem darauf reagieren kann oder nicht, hängt von Ihrer spezifischen Situation ab) und bei Bedarf die gewünschten Energiezustände anwenden.

mfinni
quelle
Ok, iDRAC ist eine gute Option, da ich Dell-Server verwende, aber ich habe über eine einfachere Lösung nachgedacht, vielleicht so etwas wie die Reservierung der CPU für sshd (einschließlich der daraus resultierenden Kinder), eine Art "QoS" für lokale Dienste.
Renato Todorov
Einige Unternehmen sind pleite oder gierig: In einem solchen Fall kann sysrqd eine billige Alternative zu iDRAC, iLO, KVM sein ...
bgtvfr
0

Ich hatte einige Erfolge bei der Vergabe von Echtzeitprivilegien an sshd. Dies geht jedoch zu Lasten des Neustarts des Computers, wenn einer der Echtzeitprozesse ausgeführt wird.

Wenn Sie diesen Weg gehen möchten, starten Sie einen zweiten ssh-Daemon, der nur für Notfälle vorgesehen ist. :) :)

Simon Richter
quelle
1
realtimesshd scheint mir gefährlich zu sein, insbesondere auf Port 22 (ein SSH-Scan könnte zu einem DoS-Angriff werden - das Ausführen auf einem alternativen Port kann das abmildern, aber ich hätte immer noch Angst ...)
voretaq7
Kein Problem, wenn ich den Zugang vom Internet aus blockiere. Mein einziger Weg zu diesem Server führt über VPN. danke für den vorschlag!
Renato Todorov