Jailkit
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
- 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.
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 🙂