« Discussion:Chroot » : différence entre les versions
mAucun résumé des modifications |
m (Lea a déplacé la page Discussion:Admin-admin env-chroot vers Discussion:Chroot) |
||
(2 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 80 : | Ligne 80 : | ||
Cordialement. | Cordialement. | ||
== La connexion avec sftp user@server ne marche pas == | |||
Après avoir suivit la procédure de chroot, j'ai testé la commande sftp user@server (en ligne de commande et avec Filezilla). La connexion reste bloquée après avoir entré le mot de passe (le mot de passe est correct). Par contre la commande ssh user@server fonctionne correctement. | |||
Quels sont les binaires à mettre dans bin/ pour que sftp fonctionne correctement ? (sftp y est déjà). | |||
== Correction pour Etch (Debian stable) == | |||
Sous une debian Etch, la commande ldd /bin/bash retourne : | |||
<code># ldd /bin/bash | |||
linux-gate.so.1 => (0xffffe000) | |||
libncurses.so.5 => /lib/libncurses.so.5 (0xb7f99000) | |||
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f95000) | |||
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e64000) | |||
/lib/ld-linux.so.2 (0xb7fe5000)</code> | |||
Seules les librairies des quatre dernières lignes retournées sont à copier dans le répertoire lib de la prison (/home/chroot/toto). | |||
<code># cp /lib/libncurses.so.5 lib | |||
# cp /lib/tls/i686/cmov/libdl.so.2 lib | |||
# cp /lib/tls/i686/cmov/libc.so.6 lib | |||
# cp /lib/ld-linux.so.2 lib</code> | |||
Ce qui va poser problème avec la commande: | |||
<code>ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }' | bash | |||
</code> | |||
du script | |||
et ce pour plusieurs raisons : | |||
#awk doit prendre la troisième colonne de la sortie ldd pour la passer comme argument source à cp. | |||
- La troisième colonne de la première ligne est (0xffffe000), cela ne risque pas de fonctionner!!! | |||
- Il n'y a pas de troisième colonne dans la dernière ligne retournée par ldd, là aussi cela ne risque pas de fonctionner!!! | |||
#il y a une erreur dans la syntaxe : pourquoi utiliser l'option -v de awk pour $LOGIN et pas pour $REP ??? | |||
Testons : | |||
(j'ai retirer la redirection vers bash pour obtenir une sortie à l'écran) | |||
<code>#I=/bin/bash | |||
#LOGIN=toto | |||
#REP=/home/chroot | |||
#ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }' | |||
cp (0xffffe000) linux-gate.so.1 => (0xffffe000)/toto/lib/ | |||
cp /lib/libncurses.so.5 libncurses.so.5 => /lib/libncurses.so.5 (0xb7ed8000)/toto/lib/ | |||
cp /lib/tls/i686/cmov/libdl.so.2 libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ed4000)/toto/lib/ | |||
cp /lib/tls/i686/cmov/libc.so.6 libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7da3000)/toto/lib/ | |||
cp /lib/ld-linux.so.2 (0xb7f24000)/toto/lib/ | |||
</code> | |||
Houla! C'est pas vraiment ce que l'on cherchait à obtenir... | |||
Commençons par corriger la syntaxe. | |||
<code># ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '{ print "cp "$3" "REP"/"LOGIN"/lib/" }' | |||
cp (0xffffe000) /home/chroot/toto/lib/ | |||
cp /lib/libncurses.so.5 /home/chroot/toto/lib/ | |||
cp /lib/tls/i686/cmov/libdl.so.2 /home/chroot/toto/lib/ | |||
cp /lib/tls/i686/cmov/libc.so.6 /home/chroot/toto/lib/ | |||
cp /home/chroot/toto/lib/ | |||
</code> | |||
Haa! Ca va déjà un peu mieux... | |||
Poursuivons en nous occupant de la première et dernière ligne. Pour cela il suffit d'indiquer à awk de ne traiter les ligne que si la troisième colonne commence par /lib ;) | |||
<code>#ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '$3 ~ "^/" { print "cp "$3" "REP"/"LOGIN"/lib/" }' | |||
cp /lib/libncurses.so.5 /home/chroot/toto/lib/ | |||
cp /lib/tls/i686/cmov/libdl.so.2 /home/chroot/toto/lib/ | |||
cp /lib/tls/i686/cmov/libc.so.6 /home/chroot/toto/lib/ | |||
</code> | |||
Et voila... | |||
Remplacez dans le script | |||
<code>ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }' | |||
</code> | |||
par | |||
<code>ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '$3 ~ "^/" { print "cp "$3" "REP"/"LOGIN"/lib/" }' | bash | |||
</code> | |||
Tester sous Debian Etch | |||
Un très grand NON REMERCIEMENT à Franck Huet pour son livre Debian GNU/Linux qui se targue de traiter de la sécurité sur Etch et qui à repris littéralement ce script. J'ai réellement perdu 39euros. |
Dernière version du 3 décembre 2023 à 21:28
marche pas
j'ai testé la procédure en manuel et le script lors du logging j'ai le message d'erreur /usr/sbin/chroot: cannot run command `/bin/bash': No such file or directory méthode incompléte ?, erreur ? qui as une solution ? merci par avance nota : ai testé sur mandriva 2006, suse 10.1, kubuntu breezy, fedora core 4
pb avec la commande LDD et AWK
le code suivant ne fonctionne pas correctement (mandriva 2006) :
ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }' | bash
$REP renvoit (dans le print) un des trois type d'affichage
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7e56000)
/lib/ld-linux.so.2 (0xb7f9b000)
$3 renvoit en réponse :
(0xffffe000)
/lib/tls/libc.so.6
<vide>
Création du script /bin/chroot par un 'document en ligne' (here document)
Est-ce que ces lignes du script final :
cat < /bin/chroot
#!/bin/bash exec -c /usr/sbin/chroot /home/chroot\$USER /bin/bash EOF
ne devraient pas être remplacées par ceci :
{
cat<<'EOF'
#!/bin/bash exec -c /usr/sbin/chroot /home/chroot/$USER /bin/bash EOF
}>/bin/chroot
quotas, réseau?
Hello! J'ai suivi en grande partie ton tuto. Mais j'ai 2-3 soucis maintenant: 1- comment faire pour les quotas? 2- je n'ai pas de réseau dans mon espace chrooté :/ plutôt génant...
Merci d'avance!
@@++
Copie conforme ?
Merci pour ce très bon tutorial, qui m'a bien éclairé sur le sujet. Par contre je tenais à vous dire que j'ai trouvé sa copie conforme dans le livre "Linux spécial Sécurité" dans la collection Ressources Informatique de Frank HUET, page 175 Ne sachant pas qui a copié qui, je tenais juste à vous en informer.
Cordialement.
La connexion avec sftp user@server ne marche pas
Après avoir suivit la procédure de chroot, j'ai testé la commande sftp user@server (en ligne de commande et avec Filezilla). La connexion reste bloquée après avoir entré le mot de passe (le mot de passe est correct). Par contre la commande ssh user@server fonctionne correctement.
Quels sont les binaires à mettre dans bin/ pour que sftp fonctionne correctement ? (sftp y est déjà).
Correction pour Etch (Debian stable)
Sous une debian Etch, la commande ldd /bin/bash retourne :
# ldd /bin/bash
linux-gate.so.1 => (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7f99000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f95000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e64000)
/lib/ld-linux.so.2 (0xb7fe5000)
Seules les librairies des quatre dernières lignes retournées sont à copier dans le répertoire lib de la prison (/home/chroot/toto).
# cp /lib/libncurses.so.5 lib
- cp /lib/tls/i686/cmov/libdl.so.2 lib
- cp /lib/tls/i686/cmov/libc.so.6 lib
cp /lib/ld-linux.so.2 lib
Ce qui va poser problème avec la commande:
ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }' | bash
du script
et ce pour plusieurs raisons :
- awk doit prendre la troisième colonne de la sortie ldd pour la passer comme argument source à cp.
- La troisième colonne de la première ligne est (0xffffe000), cela ne risque pas de fonctionner!!! - Il n'y a pas de troisième colonne dans la dernière ligne retournée par ldd, là aussi cela ne risque pas de fonctionner!!!
- il y a une erreur dans la syntaxe : pourquoi utiliser l'option -v de awk pour $LOGIN et pas pour $REP ???
Testons :
(j'ai retirer la redirection vers bash pour obtenir une sortie à l'écran)
#I=/bin/bash
- LOGIN=toto
- REP=/home/chroot
- ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }'
cp (0xffffe000) linux-gate.so.1 => (0xffffe000)/toto/lib/
cp /lib/libncurses.so.5 libncurses.so.5 => /lib/libncurses.so.5 (0xb7ed8000)/toto/lib/
cp /lib/tls/i686/cmov/libdl.so.2 libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ed4000)/toto/lib/
cp /lib/tls/i686/cmov/libc.so.6 libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7da3000)/toto/lib/
cp /lib/ld-linux.so.2 (0xb7f24000)/toto/lib/
Houla! C'est pas vraiment ce que l'on cherchait à obtenir...
Commençons par corriger la syntaxe.
# ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '{ print "cp "$3" "REP"/"LOGIN"/lib/" }'
cp (0xffffe000) /home/chroot/toto/lib/
cp /lib/libncurses.so.5 /home/chroot/toto/lib/
cp /lib/tls/i686/cmov/libdl.so.2 /home/chroot/toto/lib/
cp /lib/tls/i686/cmov/libc.so.6 /home/chroot/toto/lib/
cp /home/chroot/toto/lib/
Haa! Ca va déjà un peu mieux...
Poursuivons en nous occupant de la première et dernière ligne. Pour cela il suffit d'indiquer à awk de ne traiter les ligne que si la troisième colonne commence par /lib ;)
#ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '$3 ~ "^/" { print "cp "$3" "REP"/"LOGIN"/lib/" }'
cp /lib/libncurses.so.5 /home/chroot/toto/lib/
cp /lib/tls/i686/cmov/libdl.so.2 /home/chroot/toto/lib/
cp /lib/tls/i686/cmov/libc.so.6 /home/chroot/toto/lib/
Et voila...
Remplacez dans le script
ldd /bin/$I | awk -v "LOGIN=$LOGIN" '{ print "cp "$3 $REP"/"LOGIN"/lib/" }'
par
ldd /bin/$I | awk -v "LOGIN=$LOGIN" -v "REP=$REP" '$3 ~ "^/" { print "cp "$3" "REP"/"LOGIN"/lib/" }' | bash
Tester sous Debian Etch
Un très grand NON REMERCIEMENT à Franck Huet pour son livre Debian GNU/Linux qui se targue de traiter de la sécurité sur Etch et qui à repris littéralement ce script. J'ai réellement perdu 39euros.