Jailkit

Aus Foxwiki

Was ist Jailkit

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

Vorbemerkung

  • Getestet mit Debian 9
  • Das System sollte eine statische IP-Adresse haben
    • z. B. 192.168.0.100 mit dem Hostname server1.example.com

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*

Einen Benutzer inhaftieren

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

adduser srijan
#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

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
# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/home/srijan:/bin/bash

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
# egrep srijan /etc/passwd
srijan:x:1001:1001:,,,:/jail/./home/srijan:/usr/sbin/jk_chrootsh

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
$ ssh srijan@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
Verbindung zu 192.168.0.100 geschlossen.
$

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 /
$ ls /
bin dev etc home lib lib64 usr

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
$ cal
bash: cal: Befehl nicht gefunden

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
# 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
$ 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
30

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 🙂

Links

  1. https://www.howtoforge.com/debian-9-jail-jailkit/
  2. https://olivier.sessink.nl/jailkit/