Wie man einen Jailed SSH-Benutzer mit Jailkit unter Debian 9 (Stretch) erstellt

Dieses Dokument beschreibt die Installation und Konfiguration von Jailkit in Debian 9 (Stretch) Server, einem Set von Hilfsprogrammen, um Benutzerkonten auf bestimmte Dateien mit chroot() und/oder bestimmten Befehlen zu beschränken. Das Einrichten einer Chroot-Shell, einer Shell, die auf einen bestimmten Befehl beschränkt ist, oder eines Daemons innerhalb eines Chroot-Gefängnisses ist viel einfacher und kann mit diesen Hilfsmitteln automatisiert werden.

Jailkit ist bekannt dafür, dass es in Netzwerksicherheits-Appliances von mehreren führenden IT-Sicherheitsunternehmen, Internet-Servern von mehreren großen Unternehmen, Internet-Servern von Internet-Servern von Internet-Service-Providern sowie vielen kleineren Unternehmen und Privatanwendern verwendet wird, die cvs, sftp, shell oder Daemon-Prozesse schützen müssen.

1 Vorbemerkung

Dieses Tutorial basiert auf dem Debian 9-Server, daher sollten Sie eine grundlegende Debian-Server-Installation einrichten, bevor Sie mit diesem Tutorial fortfahren. Das System sollte eine statische IP-Adresse haben. Ich verwende 192.168.0.100 als meine IP-Adresse in diesem Tutorial und server1.example.com als Hostnamen.

2 Jailkit installieren

Wir werden zuerst das Jailkit herunterladen und installieren. Zum Zeitpunkt der Erstellung dieses Leitfadens ist die neueste verfügbare Version von Jailkit 2.20. Ich werde es herunterladen und wie folgt installieren:

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

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

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

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

echo 5 > debian/compat
./debian/rules binary
cd ..
dpkg -i jailkit_2.20-1_amd64.deb

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

rm -rf /tmp/jailkit*

3 Einen Benutzer inhaftieren

Jetzt werden wir einen Benutzer erstellen, der mit Jailkit as inhaftiert wird:

adduser srijan
root@server1:~#adduser srijan
Hinzufügen von Benutzer `srijan' .....
Neue Gruppe `srijan' (1001) hinzufügen .....
Hinzufügen eines neuen Benutzers `srijan' (1001) mit der Gruppe `srijan' .....
Home-Verzeichnis erstellen `/home/srijan' .....
Kopieren von Dateien aus `/etc/skel'....
Geben Sie ein neues UNIX-Passwort ein: <--Passwort
Geben Sie das neue UNIX-Passwort erneut ein:<--Passwort
passwd: password updated successfully
Änderung der Benutzerinformationen für srijan
Geben Sie den neuen Wert ein, oder drücken Sie ENTER für den Standardvollnamen
[]: <--ENTER
Raumnummer []:<--ENTER
Arbeitstelefon []:<--ENTER
Telefon zu Hause []:<--ENTER
Andere []:<--ENTER
Sind die Informationen korrekt? [J/n] <--Y
root@server1:~##

In meinem Fall erstelle ich den Benutzer srijan, du kannst jeden beliebigen Namen verwenden.

Als nächstes werden wir die Informationen über den Benutzer srijan in /etc/passwd as überprüfen:

egrep srijan /etc/passwd
root@server1:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/home/srijan:/bin/bash
root@server1:/tmp#

Als nächstes werden wir den erstellten Benutzer inhaftieren. Erstelle ein Verzeichnis /jail für die Jail-Umgebung:

mkdir /jail

Nun werden wir dem Jail einige der Standardprogramme zur Verfügung stellen:

jk_init -v /jail netutils basicshell jk_lsh openvpn ssh sftp

Wir können auch andere Werte angeben, die komplette Liste der Jail-Umgebung kann in der Datei

nano /etc/jailkit/jk_init.ini

Jetzt ist Jail bereit, fügen Sie einfach den Benutzer innerhalb der Umgebung hinzu:

jk_jailuser -m -j /jail/ srijan

Überprüfen Sie erneut die Werte in /etc/passwd für den Benutzer srijan:

egrep srijan /etc/passwd
root@server1:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/jail/./home/srijan:/usr/sbin/jk_chrootsh
root@server1:/tmp#

Jetzt wurde unser Benutzer in der Jailed-Umgebung hinzugefügt. Ich werde den Debian-Server mit Bashterminal mit der IP 192.168.0.100 verbinden:

ssh srijan@192.168.0.100
root@server1:~$ ssh s

rijan@192.168.0.100 Die Authentizität des Hosts'192.168.0.100 (192.168.0.100)' kann nicht festgestellt werden.

Der ECDSA-Schlüssel-Fingerabdruck ist 3d:ca:91:67:96:39:15:b4:0f:6e:c8:2c:92:ef:25:d7.

Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)? Ja

, das Passwort von srijan@192.168.0.100 

Linux-Server1 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64

Die mit dem Debian GNU/Linux-System mitgelieferten Programme sind freie Software;
die genauen Verteilungsbedingungen für jedes Programm sind in den
einzelnen Dateien unter /usr/share/doc/*/copyright beschrieben.

Debian GNU/Linux wird mit ABSOLUTER KEINER GARANTIE geliefert, soweit dies nach geltendem Recht
zulässig ist.
Verbindung zu 192.168.0.100 geschlossen.
root@server1:~$$

Die Verbindung wird geschlossen, da der Benutzer keine Protokollierungs-Shell hat, fügen wir sie in die Konfigurationsdatei für Jail ein:

nano /jail/etc/passwd
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
#srijan:x:1001:1001:,,,:/home/srijan:/usr/sbin/jk_lsh
srijan:x:1001:1001:,,,:/home/srijan:/bin/bash

Es wird der Bash-Prompt für den im Gefängnis befindlichen Benutzer srijan hinzugefügt, nun probiere erneut den ssh-Login mit srijan-Benutzer aus und du kannst dich anmelden:

ssh srijan@192.168.0.100

Überprüfen Sie nun den Inhalt des Stammverzeichnisses, Sie werden feststellen, dass es einen solchen Inhalt hat:

ls /
srijan@server1:~$ ls /
bin dev etc home lib lib64 usr srijan@server1:~$

4 Ausführen von Diensten und Befehlen in einer Jail-Umgebung

Jail kann verwendet werden, um Dienste in einer Jail-Umgebung auszuführen. Angenommen, wir wollen einen beliebigen Dienst in der Jailed-Umgebung ausführen, dann verwenden wir dafür den Befehl jk_chrootlaunch:

jk_chrootlaunch -j /jail -u srijan -x 'service apache2 start'

Hier starte ich den Dienst von Apache. Ebenso können Sie damit jeden beliebigen Dienst oder Daemon in einer Jailed-Umgebung ausführen.

Angenommen, wir wollen einen bestimmten Befehl in der Jail-Umgebung ausführen, dann werden wir jk_cp verwenden. Lassen Sie uns es in der Jailed-Umgebung testen, wenn wir cal ausführen werden, dann zeigt es wie folgt:

cal
srijan@server1:~$ cal
bash: cal: Befehl nicht gefunden
srijan@server1:~$

Es bedeutet, dass die Jail-Umgebung den Befehl cal nicht kennt, jetzt werde ich ihn wie folgt in Debian Server hinzufügen:

jk_cp  -v -j /jail/ /usr/bin/cal
root@server1:~# jk_cp -v -j /jail/ /usr/bin/cal 
Erstellen von symlink /jail/usr/bin/cal nach ncal Kopieren
von /usr/bin/ncal nach /jail/usr/bin/ncal
Erstellen von symlink /jail/lib/x86_64-linux-gnu/libncurses.so.5 nach libncurses.so.5.9
Kopieren von /lib/x86_64-linux-gnu/libncurses.so.5.9 nach /jail/lib/x86_64-linux-gnu/libncurses.so.5.9
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 existiert bereits, wird es nicht berühren
/jail/lib/x86_64-linux-gnu/libc.so.6 existiert bereits, wird es nicht berühren
/jail/lib/x86_64-linux-gnu/libdl.so.2 existiert bereits, wird es nicht berühren
/jail/lib64/ld-linux-x86-64.so.2 existiert bereits, wird es nicht berühren
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 existiert bereits, wird es nicht berühren
/jail/lib/x86_64-linux-gnu/libc.so.6 existiert bereits, wird es nicht berühren
/jail/lib/x86_64-linux-gnu/libdl.so.2 existiert bereits, wird es nicht berühren
/jail/lib64/ld-linux-x86-64.so.2 existiert bereits, wird es nicht berühren.

Führen Sie den Befehl cal in der Umgebung Jailed erneut aus:

cal
srijan@server1:~$ cal April
2019 Su Mo
Tu We Th Fr Sa 1 2 3
4 5 6 7 8 9
10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30srijan@server1:~$

Deshalb haben wir den Befehl für die Jailed-Umgebung hinzugefügt. Herzlichen Glückwunsch! Jetzt haben wir die Jail-Umgebung unter Debian 9 erfolgreich konfiguriert 🙂

5 Links

Das könnte dich auch interessieren …