GNU/Linux >> Tutoriels Linux >  >> Debian

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

Bonjour, aujourd'hui, nous allons créer un utilisateur ssh emprisonné avec Jailkit sur une boîte Debian Wheezy. Jailkit est un ensemble d'utilitaires permettant de limiter les comptes d'utilisateurs à des fichiers spécifiques à l'aide de chroot() et/ou de commandes spécifiques. La configuration d'un shell chroot, d'un shell limité à une commande spécifique ou d'un démon dans une prison chroot est beaucoup plus facile et peut être automatisée à l'aide de ces utilitaires.

Jailkit est connu pour être utilisé dans les appliances 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 cvs, sftp, shell ou des processus démons.

1. Installation de JailKit

Tout d'abord, nous allons télécharger et installer le Jailkit.

$ cd /tmp
$ wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
$ tar xvfz jailkit-2.17.tar.gz
$ cd jailkit-2.17

Remarque :veuillez remplacer jailkit-2.17 par la version du jailkit que vous allez installer.

Comme Jailkit nécessite certains packages avant son installation, nous allons les installer comme suit :

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

Notre système est maintenant prêt à installer le Jailkit, installez-le comme suit :

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

Il installera le Jailkit dans Debian Server, nous pouvons supprimer les packages supplémentaires de /tmp :

$ rm -rf /tmp/jailkit*

2. Configuration de l'environnement jail

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

3. Permettre aux programmes d'être 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 /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.

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

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

$ sudo adduser arun

Notez qu'il s'agit d'un utilisateur normal créé dans le système de fichiers réel et non dans 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

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

5. 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/ arun

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

arun:x:1006:1005:,,,:/opt/jail/./home/arun:/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 arun@localhost

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

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

Maintenant, la chose importante que nous devrons faire est de fournir à l'utilisateur un shell bash approprié, mais à l'intérieur de la prison.
Ouvrez le fichier suivant

$ sudo nano /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
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh

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

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

Enregistrez le fichier et quittez.

7. Connectez-vous à la prison

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

$ ssh arun@localhost

Nous avons maintenant un shell bash entièrement fonctionnel mais à l'intérieur de la prison. Maintenant, vérifiez 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é.

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.

8. Exécution de programmes ou de services en 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 la commande jk_chrootlaunch.

$ sudo jk_chrootlaunch -j /opt/jail -u arun -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 - un utilitaire pour copier des fichiers, y compris des autorisations et des bibliothèques dans une prison

Conclusion

Enfin, nous avons créé un ssh emprisonné fonctionnel à l'aide de Jailkit dans notre serveur Debian/Ubuntu. Il se limite à une commande spécifique ou à un démon dans une prison chroot avec des utilitaires automatisés. Pour plus d'informations sur les différentes commandes de jailkit, consultez la documentation sur le site Web d'olivier. Si vous avez des questions ou des questions, veuillez commenter.


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

  2. Comment créer un utilisateur Sudo dans Debian

  3. Comment créer un nouvel utilisateur avec un accès Ssh ?

  4. Configurer un shell emprisonné avec jailkit sur Ubuntu

  5. Comment configurer des clés SSH sur Debian

Comment créer un utilisateur SFTP avec des autorisations de répertoire spécifiées dans Ubuntu 20.04

Comment créer un utilisateur Sudo dans Ubuntu Linux

Comment configurer ModSecurity avec Nginx sur Debian/Ubuntu

Comment créer un utilisateur SFTP uniquement dans Debian 11

Comment installer sudo sur Debian ou Ubuntu Linux

Comment créer un utilisateur Sudo sur Ubuntu et Debian