cane
05.10.04, 16:54
Warum ich dieses HowT geschrieben habe:
Viele Unternehmen, Organisationen und Privatpersonen stellen auf ihren Servern anderen Personen Festplattenplatz zur Verfügung. Dabei taucht zwangsläufig die Frage auf, "wie denn den anderen nun ein sicherer Remote-Zugang zu ihren Daten gewährt werden soll".
Was muß die Lösung bieten:
Wichtig wäre verschlüsselte Authentifizierung, verschlüsselte Datenübertragung und die Möglichkeit unter den gängigen Betriebssystemen eine GUI benutzen zu können um auf die Daten zuzugreifen. Nett wäre es wenn die Möglichkeit besteht den User in ein Verzeichnis einzusperren (chroot).
Betrachtung der gängigen Protokolle:
FTP scheidet von vorneherein aus da die Passwörter sowie der gesammte Datenverkehr unverschlüsselt üertragen wird.
FTPS ist nie über das Stadium eines RFC-Entwurfs herrausgekommen und wird daher kaum unterstützt.
WeDAV wird nicht von allen Servern unterstützt und unterstützt keinen Wechsel der User-ID. Somit greifen alle Usermit den selben Rechten auf die freigegebenen Verzeichnisse zu. Das ist nicht erwünscht.
SSH genügt zwar fast allen Ansprüchen, gibt dem Remoteuser aber per Default eine vollwertige Shell was aber zumeist nicht erwünscht ist. Außerdem wird chroot nicht nativ vom sshd beherrscht. Patcht man den sshd von Hand muß man das nach jedem Sicherheitsupdate des sshd von Hand wiederholen...
SFTP ist ein Bestandteil der SSH2 Suite und unterliegt denselben Einschränkungen wie SSH.
SCP ist ein Bestandteil der SSH Suite und unterliegt denselben Einschränkungen wie SSH.
Am besten wäre also ein SCP oder SFTP Zugang der ohne vollwertige Shell auskommt. Und genau das bietet scponly (http://www.sublimation.org/scponly/)!
Features von scponly (http://www.sublimation.org/scponly/) :
chroot: scponly kann jeden User in ein eigenes chroot einsperren so das dieser keine Möglichkeit hat auf das restliche Dateisystem zuzugreifen.
logging: scponly loggt Zeit, Client-IP, Username, und die aktuelle Anfrage per syslog
SFTP-kompatibel - User können so auch über beliebige Programme die SFTP unterstützen auf ihre Daten zugreifen.
Kompatibel zu den Windows-GUIs WinSCP 2 und Filezilla
Kompatibel zum Mac OS X Programm Fugu
Es ist möglich rsync über den Tunnel auszuführen (siehe ./configure --help)
Installation
Für Gentoo ist scponly über die Paketverwaltung erhältlich.
Für Debian Sarge gibt es ein .deb Paket, für Debian Woody existieren Pakete bei backports.org. Das Verwenden eines Pakets hat den Vorteil scponly über die Paketverwaltung der Distribution updaten zu können.
Mit welchen ./configure-Optionen die Pakete gebaut sind kann ich nicht sagen - ich denke aber das zumindest die Option --enable-chrooted-binary integriert ist. Die Installation aus den Sourcen ist schnell, problemlos und man kann scponly mit diversen Optionen kompilieren.
Installation aus den Sourcen am Beispiel von scponly-3.11.tgz:
Vor der nstallation sollten wie bei jeder Installation die Dateien Install und Readme gelesen werden!
Ins src Verzeichnis wechseln und root werden
cd /usr/local/src && su -
Quellen herunterladen
wget http://www.sublimation.org/scponly/scponly-3.11.tgz
Verzeichnis nach /usr/local/src/entpacken
tar -xzvf scponly-3.11.tgz
Kompilieren
./configure --enable-chrooted-binary && make && make install
#Andere Optionen sind per ./configure --help zu erfahren
Führt man statt 'make install' ein 'make jail' aus wird automatisch das Script setup_chroot.sh aus Schritt 6. gestartet.
Überprüfen ob scponly bzw. scponlyc im Pfad liegt.
Per 'which scponly' bzw. which 'scponlyc 'chauen ob die beiden entstandenen Binarys, scponly (ohne chroot) und scponlyc (mit chroot) innerhalb des Pfades liegen - wenn nicht den Pfad anpassen oder die Binarys verschieben.
setup_chroot.sh ausführbar machen
Das Script setup_chroot.sh per 'chmod +x setup_chroot.sh' ausführbar machen sofern es nicht bereits ausführbar ist.
Neuen Benutzer anlegen der nur scponly nutzen kann
Neuen Benutzer mittels ./setup_chroot.sh anlegen, dabei: Username, Verzeichnis innerhalb des Userhomes in das der User schreiben darf (per Standart incoming), Passwort und Passwortbestätigung des Users angeben.
##Ab hier folgen optionale Schritte beziehungsweise Schritte die nur für bestimmte Konfigurationen gelten
Zusätzliches beschreibbares Verzeichnis für einen User anlegen
Jeder User hat in seinem chroot mehrere Directorys wie /bin, /etc usw.
Auf diese hat er nur lesenden Zugriff. Außerdem besitzt der standardmäßig den Ordner "incoming" (sofern in Schritt 6. kein anderer angegeben wurde) in dem er Schreibrechte hat. Verzeichnisse auf die der User nur lesend zugreifen kann haben die Rechte 755 und gehören dem Benutzer und der Gruppe "root".
Verzeichnisse in dennen der User schreibenden Zugriff hat haben auch die Rechte 755, gehören aber dem jeweiligen Benutzer und der Gruppe "users".
Möchte man zusätzliche Verzeichnisse im Userhome anlegen auf die der User Schreibrechte hat empfiehlt sich die folgende
Lösung:
'cd /home/testuser && mkdir testverzeichnis && chown testuser:users testverzeichnis'
Schon existiert ein neues Verzeichnis testverzeichnis in das der User schreiben kann.
Probleme beim Verwenden von WinSCP
Beim Einloggen auf den Sever per WinSCP erscheint im WinSCP die Meldung das das "groups" Kommando vom Server nicht unterstützt wird.
Das liegt daran, ass das "groups" Kommando auf den gängigen Linux-Systemen nicht als Binay sondern als Shellscript implementiert ist und somit nicht in unsere chroot Umgebungen eingebunden werden kann.
Es ist zwar möglich das "groups" Kommando im WinSCP Client zu deaktivieren - eine serverseitige Lösung ist allerdings sauberer da sie unnötige Nachfragen der User nach der Fehlermeldung ausschließt.
Lösung:
Im Source-Verzeichnis von scponly befindet sich ein "groups" Binary das bei jedem User ins Verzeichnis /usr/bin/ kopiert werden muß.
GUI für Mac OS X:
Fugu (http://rsug.itd.umich.edu/software/fugu/)
GUIs für Windows:
WinSCP (http://winscp.sourceforge.net/eng/)
FileZila (http://filezilla.sourceforge.net/)
Secure iXplorer (http://www.i-tree.org/secixpro/index.htm)
GUIs für Linux:
Unter KDE im Konquror: fish://Server
Links zum Thema
http://www.linux-magazin.de/Artikel/ausgabe/2004/07/ssh/ssh.html
http://www.linux-magazine.com/issue/45/SCPonly_Review.pdf
http://kai.iks-jena.de/scpsftp/scp-sftp.html
http://www.sancho2k.net/filemgmt_da...es/scponly.html
Wer Ergänzungen, Korrekturen oder Anregungen hat oder andere GUIs für den Zugriff nutzt der möge dies posten oder mir eine PN schreiben um das Howto zu erweitern!
mfg
cane
Viele Unternehmen, Organisationen und Privatpersonen stellen auf ihren Servern anderen Personen Festplattenplatz zur Verfügung. Dabei taucht zwangsläufig die Frage auf, "wie denn den anderen nun ein sicherer Remote-Zugang zu ihren Daten gewährt werden soll".
Was muß die Lösung bieten:
Wichtig wäre verschlüsselte Authentifizierung, verschlüsselte Datenübertragung und die Möglichkeit unter den gängigen Betriebssystemen eine GUI benutzen zu können um auf die Daten zuzugreifen. Nett wäre es wenn die Möglichkeit besteht den User in ein Verzeichnis einzusperren (chroot).
Betrachtung der gängigen Protokolle:
FTP scheidet von vorneherein aus da die Passwörter sowie der gesammte Datenverkehr unverschlüsselt üertragen wird.
FTPS ist nie über das Stadium eines RFC-Entwurfs herrausgekommen und wird daher kaum unterstützt.
WeDAV wird nicht von allen Servern unterstützt und unterstützt keinen Wechsel der User-ID. Somit greifen alle Usermit den selben Rechten auf die freigegebenen Verzeichnisse zu. Das ist nicht erwünscht.
SSH genügt zwar fast allen Ansprüchen, gibt dem Remoteuser aber per Default eine vollwertige Shell was aber zumeist nicht erwünscht ist. Außerdem wird chroot nicht nativ vom sshd beherrscht. Patcht man den sshd von Hand muß man das nach jedem Sicherheitsupdate des sshd von Hand wiederholen...
SFTP ist ein Bestandteil der SSH2 Suite und unterliegt denselben Einschränkungen wie SSH.
SCP ist ein Bestandteil der SSH Suite und unterliegt denselben Einschränkungen wie SSH.
Am besten wäre also ein SCP oder SFTP Zugang der ohne vollwertige Shell auskommt. Und genau das bietet scponly (http://www.sublimation.org/scponly/)!
Features von scponly (http://www.sublimation.org/scponly/) :
chroot: scponly kann jeden User in ein eigenes chroot einsperren so das dieser keine Möglichkeit hat auf das restliche Dateisystem zuzugreifen.
logging: scponly loggt Zeit, Client-IP, Username, und die aktuelle Anfrage per syslog
SFTP-kompatibel - User können so auch über beliebige Programme die SFTP unterstützen auf ihre Daten zugreifen.
Kompatibel zu den Windows-GUIs WinSCP 2 und Filezilla
Kompatibel zum Mac OS X Programm Fugu
Es ist möglich rsync über den Tunnel auszuführen (siehe ./configure --help)
Installation
Für Gentoo ist scponly über die Paketverwaltung erhältlich.
Für Debian Sarge gibt es ein .deb Paket, für Debian Woody existieren Pakete bei backports.org. Das Verwenden eines Pakets hat den Vorteil scponly über die Paketverwaltung der Distribution updaten zu können.
Mit welchen ./configure-Optionen die Pakete gebaut sind kann ich nicht sagen - ich denke aber das zumindest die Option --enable-chrooted-binary integriert ist. Die Installation aus den Sourcen ist schnell, problemlos und man kann scponly mit diversen Optionen kompilieren.
Installation aus den Sourcen am Beispiel von scponly-3.11.tgz:
Vor der nstallation sollten wie bei jeder Installation die Dateien Install und Readme gelesen werden!
Ins src Verzeichnis wechseln und root werden
cd /usr/local/src && su -
Quellen herunterladen
wget http://www.sublimation.org/scponly/scponly-3.11.tgz
Verzeichnis nach /usr/local/src/entpacken
tar -xzvf scponly-3.11.tgz
Kompilieren
./configure --enable-chrooted-binary && make && make install
#Andere Optionen sind per ./configure --help zu erfahren
Führt man statt 'make install' ein 'make jail' aus wird automatisch das Script setup_chroot.sh aus Schritt 6. gestartet.
Überprüfen ob scponly bzw. scponlyc im Pfad liegt.
Per 'which scponly' bzw. which 'scponlyc 'chauen ob die beiden entstandenen Binarys, scponly (ohne chroot) und scponlyc (mit chroot) innerhalb des Pfades liegen - wenn nicht den Pfad anpassen oder die Binarys verschieben.
setup_chroot.sh ausführbar machen
Das Script setup_chroot.sh per 'chmod +x setup_chroot.sh' ausführbar machen sofern es nicht bereits ausführbar ist.
Neuen Benutzer anlegen der nur scponly nutzen kann
Neuen Benutzer mittels ./setup_chroot.sh anlegen, dabei: Username, Verzeichnis innerhalb des Userhomes in das der User schreiben darf (per Standart incoming), Passwort und Passwortbestätigung des Users angeben.
##Ab hier folgen optionale Schritte beziehungsweise Schritte die nur für bestimmte Konfigurationen gelten
Zusätzliches beschreibbares Verzeichnis für einen User anlegen
Jeder User hat in seinem chroot mehrere Directorys wie /bin, /etc usw.
Auf diese hat er nur lesenden Zugriff. Außerdem besitzt der standardmäßig den Ordner "incoming" (sofern in Schritt 6. kein anderer angegeben wurde) in dem er Schreibrechte hat. Verzeichnisse auf die der User nur lesend zugreifen kann haben die Rechte 755 und gehören dem Benutzer und der Gruppe "root".
Verzeichnisse in dennen der User schreibenden Zugriff hat haben auch die Rechte 755, gehören aber dem jeweiligen Benutzer und der Gruppe "users".
Möchte man zusätzliche Verzeichnisse im Userhome anlegen auf die der User Schreibrechte hat empfiehlt sich die folgende
Lösung:
'cd /home/testuser && mkdir testverzeichnis && chown testuser:users testverzeichnis'
Schon existiert ein neues Verzeichnis testverzeichnis in das der User schreiben kann.
Probleme beim Verwenden von WinSCP
Beim Einloggen auf den Sever per WinSCP erscheint im WinSCP die Meldung das das "groups" Kommando vom Server nicht unterstützt wird.
Das liegt daran, ass das "groups" Kommando auf den gängigen Linux-Systemen nicht als Binay sondern als Shellscript implementiert ist und somit nicht in unsere chroot Umgebungen eingebunden werden kann.
Es ist zwar möglich das "groups" Kommando im WinSCP Client zu deaktivieren - eine serverseitige Lösung ist allerdings sauberer da sie unnötige Nachfragen der User nach der Fehlermeldung ausschließt.
Lösung:
Im Source-Verzeichnis von scponly befindet sich ein "groups" Binary das bei jedem User ins Verzeichnis /usr/bin/ kopiert werden muß.
GUI für Mac OS X:
Fugu (http://rsug.itd.umich.edu/software/fugu/)
GUIs für Windows:
WinSCP (http://winscp.sourceforge.net/eng/)
FileZila (http://filezilla.sourceforge.net/)
Secure iXplorer (http://www.i-tree.org/secixpro/index.htm)
GUIs für Linux:
Unter KDE im Konquror: fish://Server
Links zum Thema
http://www.linux-magazin.de/Artikel/ausgabe/2004/07/ssh/ssh.html
http://www.linux-magazine.com/issue/45/SCPonly_Review.pdf
http://kai.iks-jena.de/scpsftp/scp-sftp.html
http://www.sancho2k.net/filemgmt_da...es/scponly.html
Wer Ergänzungen, Korrekturen oder Anregungen hat oder andere GUIs für den Zugriff nutzt der möge dies posten oder mir eine PN schreiben um das Howto zu erweitern!
mfg
cane