SSH Chroot Umgebung
Hier wird beschrieben wie man eine einfache chroot Umgebung für einen ssh Benutzer erstellt, um z.B. Dateien auszutauschen ohne dass dieser Benutzer gleich Zugriff auf alle Dateien des PCs hat.
Pakete installieren
Für die chroot Umgebung wird das Paket libpam-chroot benötigt.
sudo apt-get install libpam-chroot
Benutzer erstellen
Zunächst wird ein neuer Benutzer erstellt:
sudo adduser transfer
Home Verzeichnis erstellen
Jetzt muss das home Verzeichnis für den Benutzer erstellt werden. Damit man sich anmelden kann müssen hier die Kommandozeilen-Werkzeuge und deren zugehörige Bibliotheken vorhanden sein welche für die Anmeldung notwendig sind.
Der Einfachheit halber kann man die Verzeichnisse /bin, /lib, /lib64 und /usr einfach per mount -o bind in das home Verzeichnis des Benutzers hinein mounten.
sudo -s
mkdir /home/chroot /home/chroot/bin /home/chroot/lib /home/chroot/lib64 /home/chroot/usr
mount -o bind /bin /home/chroot/bin
mount -o bind /lib /home/chroot/lib
mount -o bind /lib64 /home/chroot/lib64
mount -o bind /usr /home/chroot/usr
Wenn man den chroot Benutzern misstraut, kann man sich aber natürlich auch die Mühe machen nur die tatsächlich benötigten Werkzeuge herauszukopieren. Hier ist das Werkzeug ldd hilfreich um die benötigten Bibliotheken die für ein betimmtes Kommadozeilen-Werkzeug herauszufinden.
$ ldd /bin/bash
linux-vdso.so.1 => (0x00007ffc474b0000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f270b050000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f270ae4c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f270aa82000)
/lib64/ld-linux-x86-64.so.2 (0x00007f270b279000)
Soll die chroot Umgebung dauerhaft Bestand haben müssen die mount Anweisungen in die /etc/fstab (Hab ich nicht getestet, müsste aber so gehen).
/bin /home/chroot/bin none defaults,bind 0 0
/lib /home/chroot/lib none defaults,bind 0 0
/lib /home/chroot/lib64 none defaults,bind 0 0
/usr /home/chroot/usr none defaults,bind 0 0
SSH Server Konfiguration
Als nächstes muss dem SSH Server mitgeteilt werden dass dieser den neuen Benutzer in die chroot Umgebung einsperren soll. Dazu editiert man die Datei für die SSH Server Konfiguration:
sudo nano /etc/ssh/sshd_config
Und fügt an das Ende der Datei folgende Zeilen ein:
Match User transfer
ChrootDirectory /home/chroot/
AllowTCPForwarding no
X11Forwarding no
Abschließend muss man den SSH Server noch neu starten:
sudo systemctl restart sshd