Wie man einen jailed ssh user mit Jailkit auf Debian Wheezy erstellt

Version 1.0
Autor: Srijan Kishore <s [dot] kishore [at] ispconfig [dot] org>
Folge howtoforge auf Twitter
Zuletzt bearbeitet 17/Okt/2014

Dieses Dokument beschreibt, wie ein "jailed" SSH User mit Jailkit in Debian Wheezy Server erstellt wird. Jailkit ist ein Satz Dienstprogramme um Anwenderkonten auf bestimmte Dateien zu limitieren unter Verwendung von chroot(). jailkit vereinfacht die Erstellung des Jails indem es die für ein Programm notwendigen Abhängigkeiten ermittelt und diese automatisiert dem jail hinzufügt.

1 Vorbemerkung

Diese Anleitung basiert auf Debian 7 Server, also sollten Sie eine Debian 7 Grund-Servierinstallation einrichten, bevor Sie mit dieser mit Anleitung fortfahren. Das System sollte eine statische IP-Adresse haben. Ich verwende 192.168.0.100 als meine IP-Adresse in dieser Anleitung und server1.example.com als Hostname.

2 Installiere Jailkit

Zuerst laden wir Jailkit herunter und installieren es. Die aktuellste erhältliche Jailkit Version (bei Erstellung dieser Anleitung) ist 2.17. Ich werde hailkit herunterladen und wie folgt 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

Jailkit erfordert einige Pakete vor der Installation, wir werden sie wie folgt intallieren:

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

Jetzt ist unser System zur Installation von Jailkit und kann wie folgt installiert warden:

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

Es wird Jailkit im Debian Server installieren. Wir können die extra Pakete entfernen von /tmp:

rm -rf /tmp/jailkit*

3 Einen Anwender “Jailen”

Jetzt kreieren wir einen Anwender der mittels Jailkit in ein Jail eingesperrt wird:

adduser srijan


root@server1:~#adduser srijan
Adding user `srijan' ...
Adding new group `srijan' (1001) ...
Adding new user `srijan' (1001) with group `srijan' ...
Creating home directory `/home/srijan' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: <--password
Retype new UNIX password:<--password
passwd: password updated successfully
Changing the user information for srijan
Enter the new value, or press ENTER for the default
        Full Name []: <--ENTER
        Room Number []:<--ENTER
        Work Phone []:<--ENTER
        Home Phone []:<--ENTER
        Other []:<--ENTER
Is the information correct? [Y/n] <--Y
root@server1:~#

In meinem Fall erstelle ich den Anwender srijan, Sie können aber irgendeinen beliebigen Namen verwenden. Es ist auch möglich einen bestehenden Nutzer zu verwenden, becahten Sie aber dass Sie nicht "root" verwenden oder einen User über den Sie mittels "sudo" für administrative Tätigkeiten verwenden.

Als nächstes werden wir die Information über unseren Anwender srijan in /etc/passwd prüfen als:

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 Anwender jailen. Erstelle ein Verzeichnis /jail für die Jail Umgebung:

mkdir /jail

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

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

Wir können auch andere Werte vergeben. Die komplette Liste der Jail Umgebung kann in der Datei überprüft werden

nano /etc/jailkit/jk_init.ini

Jetzt ist Jail bereit. Fügen Sie nur noch den Anwender in die Umgebung ein:

jk_jailuser -m -j /jail/ srijan

Prüfe die Werte nochmals in /etc/passwd für den Anwender 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 ist unser Anwender in der Jailed Umgebung eingefügt. Ich werde den Debian Server mit bash Terminal mit seiner IP 192.168.0.100 verbinden:

ssh srijan@192.168.0.100

root@server1:~$ ssh srijan@192.168.0.100
The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
ECDSA key fingerprint is 3d:ca:91:67:96:39:15:b4:0f:6e:c8:2c:92:ef:25:d7.
Are you sure you want to continue connecting (yes/no)? yes
srijan@192.168.0.100's password:
Linux server1 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Connection to 192.168.0.100 closed.
root@server1:~$

Verbindung wird geschlossen da der Anwender keine logging shell hat. Fügen wir es also 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

Ich werde die bash Shell für den gejailten Anwender srijan.  hinzufügen. Jetzt versuche das ssh Einloggen nochmals mit dem Anwender srijan und du wirst dich einloggen können:

ssh srijan@192.168.0.100

Prüfe nun den Inhalt im Root Verzeichnis. Sie werden bemerken, dass es diesen Inhalt hat:

ls /

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

4 Dienste und Befehle in der Jailed Umgebung ausführen

Ein Jail kann dazu verwendet werden um Dienste in der Jailed Umgebung laufen auszuführen. Nehmen wir an, wir wollen z.B. den apache Server in der Jailed Umgebung laufen lassen. Wir werden dann den Befehl jk_chrootlaunch dafür verwenden:

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


Hier beginne ich damit den Apache Dienst zu starten. Ähnlich können Sie damit auch jeden anderen Dienst oder Dämon in der gejailten Umgebung ausführen.

Nehmen wir an, dass wir einen bestimmten Befehl in der Jail Umgebung ausführen möchten, dann verwenden wir jk_cp. Testen wir es in der gejailten Umgebung durch Ausführung von cal wird folgendes angezeigt werden:

cal

srijan@server1:~$ cal
bash: cal: command not found
srijan@server1:~$

Das bedeutet, dass die Jail Umgebung den Befehl cal nicht kennt und daher werde ich ihn nun zum Debian Server wie folgt hinzufügen:

jk_cp  -v -j /jail/ /usr/bin/cal

root@server1:~# jk_cp  -v -j /jail/ /usr/bin/cal
Creating symlink /jail/usr/bin/cal to ncal
Copying /usr/bin/ncal to /jail/usr/bin/ncal
Creating symlink /jail/lib/x86_64-linux-gnu/libncurses.so.5 to libncurses.so.5.9
Copying /lib/x86_64-linux-gnu/libncurses.so.5.9 to /jail/lib/x86_64-linux-gnu/libncurses.so.5.9
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 already exists, will not touch it
/jail/lib/x86_64-linux-gnu/libc.so.6 already exists, will not touch it
/jail/lib/x86_64-linux-gnu/libdl.so.2 already exists, will not touch it
/jail/lib64/ld-linux-x86-64.so.2 already exists, will not touch it
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 already exists, will not touch it
/jail/lib/x86_64-linux-gnu/libc.so.6 already exists, will not touch it
/jail/lib/x86_64-linux-gnu/libdl.so.2 already exists, will not touch it
/jail/lib64/ld-linux-x86-64.so.2 already exists, will not touch it
root@server1:~#

Lass den Befehl cal nochmals in der gejailten Umgebung laufen:

cal

srijan@server1:~$ cal
   September 2014    
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             
                     
srijan@server1:~$

Nun haben wir also den Befehl in die Jail-Umgebung eingefügt. Herzlichen Glückwunsch. Jetzt haben wir die Jail Umgebung erfolgreich in Debian Wheezy konfiguriert :)

5 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte