Es gibt mehrere Gründe, eine SSH-Benutzersitzung auf ein bestimmtes Verzeichnis zu beschränken, insbesondere auf Webservern, aber der offensichtlichste ist die Systemsicherheit. Um SSH-Benutzer in einem bestimmten Verzeichnis einzusperren, können wir den Chroot-Mechanismus verwenden.
Das Ändern des Wurzelverzeichnisses (chroot) in Unix-ähnlichen Systemen wie Linux ist eine Möglichkeit, bestimmte Benutzeroperationen vom Rest des Linux-Systems zu trennen. Es ändert das scheinbare Wurzelverzeichnis für den aktuell laufenden Benutzerprozess und seinen Kind-(Eltern-)Prozess mit einem neuen Wurzelverzeichnis, das als chrooted jail bezeichnet wird.
In diesem Tutorial zeigen wir Ihnen, wie Sie den SSH-Benutzerzugriff auf ein bestimmtes Verzeichnis in Linux
Inhaltsverzeichnis
1. Beginnen Sie mit der Erstellung des Chroot-Gefängnisses mit dem folgenden mkdir-Befehl :
1. Beginnen Sie mit der Erstellung des chroot-Gefängnisses unter Verwendung des mkdir-Befehls unten:
# mkdir -p /home/test
2. Als nächstes identifizieren Sie die erforderlichen Dateien gemäß der sshd_config Handbuchseite, der ChrootDirectory
-Option gibt den Pfadnamen des Verzeichnisses an, in das nach der Authentifizierung gechrooted wird. Das Verzeichnis muss die erforderlichen Dateien und Verzeichnisse enthalten, um eine Benutzer*innensitzung zu unterstützen.
Für eine interaktive Sitzung benötigt dies mindestens eine Shell, üblicherweise sh
, und grundlegende /dev
Knoten wie null, zero, stdin, stdout, stderr und tty-Geräte:
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Erstellen Sie nun die /dev
-Dateien wie folgt unter Verwendung des mknod-Befehls. In der folgenden Befehlszeile wird die -m
-Flag verwendet, um die Dateiberechtigungsbits anzugeben, c
bedeutet Zeichen-Datei und die beiden Zahlen sind die Haupt- und Nebennummern, auf die die Dateien zeigen.
# mkdir -p /home/test/dev/ # cd /home/test/dev/ # mknod -m 666 null c 1 3 # mknod -m 666 tty c 5 0 # mknod -m 666 zero c 1 5 # mknod -m 666 random c 1 8

4. Danach stellen Sie die geeigneten Berechtigungen für das chroot-Gefängnis ein. Beachten Sie, dass das chroot-Gefängnis und seine Unterverzeichnisse und Unterdateien vom root Benutzer*innen besessen sein müssen und von keiner normalen Benutzer*innen oder Gruppe beschreibbar sind:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

Schritt 2: Einrichten einer interaktiven Shell für SSH Chroot Jail
5. Zuerst erstellen Sie das Verzeichnis bin
und kopieren dann die Dateien /bin/bash
in das Verzeichnis bin
mithilfe des cp-Befehls wie folgt:
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/

6. Identifizieren Sie nun die für das gemeinsam genutzte libs
erforderliche bash und kopieren Sie sie in das Verzeichnis lib
:
# ldd /bin/bash # mkdir -p /home/test/lib64 # cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Schritt 3: Erstellen und Konfigurieren des SSH-Benutzers
7. Erstellen Sie nun den SSH-Benutzer mit dem useradd-Befehl und legen Sie ein sicheres Passwort für den Benutzer fest:
# useradd tecmint # passwd tecmint
8. Erstellen Sie das Verzeichnis für die allgemeinen Konfigurationen der chroot-Gefängnis, /home/test/etc
, und kopieren Sie die aktualisierten Konto-Dateien (/etc/passwd und /etc/group) in dieses Verzeichnis wie folgt:
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/

/home/test/etc
directory.Schritt 4: Konfigurieren von SSH zur Verwendung von Chroot-Gefängnis
9. Öffnen Sie nun die Datei sshd_config
.
# vi /etc/ssh/sshd_config
und fügen Sie/ändern Sie die folgenden Zeilen in der Datei.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test

Speichern Sie die Datei und beenden Sie sie, und starten Sie die SSHD-Dienste neu:
# systemctl restart sshd OR # service sshd restart
Schritt 5: Testen von SSH mit Chroot-Gefängnis
10. Überprüfen Sie an dieser Stelle, ob die chroot-Gefängnis-Einrichtung wie erwartet funktioniert:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

Aus dem Screenshot oben können wir sehen, dass der SSH-Benutzer im chroot-Gefängnis gesperrt ist und keine externen Befehle ausführen kann (ls, date, uname, usw.).
Der Benutzer kann nur bash und seine integrierten Befehle wie (pwd, history, echo, usw.) ausführen, wie unten zu sehen ist:
# ssh [email protected] -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history

Schritt 6. Erstellen Sie das Heimatverzeichnis des SSH-Benutzers und fügen Sie Linux-Befehle hinzu
11. Aus dem vorherigen Schritt können wir feststellen, dass der Benutzer im Stammverzeichnis gesperrt ist. Wir können ein Heimatverzeichnis für den SSH-Benutzer wie folgt erstellen (tun Sie dies für alle zukünftigen Benutzer):
# mkdir -p /home/test/home/tecmint # chown -R tecmint:tecmint /home/test/home/tecmint # chmod -R 0700 /home/test/home/tecmint

12. Als nächstes installieren Sie einige Benutzerbefehle wie ls, date und mkdir im Verzeichnis bin
:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/date /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/

13. Als nächstes überprüfen Sie die freigegebenen Bibliotheken für die oben genannten Befehle und verschieben Sie sie in das chrooted Gefängnis-Bibliotheksverzeichnis:
# ldd /bin/ls # cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Schritt 7. SFTP-Test mit Chroot Jail
14. Führen Sie einen abschließenden Test mit sftp durch und überprüfen Sie, ob die soeben installierten Befehle funktionieren.
Fügen Sie die folgende Zeile im /etc/ssh/sshd_config
-Datei ein:
#Enable sftp to chrooted jail ForceCommand internal-sftp
Speichern Sie die Datei und schließen Sie sie. Starten Sie anschließend den SSHD-Dienst neu:
# systemctl restart sshd OR # service sshd restart
15. Testen Sie nun mithilfe von SSH, und Sie erhalten die folgende Fehlermeldung:
# ssh [email protected]

Versuchen Sie es stattdessen mit SFTP:
# sftp [email protected]

Das war’s für jetzt! In diesem Artikel haben wir Ihnen gezeigt, wie Sie einen SSH-Benutzer in einem bestimmten Verzeichnis (chroot Jail) unter Linux einschränken können. Verwenden Sie den Kommentarbereich unten, um uns Ihre Gedanken zu dieser Anleitung mitzuteilen.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/