scponly
scponly ermöglicht die einfache Einrichtung eines sicheren SCP- und SFTP-Servers, mit dessen Hilfe ein sicherer Austausch von Dateien durch unsichere Netze hindurch möglich ist. Als Fundament dient der meist ohnehin installierte SSH-Daemon, dessen SCP-Funktionen genutzt werden. Ein zusätzlicher Daemon wie für FTP ist also nicht notwendig.
scponly als Shell blockt alle Aufrufe an den Server ab, welche keine SCP-Kommandos sind.
Für zusätzliche Sicherheit kann einen scponly-Account in ein Verzeichnis eingeschlossen werden, in ein change root(chroot). Somit kann in kein überliegendes Verzeichnis des Servers gewechselt werden, für den Zugreifenden sieht es jedoch so aus, als hätte er sich an einen kompletten Server angemeldet.
Des weiteren können die Rechte in dieser chroot-Umgebung so gesetzt werden, dass in nur ein Verzeichnis (Standard: incomming) geschrieben werden darf.
Funktionsweise
scponly ist eine alternative Shell, welche nur scp-Kommandos akzeptiert. Dem User ist es mit dieser Shell nicht möglich, andere Programme auszuführen.
Installation aus Sourcen
Der GCC muss installiert sein.
scponly bei sourceforge.net herunter laden und unter /usr/local/src auspacken.
In das Verzeichnis scponly-<Version> gehen und Folgendes ausführen:
./configure --enable-winscp-compat --enable-chrooted-binary --enable-sftp --disable-chroot-checkdir --disable-wildcards make make install
Damit neben SCP auch SFTP funktioniert und des weiteren WinSCP nicht über fehlende Gruppen meckert, ist das ungelinkte Programm groups in die jeweilige chroot-Umgebung des erstellten Users zu kopieren und für jede chroot-Umgebung ein /dev/null anzulegen.
Am einfachsten ist dazu die Datei /usr/local/src/scponly-4.8/setup_chroot.sh anzupassen, dann geschieht es beim Anlegen eines chroot-Users automatisch:
echo 'cp -f /usr/local/src/scponly-4.8/groups $targetdir/bin/groups' >> /usr/local/src/scponly-4.8/setup_chroot.sh echo 'mkdir $targetdir/dev' >> /usr/local/src/scponly-4.8/setup_chroot.sh echo 'cd $targetdir/dev' >> /usr/local/src/scponly-4.8/setup_chroot.sh echo 'mknod -m 666 null c 1 3' >> /usr/local/src/scponly-4.8/setup_chroot.sh
Die 4.8 ist natürlich zu ersetzen mit der aktuellen Version.
Anwendung
Für den Dienst muss erstmal praktischerweise nichts konfiguriert werden.
User ohne chroot
Soll ein User den ganzen Server sehen können, aber nur scp-Kommandos ausführen dürfen, muss nur in die Datei /etc/passwd die Shell angepasst werden:
Statt
sftpuser:x:509:509::/home/sftpuser:/bin/bash
muss dann eingetragen werden:
sftpuser:x:509:509::/home/sftpuser:/usr/local/bin/scponly
User mit chroot
Um einen User mit einer geschlossenen change-root-Umgebung anzulegen, ist Folgendes auszuführen:
cd /usr/local/src/scponly-4.8 make jail
Daraufhin werden einige Fragen für den neuen User gestellt, hier ein Ausschnitt:
... Username to install [scponly]neuerUser home directory you wish to set for this user [/home/neuerUser] name of the writeable subdirectory [incoming] ... please set the password for neuerUser: Changing password for user neuerUser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. ...
Damit wird das Home-Verzeichnis als eine change-root-Umgebung angelegt, auf welches auch alle notwendigen Programme kopiert werden.
Nun sollte mit den User-Daten zugegriffen werden können, z.B. mit SCP-Kommandos, mit grafischen Programmen wie filezilla oder KDE-Konqueror mit fish:// -URL oder auch unter Windows mit WinSCP.
Download: sourceforge.net
Haupt-Wiki: http://www.sublimation.org/scponly/wiki/index.php/Main_Page