Mögliche entführte SSH-Sitzung und Best Practices für SSH

14

Ich flippe gerade ein bisschen aus. Ich stelle eine SSH-Verbindung zu einem Remoteserver her, den ich kürzlich in Betrieb genommen habe. Ich mache das als root. Ich habe fail2ban installiert und eine große Anzahl von gesperrten IPs im Protokoll.

Als ich mich das letzte Mal einloggte, bemerkte ich, dass mein Terminal sehr verzögert war und meine Internetverbindung unterbrochen wurde. Als ich es nach ungefähr 5 Minuten wieder kaufte, loggte ich mich wieder in den Server ein und machte ein 'who' und stellte fest, dass zwei Root-Benutzer angemeldet waren. Ich hätte gedacht, dass der Prozess der letzten Sitzung beendet worden wäre, wenn meine Verbindung beendet worden wäre auf dem Server gestoppt?

Die Verbindung wurde mit einem "Write failed: Broken pipe" beendet, als ich zum ersten Mal getrennt wurde. Ich habe die Bash-Sitzung mit der anderen Wurzel beendet. Ich weiß nicht viel über SSH-Sicherheit. Könnten Sitzungen entführt werden? Gibt es eine Möglichkeit, dies zu überprüfen? Ich muss mich weiterhin über ssh anmelden. Welche Vorsichtsmaßnahmen sollte ich treffen? Wenn ich irgendwie einen Proxy durchlaufen würde, um meinen Server zu erreichen (wie ein Mann im mittleren Angriff), könnten sie dann meine SSH-Sitzung entführen?

MarMan29
quelle

Antworten:

40

Die Root-Logins sind wahrscheinlich Dangling-Shell-Sessions, die Sie einmal waren. Ihr Server wird wahrscheinlich auch mit all den Anmeldeversuchen dDOS-fähig.

Sperren Sie SSH. Lassen Sie keine Root-Anmeldung zu, und die Anforderungen, die versuchen, diesen Computer brutal zu erzwingen, schlagen sofort fehl (und beanspruchen viel weniger Ressourcen). sudoMelden Sie sich als normaler Benutzer an und erhöhen Sie die Berechtigungen über . Dies sollten Sie sowieso tun. Schränken Sie die SSH-Anmeldung auch auf eine Liste von Client-IPs ein, damit sich die unangenehmen Computer nicht einmal anmelden können.

Verwenden Sie SSH-Schlüssel anstelle von Kennwörtern für die Benutzeranmeldung. Sie sind einfacher zu handhaben und können selbst durch ein Passwort geschützt werden, falls Sie versehentlich einen privaten Schlüssel an die falsche Stelle weitergeben (damit Sie Zeit haben, diese zu ersetzen und den alten Schlüssel ungültig zu machen). Wie in den Kommentaren @EEAA erwähnt, müssen Sie auch die kennwortbasierte Authentifizierung deaktivieren, wenn Sie Clients darauf beschränken möchten, anstelle von Kennwörtern und Schlüsseln nur Schlüssel zu verwenden.

Wenn die Mongolen-Clans weiterhin Ihre Stadtmauer zerschlagen, verschieben Sie SSH möglicherweise in einen anderen hohen Hafen (unter 1024, wie @AustinBurke hervorhob - um einen privilegierten Hafen zu verwenden) anstelle von 22. Dies verringert den Verkehr auf diesem Hafen, wenn dies der Fall ist ist ein Problem für dich (und die meisten Bots sind nicht sehr anmutig, also werden sie es nur mit 22 versuchen). Es kann nicht verhindern, dass Port 22 ausprobiert oder Ihr Computer durchsucht wird, um festzustellen, welcher Port auf SSH lauscht. In den meisten Fällen ist dies eine unnötige Unannehmlichkeit. Aber es kann helfen.

Andere können möglicherweise weitere Tipps bereitstellen, dies sind jedoch recht allgemeine Sicherheitsmaßnahmen für einen öffentlich zugänglichen SSH-Server.

Spooler
quelle
22
Das Verwenden von Schlüsseln ist nicht genug. Man muss auch die Passwortauthentifizierung deaktivieren .
EEAA
4
@marcelm Bedeutet "Unzählige gesperrte IP- Adressen im Protokoll " nicht, dass dies möglicherweise geschieht?
TripeHound
4
@tripehound Nein, tut es nicht. Über den relativen Ressourcenverbrauch wird nichts ausgesagt.
Marcelm
3
Es ist jedoch ein Hinweis auf diesen Effekt, @marcelm.
Leichtigkeit Rennen mit Monica
4
Während das in diesem Universum machbar ist, ist ssh verdammt sicher. Sie können diesen Datenverkehr natürlich während des Flugs erfassen und in seinem verschlüsselten Zustand speichern, aber ein Diffie-Hellman-Schlüsselaustausch wird verwendet, um einen verschlüsselten Kanal einzurichten. Das Knacken ist nicht einmal möglich, wenn Sie sowohl den privaten als auch den öffentlichen SSH-Schlüssel haben, der für die Authentifizierung verwendet wurde, da der Stream-Schlüssel während der Sitzung nie übertragen wurde. Bis jemand diesen Stream geknackt hat, sind wir alle tot.
Spooler