jeudi 12 février 2009

Chrooté un user SSH, terminal...

Lien d'un How-to pour chrooté un user utilisant un terminal via ssh :

http://www.lea-linux.org/documentations/index.php/Trucs:Chrooter_un_utilisateur_(ssh,_terminal,_console,_etc...)


A faire :
- Création script d'automatisation.



I/ Création d'un user et de son home

On crée l'utilisateur :
# adduser *login*

Puis on crée ensuite les dossiers qui définira son environnement de base :
# cd /home/
# mkdir bin dev lib
# cp -rp /dev/* ./dev/.

Pour lui permettre de se loguer via un terminal bash, il va falloir copier l'executable de bash dans son environnement :
# cp /bin/bash /home//bin

Si besoin pour chercher un exécutable :
# whereis *exe*

Il faut ensuite copier toutes les dépendances de l'exécutable copier, pour connaitre ces dépendances pour bash par exemple :
# ldd /bin/bash
libncurses.so.5 => /lib/libncurses.so.5 (0x40026000)
libdl.so.2 => /lib/libdl.so.2 (0x40064000)
libc.so.6 => /lib/libc.so.6 (0x40068000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Nous constatons que /bin/bash est dépendant de /lib/libncurses.so.5, /lib/libdl.so.2, /lib/libc.so.6 et de /lib/ld-linux.so.2.
Nous allons les copier tout simplement dans l'arborescence chrootée :
# cd /home/
# cp /lib/libncurses.so.5 ./lib/
# cp /lib/libdl.so.2 ./lib/
# cp /lib/libc.so.6 ./lib/
# cp /lib/ld-linux.so.2 ./lib/


II/ Chroot du user
Copiez le programme /usr/sbin/chroot en le nommant par exemple /usr/sbin/chroot_suid, et attribuez lui des droits SUID :
# cp /usr/sbin/chroot /usr/sbin/chroot_suid
# chmod 4755 /usr/sbin/chroot_suid

Créer un fichier nommer chrootuser dans le repertoire /bin qui contiendra ceci :#!/bin/bash
exec -c /usr/sbin/chroot_suid /home/$USER /bin/bash

Mettre les droits d'éxéction sur ce fichier :
# chmod 755 /bin/chrootuser

Modifier le fichier /etc/shells pour rajouter la ligne /bin/chrootuser.
Enfin attribuer au user le shell chrootuser afin qu'il soit chrooté :
# usermod -d /bin/chrootuser *login*


Vous pouvez maintenant vous connectez.
Si vous remarquez bien, aucune commande n'est disponible (hormis commande interne bash). Si vous souhaitez rajouter ces programmes, vous faites comme pour "bash", en copiant les programmes et les librairies dépendantes.

Aucun commentaire: