GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer un shell emprisonné avec jailkit sur Ubuntu

Coquille emprisonnée et Jailkit

Un shell emprisonné est une sorte de shell limité qui fournit à l'utilisateur un shell d'aspect très réel mais ne lui permet pas de jouer avec/voir/modifier des parties des systèmes de fichiers réels. Le système de fichiers à l'intérieur du shell est différent du système de fichiers réel du système sous-jacent. Une telle fonctionnalité est obtenue via chroot et trouve de nombreux types d'applications. Par exemple, pour configurer un shell Linux pour que les utilisateurs puissent simplement "jouer avec". Ou exécutez un programme avec toutes les fonctionnalités mais dans un environnement limité, etc.

Dans ce tutoriel, nous allons parler de la configuration rapide d'un shell emprisonné avec jailkit sur Ubuntu. Jailkit est un programme d'assistance qui permet de configurer rapidement un shell emprisonné, d'emprisonner les utilisateurs à l'intérieur et de configurer des programmes à exécuter à partir de l'environnement emprisonné.

Jailkit peut être téléchargé depuis
http://olivier.sessink.nl/jailkit/

Nous avons déjà discuté de l'installation de jailkit sur Ubuntu, alors consultez cet article.

Configurer le shell emprisonné

1. Configurer l'environnement de la prison

Il doit y avoir un répertoire où l'ensemble de l'environnement jail sera configuré. Faisons-le dans /opt/jail. Cela peut être n'importe quoi.

$ sudo mkdir /opt/jail

La racine devrait posséder ce répertoire. Alors chope-le.

$ sudo chown root:root /opt/jail

2. Configurez les programmes à rendre disponibles à l'intérieur de la prison

Tous les programmes qui doivent être disponibles dans la prison doivent être copiés à l'intérieur à l'aide de la commande jk_init.
Exemple

$ 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

Ou d'un coup

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

Les noms comme basicshell , editors , netutils sont des groupes qui contiennent plusieurs programmes. Chaque groupe est un ensemble de fichiers exécutables, de bibliothèques, etc. à copier dans le shell. Par exemple, la section basicshell fournit de nombreux programmes comme bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep etc dans la prison.

Pour une liste complète des sections pouvant être configurées, consultez /etc/jailkit/jk_init.ini .

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

3. Créez l'utilisateur qui sera emprisonné

Besoin d'un utilisateur à mettre à l'intérieur de la prison. Créons-en un

$ 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

Notez qu'il s'agit d'un utilisateur normal qui est créé dans le système de fichiers réel et non à l'intérieur de la prison.
À l'étape suivante, cet utilisateur sera emprisonné à l'intérieur de la prison.

À ce stade, si vous jetez un œil à /etc/passwd, vous verrez une entrée à la fin qui ressemble à ceci

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

C'est notre nouvel utilisateur et la dernière partie /bin/bash indique que l'utilisateur a un accès shell normal sur le système, s'il se connecte.

4. Mettre l'utilisateur en prison

Il est maintenant temps de mettre l'utilisateur à l'intérieur de la prison.

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

En faisant cela, l'utilisateur voleur a maintenant été emprisonné.
Maintenant, si vous jetez un œil à /etc/passwd, la dernière entrée ressemblera à ceci

robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh

Notez que les 2 dernières parties qui indiquent l'utilisateur principal et le type de shell ont changé. Le répertoire personnel de l'utilisateur se trouve maintenant dans l'environnement jail à /opt/jail. Le shell de l'utilisateur est maintenant un programme spécial appelé jk_chrootsh qui fournira le shell emprisonné.

C'est ce shell particulier appelé jk_chrootsh qui emmène l'utilisateur à l'intérieur de la prison, chaque fois qu'il se connecte au système.

La configuration de la prison est maintenant presque terminée. Mais si vous essayez de vous connecter à id depuis ssh, cela échouera comme ceci :

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

La connexion doit se fermer. Cela se produit parce que l'utilisateur a en fait un shell limité.

5. Donnez le shell bash à l'utilisateur à l'intérieur de la prison

La prochaine chose importante à faire est de donner à l'utilisateur un shell bash approprié, mais à l'intérieur de la prison.
Ouvrez le fichier suivant

/opt/jail/etc/passwd

C'est le fichier de mot de passe à l'intérieur de la prison. Cela ressemblerait un peu à ça

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

Remplacez /usr/sbin/jk_lsh par /bin/bash

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

Enregistrez le fichier et quittez.

6. Connectez-vous à la prison

Alors maintenant, il est temps de se reconnecter à la prison

$ 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]:~$

La prison dit 'Je n'ai pas de nom !' , ha ha. Nous avons maintenant un shell bash entièrement fonctionnel mais à l'intérieur de la prison.

Vérifiez maintenant l'environnement en vous déplaçant. La racine / de l'environnement emprisonné est /opt/jail du système de fichiers réel. Mais c'est nous seuls qui le savons, pas l'utilisateur emprisonné.

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]:/$

De plus, seules les commandes qui ont été copiées via les sections jk_cp seront disponibles dans cette prison.
Si la connexion échoue, vérifiez /var/log/auth.log pour les messages d'erreur.

Maintenant, essayez d'exécuter une commande réseau comme wget ou quelque chose de similaire.

$ wget http://www.google.com/

Si vous obtenez une erreur comme celle-ci :

$ 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'

Corrigez-le en exécutant les 2 commandes suivantes :

$ 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

L'emplacement exact de libnss_files.so et libnss_dns.so peut varier, alors vérifiez.

Gérer des programmes ou des services dans la prison

La configuration est maintenant terminée. Les prisons sont utiles pour exécuter des programmes ou des services dans un environnement restreint/sécurisé. Pour lancer un programme ou un démon à l'intérieur de la prison, utilisez le jk_chrootlaunch commande.

$ sudo jk_chrootlaunch -j /opt/jail -u robber -x /some/command/in/jail

L'utilitaire jk_chrootlaunch peut être utilisé pour lancer un processus particulier dans l'environnement jail avec les privilèges de l'utilisateur spécifié. Si le démon ne démarre pas, consultez /var/log/syslog pour les messages d'erreur.

Pour exécuter le programme à l'intérieur de la prison, le programme doit d'abord être entièrement copié à l'intérieur de la prison à l'aide de la commande jk_cp.

jk_cp - a utility to copy files including permissions and libraries into a jail

Pour en savoir plus sur les différentes commandes de jailkit, consultez la documentation sur

http://olivier.sessink.nl/jailkit/
Ubuntu
  1. Configuration initiale du serveur avec Ubuntu 14.04

  2. Comment créer un utilisateur SSH emprisonné avec Jailkit sur Debian 9 (Stretch)

  3. Utiliser Ubuntu avec une configuration à deux écrans ?

  4. Configurer un environnement chroot sur Ubuntu avec debootstrap

  5. Comment configurer Django avec Postgres, Nginx et Gunicorn sur Ubuntu 20.04

Comment créer un utilisateur ssh emprisonné avec Jailkit sur Debian/Ubuntu

Un script shell pour configurer l'environnement de développement dans Ubuntu

Comment configurer WordPress sur Ubuntu Server avec Apache

Surveiller l'activité des utilisateurs avec l'outil acct sur Ubuntu 20.04

Comment installer et configurer Zsh dans Ubuntu 20.04

Configuration initiale du serveur avec Ubuntu 18.04