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.

mercredi 11 février 2009

SFTP chrooté avec rssh

Tester sur une Red Hat Enterprise Linux Server release 5.

Paquet necessaires :
- rssh 2.1.1
- Openssh 4.3p2
- chroot


. Installer le paquet rssh sur la machine
------------------------------------------------------------------
$ tar -xzvf /où_est/rssh-xxx.tar.gz $ cd rssh-xxx/
$ ./configure --prefix=/usr
$ make
$ su
$ make install
------------------------------------------------------------------


. Editer le fichier de configuration /usr/local/etc/rssh.conf :
------------------------------------------------------------------
logfacility = LOG_USER
allowsftp
umask = 022
chrootpath="/home/test"
-------------------------------------------------------------------
Le chrootpath sera le repertoire ou sera ridirigé les utilisateurs.


. Chrooter le répertoire, ici pour le repertoire /home/test :
-------------------------------------------------------------------
$ cd /home/test
$ mkdir -p usr
$ cp -rp /usr/liblibexec usr/.
$ mkdir -p usr/lib
$ cp -rp /usr/lib/*so* usr/lib/.
$ cp -rp /lib .
$ cp -rp /dev .
-------------------------------------------------------------------


.Editer le ficher /etc/shells et y ajouter le shell rssh :
---------------------------------------------------------
/usr/local/bin/rssh
---------------------------------------------------------


.Ajouter un utilisateur avec comme shell rssh ou alors le modifier :
----------------------------------------------------------
# Ajout d'un utulisateur
$ adduser -s /usr/local/bin/rssh test
# Ne pas oublier le mot de passe
$ passwd test

#Modifier le shell d'un utilisateur
$ usermod -s /usr/local/bin/rssh test
----------------------------------------------------------



Le SFTP est maintenant disponible pour l'utilisateur test qui sera chrooté dans le repertoire /home/test.