gord3n89
Goto Top

SSH Login erlauben - lokalen Login Verbieten

Hallo, ich habe ein Problem bei Linux. Es handelt sich um Debian 10 (Buster). Die aufgesetzten Systeme sind allesamt virtuelle Maschinen und sollen kein System darstellen welches Produktive Daten verarbeitet. Es ist für ein Schul Projekt gedacht.

Folgendes:
Auf einem Linux Debian Server gibt es neben dem Root Account einen zusätzlichen User. Dieser soll sich nicht lokal Anmelden dürfen sondern nur per SSH. Die lokale Anmeldung konnte ich unterbinden indem ich die Shell auf auf /usr/sbin/nologin geändert habe. Möchte ich jetzt allerdings eine SSH Verbindung aufbauen wird diese dementsprechend auch abgelehnt. Klar - macht ja eigendlich auch Sinn wegen der Login Shell Änderung. Eine Möglichkeit wäre, die mir gerade einfällt dass der Login mittels Key File erfolgt. Den Schülern wird nur dieser Passphrase bekannt gegeben , das Kennwort des Benutzers nicht ... so könnte das ganze auch funktioneren?

-> Gibt es eine andere Lösung und mein bisheriger Weg ist der falsch oder muss nur irgendetwas in der ssh Konfig geändert werden ? <-

schonmal vielen dank !!
Florian

Content-Key: 1854298724

Url: https://administrator.de/contentid/1854298724

Printed on: April 27, 2024 at 05:04 o'clock

Member: TK1987
TK1987 Feb 07, 2022 at 12:34:38 (UTC)
Goto Top
Moin,

Login sollte auf jeden Fall per RSA-Key erfolgen, alleine schon damit Passwörter nicht im Klartext an den Server übermittelt werden.

Die lokale Anmeldung kannst du einfach unterbinden, indem ich du den Benutzerzugang sperrst:
passwd -l <USERNAME>

-l, --lock Benutzerzugang sperren

SSH-Login mittels Key funktioniert dann immer noch.

Gruß Thomas
Member: Gord3n89
Gord3n89 Feb 07, 2022 at 12:40:57 (UTC)
Goto Top
Danke für deine Antwort !
Ob irgendwelche Kennwörter per Klartext oder nicht übersendet werden, ist hier relativ egal - ist wie gesagt eine Virtuelle Umgebung für ein kleines Schul Projekt. Da läuft das alles eh an den Lokalen Privaten Computern. ;)

Der SSH Login funktioniert danach allerdings NUR noch per Key ?
Member: TK1987
TK1987 Feb 07, 2022 at 12:55:02 (UTC)
Goto Top
Zitat von @Gord3n89:
Der SSH Login funktioniert danach allerdings NUR noch per Key ?
Genau, denn das Passwort des entsprechenden Benutzers ist somit komplett deaktiviert - auch ein Benutzerwechsel mittels su <USERNAME> in diesen Account ist fortan nicht mehr möglich.

Man kann das Passwort natürlich jederzeit reaktivieren mittels
passwd -u <USERNAME>
-u, --unlock Benutzerzugang entsperren

back-to-topWas passiert bei den Befehlen?
Beim sperren wird in der /etc/shadow, in der die gehashten Passwörter zu den einzelnen Benutzern gespeichert sind, vor dem jeweiligen Passworthash ein Ausrufezeichen gesetzt. So ist das Passwort deaktiviert.

Beim Unlock wird das Ausrufezeichen einfach wieder entfernt und das alte Passwort ist wieder aktiviert.
Member: maretz
maretz Feb 07, 2022 at 13:06:08 (UTC)
Goto Top
Warum werden beim SSH-Login die Benutzerdaten im _klartext_ übermittelt? Grad das ist doch der SINN von SSH das dies eben nicht passiert...

Die Key-Anmeldung ist natürlich generell besser, aber auch nur dann wenn
a) nicht jeder User denselben Key verwendet
b) wirklich _alle_ User dieselben Rechte haben sollen (eigentlich wäre es da eher sinnvoll mit Benutzernamen zu arbeiten)

Wenn man dagegen nen Key-Anmeldung macht und den Private-Key fröhlich über alle Rechner verteilt bringt es wenig -> und wenn man wirklich Userkeys für nen generellen Account nimmt gibts halt ne Menge zusätzlicher Verwaltung... (inkl. Benutzern die nicht wissen wie der Key erstellt wird).
Member: TK1987
TK1987 Feb 07, 2022 at 13:16:10 (UTC)
Goto Top
Zitat von @maretz:
Warum werden beim SSH-Login die Benutzerdaten im _klartext_ übermittelt? Grad das ist doch der SINN von SSH das dies eben nicht passiert...
Beim Passwort-Login werden die Passwörter immer im Klartext an den Server übertragen! Anders geht es auch überhaupt nicht, da das eingegebene Passwort ja nur auf dem Server abgeglichen werden kann (denn es existiert nur dort).

Eben genau deswegen nutzt man ja auch den Login mittels RSA-Key, damit Man-in-the-Middle da keine Chance hat.
Member: maretz
maretz Feb 07, 2022 at 13:32:13 (UTC)
Goto Top
Ähm - nein? Die übertragung funktioniert bei SSH bereits verschlüsselt. Siehe (erster google-treffer): https://www.venafi.com/de/blog/how-secure-shell-ssh-keys-work

Und warum muss der Server ein Passwort _kennen_ damit es abgeglichen werden kann? Selbst bei was simplen wie MD5 brauchst du das schon nicht mehr. Solange auf beiden Seiten dieselbe Berechnung für ne "prüfsumme" verwendet wird kannst du auch einfach den übertragenen Wert nehmen, neu berechnen und die Prüfsumme vergleichen. Damit brauchst du das reale Passwort nicht zu speichern... DAS is nu wirklich keine neue Technik...

Und wenn man hier davon ausgeht das jemand wirklich die SSH-Verschlüsselung aufgebrochen hat -> was sollte den daran hindern deinen RSA-Key mitzuschreiben? Der muss ja genauso übertragen werden. Selbst wenn du den lokal mittels Passwort geschützt hast muss ja dein private key irgendwann eben durch die Leitung um gegenüber mit dem public key verglichen zu werden. Was sollte also bei einer - deiner Meinung nach - unverschlüsselten Leitung den Angreifer daran hindern den eben mitzuschneiden und zu speichern?

Also -> nein, auch bei Passwort-Login werden die Passwörter nicht einfach so durch die Leitung geblasen, genau DAFÜR hat SSH bereits die Verschlüsselung implementiert (genauer gesagt mehrere Verfahren).
Member: ichi1232
ichi1232 Feb 07, 2022 at 13:33:11 (UTC)
Goto Top
Zitat von @TK1987:

Zitat von @maretz:
Warum werden beim SSH-Login die Benutzerdaten im _klartext_ übermittelt? Grad das ist doch der SINN von SSH das dies eben nicht passiert...
Beim Passwort-Login werden die Passwörter immer im Klartext an den Server übertragen! Anders geht es auch überhaupt nicht, da das eingegebene Passwort ja nur auf dem Server abgeglichen werden kann (denn es existiert nur dort).

Eben genau deswegen nutzt man ja auch den Login mittels RSA-Key, damit Man-in-the-Middle da keine Chance hat.

Blödsinn. Der Session Key wird vor der Authentisierung ausgehandelt.
Member: C.R.S.
C.R.S. Feb 07, 2022 at 17:47:08 (UTC)
Goto Top
Zitat von @maretz:

Ähm - nein? Die übertragung funktioniert bei SSH bereits verschlüsselt.

Das ist praktisch kaum von Bedeutung solange man keine PKI zur Validierung der Server-Schlüssel einsetzt. Niemand setzt den Webserver der internen Lohnbuchhaltung mit einem selbstsignierten Zertifikat auf und vertraut dann den Anwendern, die Ausnahmeregel im Browser nur ein einziges Mal zu akzeptieren. Bei SSH ist das der Standard.

Und warum muss der Server ein Passwort _kennen_ damit es abgeglichen werden kann? Selbst bei was simplen wie MD5 brauchst du das schon nicht mehr.

Dann wäre der Hash nur ein Surrogat des Passworts. Client-seitiges Hashing ist extrem kompliziert und zahlt sich kaum aus, wird deshalb auch von SSH nicht gemacht.

Das Passwort wird im Klartext in einem verschlüsselten Tunnel an jeden Server übermittelt, den der Anwender anhand des Fingerprints zu kennen glaubt, und kann dadurch abgegriffen werden. Die asymmetische Authentifizierung ist unter den gleichen Bedingungen hingegen sicher (d.h. der Angreifer kann sich nicht neu authentifizieren).

Grüße
Richard
Member: TK1987
TK1987 Feb 08, 2022 updated at 06:46:02 (UTC)
Goto Top
Zitat von @maretz:
Ähm - nein? Die übertragung funktioniert bei SSH bereits verschlüsselt. Siehe (erster google-treffer): https://www.venafi.com/de/blog/how-secure-shell-ssh-keys-work
Durch einen verschlüsselten Tunnel, was dir bei Man-in-the-Middle überhaupt nichts bringt, wenn der verschlüsselte Tunnel zum Angreifer führt.
Und warum muss der Server ein Passwort _kennen_ damit es abgeglichen werden kann? Selbst bei was simplen wie MD5 brauchst du das schon nicht mehr. Solange auf beiden Seiten dieselbe Berechnung für ne "prüfsumme" verwendet wird kannst du auch einfach den übertragenen Wert nehmen, neu berechnen und die Prüfsumme vergleichen. Damit brauchst du das reale Passwort nicht zu speichern... DAS is nu wirklich keine neue Technik...
Zu dem Unfug hat @c.r.s. ja schon alles geschrieben, nimm ich halt die Prüfsumme um mich bei dem Server anzumelden, wo wäre da der Unterschied?

Und wenn man hier davon ausgeht das jemand wirklich die SSH-Verschlüsselung aufgebrochen hat -> was sollte den daran hindern deinen RSA-Key mitzuschreiben? Der muss ja genauso übertragen werden.
Nein eben nicht, der RSA-Key wird niemals übertragen!
Bei Anmeldung mit RSA-Key wird lediglich eine random-generierte Nachricht mit dem Public-Key verschlüsselt, anschließend vom Client mit dem Private-Key entschlüsselt und dann vom Server abgegelichen. Da was abzugreifen bringt nichts, weil beim nächsten Loginversuch wieder eine vollkommen neue Nachricht generiert wird.
Member: TK1987
TK1987 Feb 08, 2022 at 06:39:25 (UTC)
Goto Top
Zitat von @ichi1232:
Blödsinn. Der Session Key wird vor der Authentisierung ausgehandelt.
In dem Kontext ist deine Aussage Blödsinn.

Ja, es werden zwar Session-Keys ausgehandelt - soweit richtig - nur birngen diese dir bei Man-in-the-Middle Angriff genau: 0,garnichts.

Der Angreifer erstellt hier 2 separate Sessions, eine zum Client und eine zum Server. Der Client handelt somit den Session Key mit dem Angreifer aus.

Man kann es drehen und wenden wie man will, bei Passwortauthentifizierung gelangt der Angreifer mit Man-in-the-Middle immer an die Zugangsdaten.
Member: maretz
maretz Feb 08, 2022 at 06:59:44 (UTC)
Goto Top
Ok - nehmen wir mal an das ist so... dann reden wir hier von einem Angriffsszenario was ja in einer Schule mehr als wahrscheinlich ist. Bei einem Server der neben dem Root noch genau EINEM anderen Account hat. Denn dafür MUSS man ja erstmal den Man in the middle machen -> was schon erfordert das ich einiges an Aufwand reinstecke.

Aber ganz ehrlich -> von mir aus baut eure Server auch immer mal direkt in die Berge rein - könnte ja sein das nen Atomschlag sonst das RZ zerlegt. Ich würde halt ab und an die Kirche mal einfach im Dorf lassen und überlegen was die Randbedingungen sind. Wenn es ein wirklich relevanter Rechner ist würde sich m.E. ein Login per "direkt SSH" eh verbieten, dann nur per VPN (aber ich weiss, ggf. hängt der Angreifer ja auch da schon drin...). Und wenns nach euch geht vermutlich auch nur MINDESTENS wenn man selbst im örtlichem Polizeirevier sitzt (könnte ja sonst sein das jemand ganz klassisch die Knarre an den Kopf hält -> da hilft auch nen SSH-Key dann nich wirklich).

Und ja - natürlich könnte man bei SSH den Host-Key auch einfach permanent akzeptieren und "mir egal, is schon ok" nutzen. Dann hilft dir der RSA-Key aber eben auch nich wenn der Anwender den aus Bequemlichkeit z.B. auf seinem Webserver hinterlegt um den bequem an jedem Rechner mittels http runterladen zu können... und den natürlich auch überall gespeichert lässt... Es gibt IMMER den Menschlichen Faktor der in der Regel der grösste Angriffspunkt ist. Oder man überlegt eben mal welcher Schutz für ein System nötig ist - und lebt mit einem gewissen Rest-Risiko... (denn: Auch ein VPN schützt nicht wenn die Person davor es ausnutzt - vgl.: https://www.zeit.de/digital/internet/2013-01/outsourcing-china-verizon?u ..). Ganz ohne komplexes Man in the Middle, ganz simpel...
Member: TK1987
TK1987 Feb 08, 2022 at 07:16:09 (UTC)
Goto Top
Zitat von @maretz:
Aber ganz ehrlich -> von mir aus baut eure Server auch immer mal direkt in die Berge rein - könnte ja sein das nen Atomschlag sonst das RZ zerlegt.
Also eine theoretische Gefahr ist keine Gefahr, alles offen lassen.

Ich würde halt ab und an die Kirche mal einfach im Dorf lassen und überlegen was die Randbedingungen sind.
Ähm, ok, dann erklär mir einen anderen Weg, eine lokale Anmeldung zu verhindern und nur die Anmeldung per SSH zu erlauben, denn genau das waren die Rahmenbedingungen des TE, der ebenfalls schon zu dem Schluss gekommen ist, dass dies wohl nur über RSA-Keys umsetzbar ist.
Member: C.R.S.
C.R.S. Feb 08, 2022 at 11:14:50 (UTC)
Goto Top
Zitat von @maretz:

Aber ganz ehrlich -> von mir aus baut eure Server auch immer mal direkt in die Berge rein - könnte ja sein das nen Atomschlag sonst das RZ zerlegt. Ich würde halt ab und an die Kirche mal einfach im Dorf lassen und überlegen was die Randbedingungen sind.

Das ist ja der Punkt und Lebenszyklus defekter Sicherheitsorganisation: Man will die Kirche im Dorf lassen, formuliert falsche Randbedingungen und im Ergebnis steht die Kirche draußen auf dem Acker.
Ich habe auch Passwort-Logins zu SSH-Servern, fällt unter Risikoakzeptanz. Es wird aber gern vergessen, dass z.B. in Audits für alles im Bereich der Risikoakzeptanz die Kenntnis der Risiken nachgewiesen werden muss.