SSH-Basierte dropbox, feedback erwünscht
Hallo Freunde,
Das wird jetzt etwas mehr Text, ausserdem hab ich auch kein Problem,
sondern möchte nur etwas Feedback/Meinungen zu einem Konzept haben. Wer
also lesefaul ist, sollte die Mail lieber gleich wieder schliessen ;)
ich habe mir in letzter Zeit ein paar Gedanken gemacht, wie ich eine
simple "dropbox" auf meinem Server aufsetzen kann, also irgendein
Mechanismus, mit dem mir ein beliebiger User mal schnell Daten oder
Dateien auf meinem Server abladen kann. Dabei hatte ich folgende
Anforderungen:
- Für jeden Zugänglich, möglichst von jedem Linux mit Internetzugang,
also nur auf Tools zurückgreifen, die man bei einem Linux voraussetzen
kann (ssh in meinem Fall)
- Verschlüsselte Übertragung
- Write-Only, jeder kann Daten bei mir abladen, aber nur ich kann sie
lesen. Existierende Dateien dürfen nicht überschrieben werden können.
Ich bin dann zum Schluss gekommen, das ganze auf SSH-Basis zu machen.
Ich denke da an einen Account ohne Passwort, der nach dem Login einfach
mittels eine speziellen "login-shell" den stdin in eine Datei schreibt.
Ich sehe da folgende Vorteile:
- Leicht zu konfigurieren
- der Mechanismus ist schnell kommuniziert ("ssh dropbox@meinserver <
datei")
- Sichere Übertragung per Design, durch SSH
der Nachteil den ich sehe: Prinzipiell lege ich den Zugang zu einem
Systemaccount für jeden offen. Wenn ich irgendetwas übersehen habe oder
falsch konfiguriert, könnte sich vlt jemand von aussen irgendwie eine
Shell besorgen. Ausserdem sollte man natürlich über ein quota für den
dropbox-Ordner nachdenken.
Meine Umsetzung sieht folgendermaßen aus:
Dedizierten User dafür anlegen:
> adduser --disabled-password --gecos "" dropbox --shell
/usr/local/bin/dropbox
die "shell" für dropbox ist unter [1] zu finden. Für das Script muss
~dropbox/dropbox existieren, mit entsprechenden Schreibrechten für den
Nutzer.
Dannach wird für den dropbox-user die ssh-konfiguration angepasst, das
für ihn ein login mit leerem Passwort erlaubt ist (war für mich
notwendig, da andere nutzer nur per public key reinkommen), dazu einfach
den Inhalt von [2] an die sshd_config anhängen
Der letzte Schritt ist dann, für den Nutzer ein leeres Passwort zu setzen:
> BLANKPASSWD=$(mkpasswd -s < /dev/zero)
> sed 's/^dropbox:[^:]*:/dropbox:'$(BLANKPASSWD)':/' /etc/passwd
so, das wars. Jetzt kann man mit "ssh dropbox@server" mal eben ein paar
Notizen ablegen, bzw mit "ssh dropbox@server < datei") auch eine Datei.
Mit dem ersten Parameter nach dropbox@server könnte man auch einen
Dateinamen bestimmten, unter dem das abgelegt wird, ansonsten wird ein
generischer genommen.
Das ganze ist nur ein erster Ansatz und sicher ausbaufähig. Würde mich
aber über ein erstes Feedback freuen, ob die Idee eurer Meinung nach in
die richtige Richtung geht, bzw ob jemand Verbesserungsvorschläge oder
Probleme sieht (oder vlt einen ganz anderen Ansatz)
Grüße,
Micha
[1] http://files.stummi.org/dropbox/dropbox
[2] http://files.stummi.org/dropbox/sshd_conf
Reply to: