Recherche de site Web

Comment jrooter automatiquement les connexions d’utilisateurs ssh sélectionnées


Introduction

Dans cet article, nous allons voir comment chrooter automatiquement la connexion ssh de l’utilisateur sélectionné en fonction du groupe d’utilisateurs. Cette technique peut être très utile si vous souhaitez que votre utilisateur dispose d’un environnement système limité et en même temps le sépare de votre système principal. Vous pouvez également utiliser cette technique pour créer un simple pot de miel ssh. Dans ce tutoriel, vous apprendrez à créer un environnement chroot de base et à configurer le sshd de votre système principal pour qu’il jaillisse automatiquement les utilisateurs sélectionnés lors de la connexion ssh.

Création d’un environnement chroot de base

Tout d’abord, nous devons créer un environnement chroot simple. Notre environnement chroot sera constitué d’un shell bash. Pour ce faire, nous devons d’abord créer un répertoire chroot :

mkdir /var/chroot

Dans l’étape suivante, nous devons copier le binaire bash et toutes ses dépendances de bibliothèque partagée.
Vous pouvez voir les dépendances de la bibliothèque partagée de bash en exécutant la commande ldd :

ldd /bin/bash
       linux-vdso.so.1 =>  (0x00007fff9a373000)
       libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f24d57af000)
       libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f24d55ab000)
       libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f24d51eb000)
       /lib64/ld-linux-x86-64.so.2 (0x00007f24d59f8000)

Maintenant, nous devons créer manuellement tous les répertoires nécessaires et copier /bin/bash et toutes les bibliothèques dans le nouveau répertoire chroot à un emplacement approprié :

cd /var/chroot/
mkdir bin/ lib64/ lib/
cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/
cp /lib/x86_64-linux-gnu/libdl.so.2 lib/
cp /lib/x86_64-linux-gnu/libc.so.6 lib/
cp /lib64/ld-linux-x86-64.so.2 lib64/
cp /bin/bash bin/

À ce stade, tout est prêt et nous pouvons chrooter

chroot /var/chroot
bash-4.2# ls /  
bash: ls: command not found

D’après ce qui précède, vous pouvez voir que bash est prêt mais qu’il n’y a pas grand-chose à faire car même la commande ls n’est pas disponible. Plutôt que de copier manuellement toutes les commandes et les bibliothèques requises, j’ai créé un simple script bash pour aider à cet effet. Créez un script avec le contenu suivant :

#!/bin/bash
This script can be used to create simple chroot environment
Written by LinuxCareer.com <http://linuxcareer.com/>
(c) 2013 LinuxCareer under GNU GPL v3.0+

#!/bin/bash

CHROOT='/var/chroot'
mkdir $CHROOT

for i in $( ldd $* | grep -v dynamic | cut -d " " -f 3 | sed 's/://' | sort | uniq )
  do
    cp --parents $i $CHROOT
  done

ARCH amd64
if [ -f /lib64/ld-linux-x86-64.so.2 ]; then
   cp --parents /lib64/ld-linux-x86-64.so.2 /$CHROOT
fi

ARCH i386
if [ -f  /lib/ld-linux.so.2 ]; then
   cp --parents /lib/ld-linux.so.2 /$CHROOT
fi

echo "Chroot jail is ready. To access it execute: chroot $CHROOT"

Par défaut, le script ci-dessus créera un chroot dans /var/chroot tel que défini par la variable $CHROOT. N’hésitez pas à modifier cette variable en fonction de vos besoins. Lorsque vous êtes prêt, rendez le script exécutable et exécutez-le avec le chemin complet du fichier vers vos exécutables et les fichiers que vous souhaitez inclure. Par exemple, si vous avez besoin de : ls, cat, echo, rm, bash, vi, utilisez la commande which pour obtenir un chemin d’accès complet et fournissez-le en argument au script chroot.sh ci-dessus :

./chroot.sh /bin/{ls,cat,echo,rm,bash} /usr/bin/vi /etc/hosts
Chroot jail is ready. To access it execute: chroot /var/chroot

Maintenant, vous pouvez accéder à votre nouvelle prison chroot avec :

chroot /var/chroot
bash-4.2# echo linuxcareer.com > file
bash-4.2# cat file
linuxcareer.com
bash-4.2# rm file
bash-4.2# vi --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled May  4 2012 04:25:35)

Créer un groupe d’utilisateurs chroot

À ce stade, nous devons créer un usergourp séparé, qui sera utilisé par sshd pour rediriger tous les utilisateurs appartenant à ce groupe d’utilisateurs vers la prison chroot.

sudo groupadd chrootjail

Maintenant, ajoutez tous les utilisateurs existants à ce groupe. Par exemple, pour ajouter un testeur d’utilisateur, nous allons exécuter :

sudo adduser tester chrootjail
Adding user `tester' to group `chrootjail' ...
Adding user tester to group chrootjail
Done.

Configurer sshd pour chroot jail

Il ne reste plus qu’à configurer sshd pour rediriger automatiquement tous les utilisateurs du groupe d’utilisateurs chrootjail vers le chroot jail à /var/chroot. Cela peut être facilement fait en modifiant le fichier de configuration sshd /etc/ssh/sshd_config. Ajoutez ce qui suit à /etc/ssh/sshd_config :

Match group chrootjail
           ChrootDirectory /var/chroot/

Et redémarrage de SSH :

sudo service ssh restart
ssh stop/waiting
ssh start/running, process 17175

Se connecter à la prison chroot à l’aide de ssh

À ce stade, vous pouvez tester vos paramètres en vous connectant à votre serveur avec sshd configuré :

ssh tester@localhost
tester@localhost's password: 
-bash-4.2$ ls
bin  lib  lib64  usr
-bash-4.2$

Cela vous semble familier ?

Conclusion

Comme vous pouvez le voir, la définition de la prison chroot ssh est un processus assez simple. Si un utilisateur n’a pas son répertoire d’utilisateur personnel disponible dans une prison chroot après la connexion, il se retrouvera dans /. Vous pouvez créer et configurer davantage votre chroot en créant un répertoire personnel utilisateur, en définissant l’environnement bash, etc.

Articles connexes: