Home.

Technik-Blog

Willkommen auf meinem
Notiz - Blog
Blog

Kmoser's Tech-Blog

Mittwoch
27
März 2019

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.

Bash
sudo apt-get install libpam-chroot

Benutzer erstellen

Zunächst wird ein neuer Benutzer erstellt:

Bash
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.

Bash
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.

Beispiel

Bash
$ 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).

Bash
/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:

Bash
sudo nano /etc/ssh/sshd_config

Und fügt an das Ende der Datei folgende Zeilen ein:

Bash
Match User transfer
    ChrootDirectory /home/chroot/
    AllowTCPForwarding no
    X11Forwarding no

Abschließend muss man den SSH Server noch neu starten:

Bash
sudo systemctl restart sshd