Uncategorized

SSH mit Privatekey vom USB Stick

Wie ich ja schon mal erwähnt hatte, hab ich ein kleines Forum aufgesetzt. Das läuft auf nem Server, mit dem ich noch einiges mehr vorhabe, aber darum soll es hier nicht gehen. Hier geht es vielmehr um einen Aspekt der Serverwartung.

Und zwar ist mir aufgefallen, daß in letzter Zeit ein paar Scherzkekse versucht haben, sich per ssh auf meinen Server Zugriff zu verschaffen. Dies stieß naturgemäß nicht auf Begeisterung meinerseits, und ich hab mich ein wenig eingelesen, was man über ein starkes Passwort hinaus noch machen kann.

Dabei stieß ich auf die Möglichkeit, sich bei SSH mit einem private/public Key Paar anzumelden. Wie das geht, kann man überall im Netz lesen, darum soll es hier auch nicht gehen. Das ganze soll um einiges sicherer sein als die Authentifizierung per Passwort.

Die Sache funktioniert nun so, daß man auf dem Rechner zu Hause ein Paar Schlüssel erstellt, je einen public und einen private, und daß dann der publickey auf den Server geladen wird, und dann gibt es noch ein paar Einstellungen, aber wie gesagt, das können andere besser erklären als ich.

Mein Problem war nun, daß ich nicht nur von einem Rechner aus arbeite. Eigentlich müßte ich entweder auf jedem Rechner ein eigenes Paar Schlüssel erstellen und den public Teil auf dem Server einbinden, oder zumindest den einen privatekey den ich schon hab auf alle Rechner verteilen und dort einbinden.

Nennt mich paranoid, aber ich möchte meinen Schlüssel immer dabei haben, auf meinem USB Stick.

Und hier fangen die Probleme an: USB Sticks sind meist (so auch meiner) mit FAT formatiert. FAT ist jenes alte Dateisystem, das schon bei DOS zum Einsatz kam. Es gab zwar Erweiterungen, jedoch hat FAT nie Benutzerrechte bekommen. Wird nun der USB Stick gemountet, werden den darauf befindlichen Dateien irgendwelche vom System festgelegten Benutzerrechte zugewiesen, die in der Regel zu freizügig sind.

ssh, mit dem ich mich auf meinem Server einlogge, ist da recht wählerisch. Sieht das Programm, daß der Schlüssel von anderen veränderbar ist, spielt es nicht mehr mit. Zugriffsrechte darf es nur für den Eigentümer geben, für sonst niemanden (also in etwa 600).

Der USB Stick sollte also mit anderen Standardrechten gemountet werden. Außerdem sollte man darauf achten, daß bei den beschränkteren Rechten überhaupt noch ein Zugriff auf den Schlüssel möglich ist. Wird die Schlüsseldatei nämlich einem anderen Benutzer zugewiesen, ist es mit dem Einloggen auf den Server auch Essig.

Wir müssen den Stick also mit 600 als Standardrecht mounten, wobei die darauf befindlichen Daten dem aktuellen Benutzer zugewiesen werden sollen.

Was nun folgt, kann man auch alles in der Manpage von mount nachlesen, und ich rate dazu, dies auch nochmal zu tun, denn ich kann mich auf mit dem ein oder anderen Punkt irren, deshalb mache ich darauf aufmerksam, daß ich für Schäden keine Haftung übernehme.

Nun aber zum Thema:

Der Befehl sieht in etwa so aus:

mount <Gerät> <Pfad>

also etwa:

mount /dev/sda1 /media/USB-Stick

Wir benötigen nun Optionen einerseits für die Zugriffsrechte:

dmask=022,fmask=177

Vorsicht: Vor allem hier habe ich lediglich darauf geachtet, daß es funktioniert. Welche Sicherheitslücken ich damit aufgerissen habe, kann ich nicht sagen. Ich arbeite an meinen Rechnern alleine, deshalb muß ich hier nicht übermäßig vorsichtig sein. Die Sache kann bei Euch ganz anders liegen. Informiert Euch selbst über sinnvolle Einstellungen für dmask und fmask.

Dann benötigen wir noch die Option für den Besitzer:

uid=ernstruediger

Ihr müßt „ernstruediger“ natürlich durch Euren Benutzernamen ersetzen 😉

Im Ganzen sähe der Mountbefehl also in etwa so aus:

mount -o „uid=<Benutzername>,dmask=022,fmask=177“  <Gerät> <Pfad>

Bitte nicht vergessen, dann beim ssh auch die richtige Schlüsseldatei anzugeben, da das Programm sicher nicht standardmäßig auf dem USB Stick sucht. Das könnte man zwar auch einstellen, halte ich aber nicht für sinnvoll. Die Schlüsseldatei gibt man mit i an:

ssh -i /media/USB-Stick/id_rsa username@meintollerserver.de

Nochmal: Ich übernehme keine Haftung für etwaige Schäden. Bevor Ihr das hier ausprobiert, informiert Euch selbst, inwieweit dieses Vorgehen in Euer Sicherheitskonzept passt oder nicht. Mir geht es vor allem darum, einen möglichen Ansatz aufzuzeigen. Kümmert Euch selbst um die Details.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.