Website-Suche

Beschränken Sie den SSH-Benutzerzugriff auf das Home-Verzeichnis mithilfe von Chrooted Jail


Es gibt mehrere Gründe, eine SSH-Benutzersitzung auf ein bestimmtes Verzeichnis zu beschränken, insbesondere auf Webservern, aber der offensichtliche Grund ist die Systemsicherheit. Um SSH-Benutzer in einem bestimmten Verzeichnis zu sperren, können wir den chroot-Mechanismus verwenden.

Root ändern (chroot) ist in Unix-ähnlichen Systemen wie Linux eine Möglichkeit, bestimmte Benutzeroperationen vom Rest des Linux-Systems zu trennen; Ändert das scheinbare Stammverzeichnis für den aktuell ausgeführten Benutzerprozess und seinen untergeordneten (übergeordneten) Prozess durch ein neues Stammverzeichnis, das als chrooted jail bezeichnet wird.

In diesem Tutorial zeigen wir Ihnen, wie Sie den SSH-Benutzerzugriff auf ein bestimmtes Verzeichnis unter Linux beschränken. Beachten Sie, dass wir alle Befehle als Root ausführen. Verwenden Sie den Befehl sudo, wenn Sie als normaler Benutzer am Server angemeldet sind.

Schritt 1: Erstellen Sie ein SSH-Chroot-Gefängnis

1. Beginnen Sie mit der Erstellung des Chroot-Gefängnisses mit dem folgenden mkdir-Befehl:

mkdir -p /home/test

2. Als Nächstes identifizieren Sie die erforderlichen Dateien. Gemäß der Manpage sshd_config gibt die Option ChrootDirectory den Pfadnamen des Verzeichnisses an, in das nach der Authentifizierung gechrootet werden soll . Das Verzeichnis muss die notwendigen Dateien und Verzeichnisse enthalten, um die Sitzung eines Benutzers zu unterstützen.

Für eine interaktive Sitzung erfordert 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 Dateien /dev wie folgt mit dem mknod-Befehl. Im folgenden Befehl wird das Flag -m verwendet, um die Dateiberechtigungsbits anzugeben, c bedeutet Zeichendatei und die beiden Zahlen sind Haupt- und Nebenzahlen, auf die die Dateien verweisen .

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. Anschließend legen Sie die entsprechende Berechtigung für das Chroot-Gefängnis fest. Beachten Sie, dass das Chroot-Gefängnis und seine Unterverzeichnisse und Unterdateien Eigentum des root-Benutzers sein müssen und nicht für normale Benutzer oder Gruppen beschreibbar sein müssen:

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

Schritt 2: Richten Sie die interaktive Shell für das SSH-Chroot-Gefängnis ein

5. Erstellen Sie zunächst das Verzeichnis bin und kopieren Sie dann die Dateien /bin/bash mit in das Verzeichnis bin den cp-Befehl wie folgt:

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Identifizieren Sie nun wie folgt die Bash, die für gemeinsam genutzte libs erforderlich ist, 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: SSH-Benutzer erstellen und konfigurieren

7. Erstellen Sie nun den SSH-Benutzer mit dem Befehl useradd und legen Sie ein sicheres Passwort für den Benutzer fest:

useradd tecmint
passwd tecmint

8. Erstellen Sie das allgemeine Konfigurationsverzeichnis des Chroot-Jails, /home/test/etc und kopieren Sie die aktualisierten Kontodateien (/etc/passwd und /etc/group) in dieses Verzeichnis wie folgt:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Schritt 4: Konfigurieren Sie SSH für die Verwendung von Chroot Jail

9. Öffnen Sie nun die Datei sshd_config.

vi /etc/ssh/sshd_config

und fügen Sie die folgenden Zeilen in der Datei hinzu bzw. ändern Sie sie.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Speichern Sie die Datei, beenden Sie den Vorgang und starten Sie die SSHD-Dienste neu:

systemctl restart sshd
OR
service sshd restart

Schritt 5: SSH mit Chroot Jail testen

10. Testen Sie an dieser Stelle, ob das Chroot-Jail-Setup wie erwartet funktioniert:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Aus dem Screenshot oben können wir ersehen, dass der SSH-Benutzer im chrootierten Gefängnis eingesperrt ist und keine externen Befehle (ls, date, uname usw.) ausführen kann.

Der Benutzer kann nur Bash und seine integrierten Befehle wie (pwd, History, Echo usw.) ausführen, wie unten gezeigt:

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Schritt 6. Erstellen Sie das Home-Verzeichnis des SSH-Benutzers und fügen Sie Linux-Befehle hinzu

11. Aus dem vorherigen Schritt können wir erkennen, dass der Benutzer im Stammverzeichnis gesperrt ist. Wir können wie folgt ein Home-Verzeichnis für den SSH-Benutzer 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. Überprüfen Sie als Nächstes die gemeinsam genutzten Bibliotheken auf die oben genannten Befehle und verschieben Sie sie in das gechrootete Jail-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 mit Chroot Jail testen

14. Führen Sie einen abschließenden Test mit SFTP durch. Überprüfen Sie, ob die Befehle, die Sie gerade installiert haben, funktionieren.

Fügen Sie die folgende Zeile in die Datei /etc/ssh/sshd_config ein:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Speichern Sie die Datei und beenden Sie den Vorgang. Starten Sie dann die SSHD-Dienste neu:

systemctl restart sshd
OR
service sshd restart

15. Testen Sie nun die Verwendung von SSH und Sie erhalten die folgende Fehlermeldung:

ssh [email 

Versuchen Sie, SFTP wie folgt zu verwenden:

sftp [email 

Das war es fürs Erste! In diesem Artikel haben wir Ihnen gezeigt, wie Sie einen SSH-Benutzer in einem bestimmten Verzeichnis (chrooted jail) unter Linux einschränken. Nutzen Sie den Kommentarbereich unten, um uns Ihre Meinung zu diesem Leitfaden mitzuteilen.