STEPHANMUND.de

Solaris

ePub

2008-08-13: Installieren eines chrooted SCPonly unter Solaris 10

Einleitung

Wer einen Server mit Kundenzugriff betreibt, hat oft das Problem, dass die Daten, die übertragen werden, nicht verschlüsselt sind (FTP), oder dass der Benutzer Zugriff auf das gesamte System erlangt (SSH/SCP). Zwar kann dem durch die Verwendung von FTPS vorgebeugt werden, jedoch sind die laufenden Kosten durch die Beschaffung und Erneuerung eines gültigen SSL-Zertifikats relativ hoch.
Dem schafft die Verwendung von SCPonly abhilfe. SCPonly ist eine Shell, die auf SSH aufsetzt und dem Benutzer einen SFTP-Server bereitstellt. SCPonly kann ausserdem in einem Jail betrieben werden, um den Benutzer vom Rest des Systems auszuschließen und in seinem Home-Verzeichnis "einzusperren". Im folgenden wird die Installation und Konfiguration von SCPonly auf einem Solaris-System beschrieben. Ich gehe in dieser Beschreibung davon aus, dass SCPonly in der globalen Zone installiert wird, die Installation in einer Zone verhält sich jedoch, bis auf eine Ausnahme, gleich.

Überischt


Vorbereitung

Um SCPonly unter Solaris zu installieren, benötigt man einen C-Compiler. Ich empfehle die Verwendung des Sun C-Compilers, der hier erhältlich ist. Alternativ kann man auch den GNU C-Compiler verwenden, dieser wird unter anderem von Blastwave.org bereitgestellt. Nach der Installation des Compilers kann die Installation von SCPonly beginnen.

Installation

Für die Installation von SCPonly lädt man sich den Quellcode der aktuellen Version von der SCPonly Homepage herunter und entpackt ihn in ein beliebiges verzeichnis. Danach wechselt man in das neu erstellte Verzeichnis.
Da das Verzeichnis /usr/ unter Solaris10 nicht beschreibbar ist, muss man sich ein Verzeichnis überlegen, in das SCPonly installiert werden soll. Ich verwende hier /opt/scponly/. Nun führt man folgende Befehle aus, um SCPonly zu installieren:
# ./configure --prefix=/opt/scponly --with-sftp-server=/usr/lib/ssh/sftp-server --enable-winscp-compat --enable-chrooted-binary
# make
# make install

SCPonly sollte nun nach /opt/scponly/ installiert worden sein. Treten beim ./configure Fehler auf, sollte man die Hinweise verwenden, um diese zu beheben.

Erstellen eines Jails

Zum Anlegen eines Benutzers und zum Erstellen eines Jails ist SCPonly zwar ein Script beigefügt, dieses ist unter Solaris 10 jedoch leider nicht verwendbar. Die Erstellung ist jedoch nicht sehr kompliziert und kann daher auch manuell vorgenommen werden. Ich habe ausserdem alle zur Erstellung des Jails nötigen Befehle in einem Script zusammengestellt, dass man hier herunterladen kann: Download
Für die manuelle Erstellung des Jails müssen folgende Befehle ausgeführt werden:
# mkdir /jail
# mkdir /jail/dev
# mkdir /jail/etc
# mkdir /jail/lib # mkdir /jail/usr
# mkdir /jail/usr/lib
# mkdir /jail/usr/lib/ssh
# mkdir /jail/usr/sfw
# mkdir /jail/usr/sfw/lib

# cp /lib/libc.so.1 /jail/lib/
# cp /lib/libdoor.so.1 /jail/lib/
# cp /lib/libgen.so.1 /jail/lib/
# cp /lib/libm.so.2 /jail/lib/
# cp /lib/libmp.so.2 /jail/lib/
# cp /lib/libnsl.so.1 /jail/lib/
# cp /lib/libscf.so.1 /jail/lib/
# cp /lib/libsocket.so.1 /jail/lib/
# cp /lib/libuutil.so.1 /jail/lib/
# cp /usr/lib/ld.so.1 /jail/usr/lib/
# cp /usr/lib/ssh/sftp-server /jail/usr/lib/ssh/
# cp /usr/sfw/lib/libcrypto.so.0.9.7 /jail/usr/sfw/lib/

# echo "root::0:" > $DIR/etc/group
# echo "other::1:root" >> $DIR/etc/group
# echo "root:x:0:0:::" > $DIR/etc/passwd

# mknod /jail/dev/null c 1 3
# chmod 666 /jail/dev/null

Wird SCPonly nicht in der globalen Zone installiert, muss man den letzten Schritt aus der globalen Zone heraus ausführen, da die Verwendung von mknod innerhalb von Zonen nicht erlaubt ist.
Nach der Erstellung des Jails können Benutzer angelegt werden.

Benutzer anlegen

Benutzer für das soeben erstellte Jail können nun einfach mit dem Befehl useradd angelegt werden:
# useradd -m -d /jail//username -s /opt/scponly/sbin/scponlyc username
Wichtig ist, zwischen dem Jail-Verzeichnis und dem beschreibbaren Benutzer-Verzeichnis zwei Slashes anzugeben.
Das Anlegen des Benutzers wird durch das Eintragen dessen in die Datei /jail/etc/passwd abgeschlossen:
username:x:userid:1:::
Die userid kann man der Datei /etc/passwd entnehmen.
Der angelegte Benutzer sollte nun in der Lage sein, sich über SFTP anzumelden. Weiterhin ist es ihm nicht möglich, das Jail zu verlassen und Dateien ausserhalb seines Home-Verzeichnisses zu manipulieren.
Möchte man mehrere Benutzer im selben Jail anlegen, sollte man darauf achten, dass die Verzeichnisrechte der Home-Verzeichnisse den Zugriff anderer Benutzer verbieten:
# chmod 700 /jail/username
ePub

Kommentare

Kommentieren
Bisher keine Kommentare.
Wegen eines übermäßigen Spam-Aufkommens ist die Kommentar-Funktion bis auf weiteres deaktiviert.
Zurück zu Technik | Solaris
Hat Ihnen der Artikel weitergeholfen? Sie wollen sich in irgendeiner Art für die geleistete Hilfe erkenntlich zeigen? Schauen Sie doch einmal auf meiner Amazon-Wunschliste vorbei, ich freue mich immer über eine kleine Sachspende:
Zur Wunschliste