GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So erstellen Sie einen inhaftierten ssh-Benutzer mit Jailkit unter Debian/Ubuntu

Hallo, heute erstellen wir einen inhaftierten ssh-Benutzer mit Jailkit auf einer Debian Wheezy-Box. Jailkit ist eine Reihe von Dienstprogrammen, um Benutzerkonten mithilfe von chroot() und/oder bestimmten Befehlen auf bestimmte Dateien zu beschränken. Das Einrichten einer Chroot-Shell, einer Shell, die auf einen bestimmten Befehl beschränkt ist, oder eines Daemons in einem Chroot-Gefängnis ist viel einfacher und kann mit diesen Dienstprogrammen automatisiert werden.

Jailkit wird bekanntermaßen in Netzwerksicherheitsgeräten mehrerer führender IT-Sicherheitsfirmen, Internetservern mehrerer großer Unternehmensorganisationen, Internetservern von Internetdienstanbietern sowie vielen kleineren Unternehmen und Privatanwendern verwendet, die cvs, sftp und Shell sichern müssen oder Daemon-Prozesse.

1. JailKit installieren

Zuerst werden wir das Jailkit herunterladen und installieren.

$ cd /tmp
$ wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
$ tar xvfz jailkit-2.17.tar.gz
$ cd jailkit-2.17

Hinweis:Bitte ersetzen Sie jailkit-2.17 durch die Version von Jailkit, die Sie installieren werden.

Da Jailkit vor seiner Installation einige Pakete benötigt, werden wir sie wie folgt installieren:

$ sudo apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold python

Jetzt ist unser System bereit, das Jailkit zu installieren, installieren Sie es wie folgt:

$ ./debian/rules binary
$ cd ..
$ dpkg -i jailkit_2.17-1_i386.deb

Es wird das Jailkit in Debian Server installieren, wir können die zusätzlichen Pakete aus /tmp:

entfernen
$ rm -rf /tmp/jailkit*

2. Konfigurieren der Jail-Umgebung

Es muss ein Verzeichnis vorhanden sein, in dem die gesamte Jail-Umgebung eingerichtet wird. Machen wir es in /opt/jail. Das kann alles sein.

$ sudo mkdir /opt/jail

Root sollte dieses Verzeichnis besitzen. Also chown es raus.

$ sudo chown root:root /opt/jail

3. Aktivieren, dass die Programme innerhalb des Jails verfügbar sind

Alle Programme, die im Jail verfügbar sein müssen, müssen mit dem Befehl jk_init hineinkopiert werden.
Beispiel

$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp

Die Namen wie basicshell , editors , netutils sind Gruppen, die mehrere Programme enthalten. Jede Gruppe ist ein Satz ausführbarer Dateien, Bibliotheken usw., die in die Shell kopiert werden sollen. Zum Beispiel stellt die Sektion basicshell viele Programme wie bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep usw. im Gefängnis bereit.

Eine vollständige Liste der Abschnitte, die eingerichtet werden können, finden Sie unter /etc/jailkit/jk_init.ini.

4. Erstellen Sie den Benutzer, der inhaftiert wird

Benötigen Sie einen Benutzer, um ihn in das Gefängnis zu stecken. Lassen Sie uns eine erstellen

$ sudo adduser arun

Beachten Sie, dass dies ein normaler Benutzer ist, der im eigentlichen Dateisystem und nicht im Jail erstellt wird.
Im nächsten Schritt soll dieser User im Gefängnis eingesperrt werden.

Wenn Sie an dieser Stelle einen Blick auf /etc/passwd werfen, sehen Sie am Ende einen Eintrag, der so aussieht

arun:x:1006:1005:,,,:/home/arun:/bin/bash

Dies ist unser neuer Benutzer und der letzte Teil /bin/bash zeigt an, dass der Benutzer einen normalen Shell-Zugriff auf das System hat, wenn er sich anmeldet.

5. Sperren Sie den Benutzer

Jetzt ist es an der Zeit, den Benutzer ins Gefängnis zu stecken.

$ sudo jk_jailuser -m -j /opt/jail/ arun

Dadurch wurde der Benutzer arun nun gejailt.
Wenn Sie nun einen Blick auf /etc/passwd werfen, würde der letzte Eintrag so aussehen

arun:x:1006:1005:,,,:/opt/jail/./home/arun:/usr/sbin/jk_chrootsh
Beachten Sie, dass sich die letzten beiden Teile, die den Heimbenutzer und den Shell-Typ angeben, geändert haben. Das Home-Verzeichnis des Benutzers befindet sich nun innerhalb der Jail-Umgebung unter /opt/jail. Die Shell des Benutzers ist jetzt ein spezielles Programm namens jk_chrootsh, das die eingesperrte Shell bereitstellt.

Es ist diese spezielle Shell namens jk_chrootsh, die den Benutzer jedes Mal, wenn er sich in das System einloggt, in das Gefängnis führt.

Die Einrichtung des Gefängnisses ist nun fast abgeschlossen. Aber wenn Sie versuchen, sich von ssh aus mit id zu verbinden, schlägt dies folgendermaßen fehl:

$ ssh arun@localhost

Die Verbindung wird geschlossen. Dies geschieht, weil der Benutzer tatsächlich eine eingeschränkte Shell hat.

6. Geben Sie dem Benutzer innerhalb des Gefängnisses eine Bash-Shell

Das Wichtigste, was wir jetzt tun müssen, ist, dem Benutzer eine richtige Bash-Shell zur Verfügung zu stellen, aber innerhalb des Gefängnisses.
Öffnen Sie die folgende Datei

$ sudo nano /opt/jail/etc/passwd

Es ist die Passwortdatei im Gefängnis. Es würde in etwa so aussehen

root:x:0:0:root:/root:/bin/bash
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh

Ändern Sie /usr/sbin/jk_lsh in /bin/bash

root:x:0:0:root:/root:/bin/bash
arun:x:1006:1005:,,,:/home/arun:/bin/bash

Speichern Sie die Datei und beenden Sie sie.

7. Melden Sie sich im Gefängnis an

Jetzt ist es also an der Zeit, sich erneut im Jail anzumelden

$ ssh arun@localhost

Jetzt haben wir eine voll funktionsfähige Bash-Shell, aber innerhalb des Gefängnisses. Überprüfen Sie jetzt die Umgebung, indem Sie sich bewegen. Das Stammverzeichnis / der Jail-Umgebung ist /opt/jail des realen Dateisystems. Aber das wissen nur wir, nicht der inhaftierte Benutzer.

Außerdem sind nur die Befehle, die über jk_cp-Abschnitte kopiert wurden, in diesem Jail verfügbar . Wenn die Anmeldung fehlschlägt, überprüfen Sie /var/log/auth.log auf Fehlermeldungen.

Versuchen Sie nun, einen Netzwerkbefehl wie wget oder etwas Ähnliches auszuführen.

$ wget http://www.google.com/

Wenn Sie eine Fehlermeldung wie diese erhalten:

$ wget http://www.google.com/
--2012-06-23 12:56:43-- http://www.google.com/
 Resolving www.google.com (www.google.com)... failed: Name or service not known.
 wget: unable to resolve host address `www.google.com'

Beheben Sie es, indem Sie die folgenden 2 Befehle ausführen:

$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2

Der genaue Speicherort von libnss_files.so und libnss_dns.so kann variieren, prüfen Sie dies daher.

8. Ausführen von Programmen oder Diensten im Jail

Jetzt ist die Einrichtung abgeschlossen. Jails sind nützlich, um Programme oder Dienste in eingeschränkten/sicheren Umgebungen auszuführen. Um ein Programm oder einen Daemon innerhalb des Gefängnisses zu starten, verwenden Sie den Befehl jk_chrootlaunch.

$ sudo jk_chrootlaunch -j /opt/jail -u arun -x /some/command/in/jail

Das Dienstprogramm jk_chrootlaunch kann verwendet werden, um einen bestimmten Prozess innerhalb der Jail-Umgebung mit den Rechten des angegebenen Benutzers zu starten. Wenn der Daemon nicht gestartet werden kann, überprüfen Sie /var/log/syslog auf Fehlermeldungen.

Um das Programm innerhalb des Jails laufen zu lassen, muss das Programm zuerst mit dem jk_cp-Befehl vollständig in das Jail kopiert werden.

jk_cp - ein Dienstprogramm zum Kopieren von Dateien einschließlich Berechtigungen und Bibliotheken in ein Jail

Schlussfolgerung

Schließlich haben wir mit Hilfe von Jailkit in unserem Debian/Ubuntu-Server ein funktionierendes jailed ssh erstellt. Es ist auf einen bestimmten Befehl oder einen Daemon in einem Chroot-Gefängnis mit automatisierten Dienstprogrammen beschränkt. Weitere Informationen zu verschiedenen Jailkit-Befehlen finden Sie in der Dokumentation auf der Olivier-Website. Wenn Sie irgendwelche Fragen oder Fragen haben, kommentieren Sie bitte.


Debian
  1. So erstellen Sie einen inhaftierten SSH-Benutzer mit Jailkit unter Debian 9 (Stretch)

  2. Richten Sie eine Jailed-Shell mit Jailkit auf Ubuntu ein

  3. So installieren Sie den SSH-Server auf Ubuntu / Debian mit OpenSSH

  4. So erstellen und löschen Sie Benutzer unter Ubuntu 16.04

  5. So erstellen und löschen Sie einen Benutzer unter Debian 9

So erstellen Sie einen SFTP-Benutzer mit bestimmten Verzeichnisberechtigungen in Ubuntu 20.04

So erstellen Sie einen Sudo-Benutzer in Ubuntu Linux

So richten Sie ModSecurity mit Nginx unter Debian/Ubuntu ein

So erstellen Sie einen Nur-SFTP-Benutzer in Debian 11

So installieren Sie sudo unter Debian oder Ubuntu Linux

So erstellen Sie einen Sudo-Benutzer unter Ubuntu und Debian