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

scponly (zuletzt geändert am 2009-07-30 20:17:17 durch JoernBruns)