GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie eine Jailed-Shell mit Jailkit auf Ubuntu ein

Jailed Shell und Jailkit

Eine Jailed-Shell ist eine Art eingeschränkte Shell, die dem Benutzer eine sehr real aussehende Shell bietet, ihm aber nicht erlaubt, irgendwelche Teile der realen Dateisysteme zu manipulieren/anzusehen/zu modifizieren. Das Dateisystem innerhalb der Shell unterscheidet sich vom tatsächlichen Dateisystem des zugrunde liegenden Systems. Eine solche Funktionalität wird durch Chroot erreicht und findet viele Arten von Anwendungen. Zum Beispiel, um eine Linux-Shell einzurichten, mit der Benutzer einfach "spielen" können. Oder führen Sie ein Programm mit voller Funktionalität, aber in einer eingeschränkten Umgebung aus und so weiter.

In diesem Tutorial werden wir über das schnelle Einrichten einer Jailed-Shell mit Jailkit auf Ubuntu sprechen. Jailkit ist ein Hilfsprogramm, das es ermöglicht, schnell eine Jailed-Shell einzurichten, Benutzer darin zu Jailen und Programme so zu konfigurieren, dass sie von der Jailed-Umgebung ausgeführt werden.

Jailkit kann von
http://olivier.sessink.nl/jailkit/

heruntergeladen werden

Wir haben bereits über die Installation von Jailkit auf Ubuntu gesprochen, also schau dir diesen Beitrag an.

Inhaftierte Shell einrichten

1. Richten Sie die Jail-Umgebung ein

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

2. Richten Sie die Programme ein, die im Gefängnis verfügbar gemacht werden sollen

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

$ sudo jk_init -v /jail basicshell
$ sudo jk_init -v /jail editors
$ sudo jk_init -v /jail extendedshell
$ sudo jk_init -v /jail netutils
$ sudo jk_init -v /jail ssh
$ sudo jk_init -v /jail sftp
$ sudo jk_init -v /jail jk_lsh

Oder auf einmal

$ 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 der Abschnitt basicshell stellt viele Programme wie bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep etc im Gefängnis bereit.

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

jk_lsh (Jailkit limited shell) - is an important section, and must be added.

3. 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 robber
Adding user `robber' ...
Adding new group `robber' (1005) ...
Adding new user `robber' (1006) with group `robber' ...
Creating home directory `/home/robber' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for robber
Enter the new value, or press ENTER for the default
        Full Name []: 
        Room Number []: 
        Work Phone []: 
        Home Phone []: 
        Other []: 
Is the information correct? [Y/n] y

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

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

robber:x:1006:1005:,,,:/home/robber:/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.

4. Sperren Sie den Benutzer

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

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

Damit wurde der Benutzerräuber nun gejailt.
Wenn Sie sich jetzt /etc/passwd ansehen, würde der letzte Eintrag so aussehen

robber:x:1006:1005:,,,:/opt/jail/./home/robber:/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 [email protected]
[email protected]'s password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:45:13 2012 from localhost
Connection to localhost closed.
$

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

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

Als nächstes müssen Sie dem Benutzer eine richtige Bash-Shell geben, aber innerhalb des Gefängnisses.
Öffnen Sie die folgende Datei

/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
robber:x:1006:1005:,,,:/home/robber:/usr/sbin/jk_lsh

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

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

Speichern Sie die Datei und beenden Sie sie.

6. Melden Sie sich im Gefängnis an

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

$ ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:46:01 2012 from localhost
bash: groups: command not found
I have no [email protected]:~$

Das Gefängnis sagt 'Ich habe keinen Namen!' , ha ha. Jetzt haben wir eine voll funktionsfähige Bash-Shell, aber innerhalb des Gefängnisses.

Überprüfen Sie nun 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.

I have no [email protected]:~$ cd /
I have no [email protected]:/$ ls
bin  dev  etc  home  lib  lib64  run  usr  var
I have no [email protected]:/$

Außerdem sind in diesem Jail nur die Befehle verfügbar, die über jk_cp-Abschnitte kopiert wurden.
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.

Ausführen von Programmen oder Diensten im Gefängnis

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 jk_chrootlaunch Befehl.

$ sudo jk_chrootlaunch -j /opt/jail -u robber -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 - a utility to copy files including permissions and libraries into a jail

Weitere Informationen zu verschiedenen Jailkit-Befehlen finden Sie in der Dokumentation unter

http://olivier.sessink.nl/jailkit/
Ubuntu
  1. Ersteinrichtung des Servers mit Ubuntu 14.04

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

  3. Linux-Container mit LXC auf Ubuntu 16.04 einrichten

  4. Ubuntu mit bestimmter UID installieren?

  5. Richten Sie eine Chroot-Umgebung auf Ubuntu mit debootstrap ein

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

Ein Shell-Skript zum Einrichten der Entwicklungsumgebung in Ubuntu

So richten Sie WordPress auf Ubuntu Server mit Apache ein

Überwachen Sie die Benutzeraktivität mit dem acct-Tool unter Ubuntu 20.04

So installieren und konfigurieren Sie Zsh in Ubuntu 20.04

Ersteinrichtung des Servers mit Ubuntu 18.04