PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : scponly einrichten



cane
05.10.04, 17: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

fs111
06.10.04, 09:22
Kleine Anmerkung: Sftp setzt keine vollständige Shell vorraus, sondern stellt alle Befehle selbständig bereit. Wenn man kein Login erlauben will, kann man auch sftp in Verbindung mit rssh (http://rssh.sf.net) nutzen.

fs111

cane
06.10.04, 09:52
Kleine Anmerkung: Sftp setzt keine vollständige Shell vorraus, sondern stellt alle Befehle selbständig bereit. Wenn man kein Login erlauben will, kann man auch sftp in Verbindung mit rssh (http://rssh.sf.net) nutzen.

fs111

Das ist korrekt und wurde von mir mit aufgenomen.
Ich denke aber, dass scponly einfacher einzurichten ist als eine rssh in Verbindung mit SFTP, oder?

Habe für RSSH / SFTP auch Anleitungen gefunden die teils sogar Quotas und Bandbreitenbeschränkungen enthalten - muß mich aber noch genauer informieren...


Danke für die Info!
cane

taylor
06.10.04, 10:05
Patcht man den sshd von Hand muß man das nach jedem Sicherheitsupdate des sshd von Hand wiederholen...

Stellt sich dieses Problem beim Benutzen von scponly nicht auch?

Es werden doch die libssl und SSH Binaries in das Chroot Verzeichnis kopiert, und dort pflegt sie mein Distributor ja nun auch nicht mehr.

cane
06.10.04, 10:14
Es werden doch die libssl und SSH Binaries in das Chroot Verzeichnis kopiert, und dort pflegt sie mein Distributor ja nun auch nicht mehr.

Hallo taylor
nette Anmerkung, da habe ich noch gar nicht drüber nachgedacht...

Allerdings denke ich, dass sich der User am sshd der Distribution authentifiziert und dann in sein userhome gechrootet wird wo er sftp bzw. scp nutzen kann um Daten zu kopieren etc.
Die Authentifizierung müßte also sicher sein, oder?

mfg
cane

taylor
06.10.04, 10:36
Ich habe da eher Zweifel.

cane
06.10.04, 11:16
Ich habe da eher Zweifel.
Werde mich mal genauer informieren und dann nochmal hier posten...

mfg
cane

cane
08.12.04, 08:54
Ich bitte alle die scponly einsetzen auf die aktuelle Version 4.0 zu updaten da in allen älteren Versionen eine Sicherheitslücke existiert.
Homepage && Download: http://www.sublimation.org/scponly/

Nach wie vor bleibt scponly aber eine der sichersten Möglichkeiten Daten zu kopieren!

rssh sollte nicht mehr eingesetzt werden da der genannte Bug auch dort auftritt, aber noch nicht gefixt ist. Der Maintener von rssh hat scheinbar das Interesse am Projekt verloren...

Alles weitere auf: http://www.heise.de/security/news/meldung/53947

mfg
cane