scponly

scponly ermöglicht die relativ einfache Einrichtung eines SCP- und SFTP-Servers, um einen sicheren Austausch von Dateien durch unsichere Netze hindurch zu ermöglichen. Als Fundament dient der SSH-Daemon, dessen SCP-Funktionen genutzt werden. Ein zusätzlicher Daemon wie für FTP ist also nicht notwendig.
Für zusätzliche Sicherheit ist es möglich, einen scponly-Account auf ein Verzeichnis einzuschließen (chroot). Dann ist kein über liegendes Verzeichnis des Servers sichtbar, für den Zugreifenden sieht es jedoch so aus, als hätte er sich an einen kompletten Server angemeldet.

Funktionsweise

scponly ist eine alternative Shell, welche von der shell nur scp-Kommandos durch lässt. Dem User ist es mit dieser Shell nicht möglich, andere Programme auszuführen.

Des weiteren können die Rechte in diesem chroot so gesetzt werden, dass in nur ein Verzeichnis (Standard: incomming) geschrieben werden kann.

Installation

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.
Dazu ist die Datei /usr/local/src/scponly-4.8/setup_chroot.sh anzupassen mit:

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

Bei einer neueren Version ist der String 4.8 natürlich zu ersetzen mit der aktuellen Version.

Anwendung

Konfiguriert werden muss erstmal praktischer weise nichts.

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 Beispiel:

...
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 oder mit grafischen Programmen wie filezilla oder unter KDE-Konqueror fish://-URL als auch unter Windows mit WinSCP.

Download: sourceforge.net

Haupt-Wiki: http://www.sublimation.org/scponly/wiki/index.php/Main_Page