Comment créer un utilisateur SSH jailed avec Jailkit sur Debian 9 (Stretch)
Ce document décrit comment installer et configurer Jailkit dans le serveur Debian 9 (Stretch). Jailkit est un ensemble d’utilitaires permettant de limiter les comptes utilisateurs à des fichiers spécifiques en utilisant chroot() et ou des commandes spécifiques. Configurer un shell chroot, un shell limité à une commande spécifique ou un démon à l’intérieur d’une prison chroot est beaucoup plus facile et peut être automatisé grâce à ces utilitaires.
Jailkit est connu pour être utilisé dans les appareils de sécurité réseau de plusieurs grandes entreprises de sécurité informatique, les serveurs Internet de plusieurs grandes entreprises, les serveurs Internet de fournisseurs de services Internet, ainsi que de nombreuses petites entreprises et utilisateurs privés qui ont besoin de sécuriser les processus cvs, sftp, shell ou daemon.
1 Note préliminaire
Ce tutoriel est basé sur le serveur Debian 9, tu dois donc configurer une installation de serveur Debian de base avant de poursuivre ce tutoriel. Le système doit avoir une adresse IP statique. J’utilise 192.168.0.100 comme adresse IP dans ce tutoriel et server1.example.com comme nom d’hôte.
2 Installe Jailkit
Nous allons d’abord télécharger et installer Jailkit. Au moment de la rédaction de ce guide, la dernière version disponible de Jailkit est la 2.20. Je vais la télécharger et l’installer comme suit :
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 nécessite certains paquets avant son installation, nous allons les installer comme suit :
apt-get install build-essential autoconf automake1.11 libtool flex bison debhelper binutils-gold python
Maintenant que notre système est prêt à installer Jailkit, installe-le comme suit :
echo 5 > debian/compat
./debian/rules binary
cd ..
dpkg -i jailkit_2.20-1_amd64.deb
Il installera Jailkit dans le serveur Debian, nous pouvons supprimer les paquets supplémentaires de /tmp:
rm -rf /tmp/jailkit*
3 Jailkit un utilisateur
Nous allons maintenant créer un utilisateur qui sera emprisonné à l’aide de Jailkit comme :
adduser srijanroot@server1:~#adduser srijan
Ajout de l’utilisateur `srijan’ …
Ajout d’un nouveau groupe `srijan’ (1001) …
Ajout d’un nouvel utilisateur `srijan’ (1001) avec le groupe `srijan’ …
Création du répertoire personnel `/home/srijan’ …
Copie des fichiers de `/etc/skel’ …
Saisis le nouveau mot de passe UNIX : <–mot de passe
Retape le nouveau mot de passe UNIX :<–mot de passe
passwd : mot de passe mis à jour avec succès
Changer les informations de l’utilisateur pour srijan
Saisir la nouvelle valeur ou appuyer sur ENTER pour la valeur par défaut
Nom complet [] : <–ENTER
Numéro de chambre [] :<–ENTER
Téléphone professionnel [] :<–ENTER
Téléphone domicile [] :<–ENTER
Autre [] :<–ENTER
Les informations sont-elles correctes ? [Y/n] <–Y
root@server1:~#
Dans mon cas, je crée l’utilisateur srijan, tu peux utiliser n’importe quel nom.
Ensuite, nous allons vérifier les informations sur l’utilisateur srijan dans /etc/passwd comme :
egrep srijan /etc/passwdroot@server1:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001 :,,,:/home/srijan:/bin/bash
root@server1:/tmp#
Ensuite, nous allons mettre en prison l’utilisateur créé. Crée un répertoire /jail pour l’environnement Jail :
mkdir /jail
Maintenant, nous allons fournir à Jail l’environnement de certains programmes par défaut comme :
jk_init -v /jail netutils basicshell jk_lsh openvpn ssh sftp
Nous pouvons aussi donner d’autres valeurs, la liste complète de l’environnement Jail peut être consultée dans le fichier
nano /etc/jailkit/jk_init.ini
Maintenant, Jail est prêt, il suffit d’ajouter l’utilisateur dans l’environnement :
jk_jailuser -m -j /jail/ srijan
Vérifie à nouveau les valeurs dans /etc/passwd pour l’utilisateur srijan:
egrep srijan /etc/passwdroot@server1:/tmp# egrep srijan /etc/passwd
srijan:x:1001:1001 :,,,:/jail/./home/srijan:/usr/sbin/jk_chrootsh
root@server1:/tmp#
Maintenant, notre utilisateur a été ajouté dans l’environnement Jailed. Je vais connecter le serveur Debian avec le terminal bash avec son IP 192.168.0.100 :
ssh [email protected]root@server1:~$ ssh [email protected]
L’authenticité de l’hôte ‘192.168.0.100 (192.168.0.100)’ ne peut pas être établie.
L’empreinte de la clé ECDSA est 3d:ca:91:67:96:39:15:b4:0f:6e:c8:2c:92:ef:25:d7.
Es-tu sûr de vouloir continuer à te connecter (oui/non) ? oui
Mot de passe de [email protected] :
Serveur Linux1 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64
Les programmes inclus dans le système Debian GNU/Linux sont des logiciels libres ;
les conditions exactes de distribution de chaque programme sont décrites dans les fichiers individuels
dans /usr/share/doc/*/copyright.
Debian GNU/Linux est fournie avec ABSOLUMENT AUCUNE GARANTIE, dans la mesure où
est autorisé par la loi applicable.
La connexion à 192.168.0.100 est fermée.
root@server1:~$
La connexion est fermée car l’utilisateur n’a pas de shell de journalisation, ajoutons-le dans le fichier de configuration pour Jail :
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
Cela ajoutera l’invite bash pour l’utilisateur emprisonné srijan. Essaie à nouveau de te connecter à ssh avec l’utilisateur srijan et tu pourras te connecter :
ssh [email protected]
Vérifie maintenant le contenu du répertoire racine, tu remarqueras qu’il a un contenu comme celui-ci :
ls /srijan@server1:~$ ls /
bin dev etc home lib lib64 usr
srijan@server1:~$
4 Exécution de services et de commandes dans un environnement Jail
Jail peut être utilisé pour exécuter des services dans un environnement Jailed. Si nous voulons exécuter un service dans l’environnement Jail, nous utiliserons la commande jk_chrootlaunch pour cela :
jk_chrootlaunch -j /jail -u srijan -x 'service apache2 start'
Ici, je lance le service d’Apache. De même, tu peux exécuter n’importe quel service ou démon dans un environnement Jailed.
Suppose que nous voulions exécuter une commande particulière dans l’environnement Jail, nous utiliserons alors jk_cp. Testons-la dans l’environnement Jailed lorsque nous exécutons cal, elle s’affiche comme suit :
calsrijan@server1:~$ cal
bash : cal : commande non trouvée
srijan@server1:~$
Cela signifie que l’environnement Jail ne connaît pas la commande cal. Je vais maintenant l’ajouter dans le serveur Debian comme suit :
jk_cp -v -j /jail/ /usr/bin/calroot@server1:~# jk_cp -v -j /jail/ /usr/bin/cal
Créer un lien symbolique /jail/usr/bin/cal vers ncal
Copier /usr/bin/ncal vers /jail/usr/bin/ncal
Créer un lien symbolique /jail/lib/x86_64-linux-gnu/libncurses.so.5 vers libncurses.so.5.9
Copie de /lib/x86_64-linux-gnu/libncurses.so.5.9 vers /jail/lib/x86_64-linux-gnu/libncurses.so.5.9
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 existe déjà, ne le touchera pas
/jail/lib/x86_64-linux-gnu/libc.so.6 existe déjà, ne le touchera pas
/jail/lib/x86_64-linux-gnu/libdl.so.2 existe déjà, ne le touchera pas
/jail/lib64/ld-linux-x86-64.so.2 existe déjà, ne le touchera pas
/jail/lib/x86_64-linux-gnu/libtinfo.so.5 existe déjà, ne le touchera pas
/jail/lib/x86_64-linux-gnu/libc.so.6 existe déjà, ne le touchera pas
/jail/lib/x86_64-linux-gnu/libdl.so.2 existe déjà, ne le touchera pas
/jail/lib64/ld-linux-x86-64.so.2 existe déjà, ne le touchera pas
Exécute à nouveau la commande cal dans l’environnement Jailed :
calsrijan@server1 :~$ cal
Avril 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
srijan@server1 :~$
Nous avons donc ajouté la commande pour l’environnement Jailed. Félicitations ! Nous avons maintenant configuré avec succès l’environnement Jail dans Debian 9 🙂
5 Liens
- Debian :https://www.debian.org/
- Jailkit: https://olivier.sessink.nl/jailkit/