Solaris
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: DownloadFü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
Kommentare
KommentierenBisher keine Kommentare. |
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