Probléme de connexion rssh chrooté

Bonjour à tous,

Je suis en train de tenter de mettre en place sur ma machine Debian Etch une connexion sftp.

J’ai créé un user avec l’utilisation du shell rssh afin de lui interdire les connexions autre que sftp.

dans le fichier rssh.conf j’ai bien mis :

logfacility = LOG_USER allowsftp

J’ai testé et ça fonctionne correctement.

Mon probléme est lorsque j’essai de chrooter l’utilisateur.

Dans son répertoire de connexion j’ai copier rssh, sftp et scp, ainsi que toutes leur dépendance en respectant le chemin des fichiers depuis le répertoire chrooté.

Dans mon rssh.conf, j’ai tenté un chroot à l’aide de la ligne

et également testé avec :

user = "nomuser:011:00010:/home/sftp"

Mais dès l’instant que je met l’une ou l’autre de ces lignes, si je tente une connexion sftp, après saisie du password j’ai systématiquement un : “Connection closed”

Et donc impossible de me connecter :frowning:

Quelqu’un aurait t’il une idée de mon probléme ???

Merci d’avance…

Cordialement,
Dominique

C’est bon,

à chercher un peu partout sur internet ça à fini par fonctionner.

Merci,
Domi

Arrrgh ! salut ! j’ai le même problème ! comment t’as fais ?

Dis moi plutôt ce que tu as fais, je te dirais ce que j’ai fait de plus.

Et bien, j’ai plus ou moins suivi les instructions de plusieurs tutos.

http://lea-linux.org/cached/index/SFTP_%26_RSSH_:_Cr%C3%A9er_un_serveur_de_fichiers_s%C3%A9curis%C3%A9.html#

http://www.cyberciti.biz/tips/howto-linux-unix-rssh-chroot-jail-setup.html

http://gentoo-wiki.com/HOWTO_SFTP_Server_(chrooted,_without_shell)

Par contre j’ai chrooté ailleurs ( dans “/CHROOT_RSSH/” à la racine)

J’ai donc dans ce “/CHROOT_RSSH/” :

/CHROOT_RSSH/
|-- dev/
|   `-- null
|-- etc/
|   |-- group
|   |-- hosts
|   |-- ld.so.cache
|   |-- ld.so.conf
|   |-- ld.so.conf.d/
|   |   `-- i486-linux-gnu.conf
|   |-- nsswitch.conf
|   |-- passwd
|   |-- resolv.conf
|   `-- shadow
|-- home/
|   `-- User1/
|-- lib/
|   |-- ld-linux.so.2*
|   |-- libcom_err.so.2
|   |-- libncurses.so.5
|   |-- libnss_compat.so.2
|   `-- tls/
|       |-- i686/
|       |   `-- cmov/
|       |       |-- libc.so.6
|       |       |-- libcrypt.so.1
|       |       |-- libdl.so.2
|       |       |-- libnsl.so.1
|       |       |-- libnss_compat.so.2
|       |       |-- libresolv.so.2
|       |       `-- libutil.so.1
|       `-- libnss_compat.so.2
`-- usr/
    |-- bin/
    |   |-- rssh*
    |   `-- sftp*
    `-- lib/
        |-- i686/
        |   `-- cmov/
        |       `-- libcrypto.so.0.9.8
        |-- libedit.so.2
        |-- libgssapi_krb5.so.2
        |-- libk5crypto.so.3
        |-- libkrb5.so.3
        |-- libkrb5support.so.0
        |-- libz.so.1
        |-- openssh/
        |   `-- sftp-server/
        |       `-- sftp-server*
        `-- rssh/
            `-- rssh_chroot_helper/
                `-- rssh_chroot_helper*

J’ai aussi modifié mon /etc/adduser.conf de la façon suivante :

DSHELL=/CHROOT_RSSH/usr/bin/rssh
DHOME=/CHROOT_RSSH/home
GROUPHOMES=no
LETTERHOMES=no
SKEL=/etc/skel_rssh
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999
FIRST_UID=1000
LAST_UID=29999
USERGROUPS=yes
USERS_GID=100
DIR_MODE=0755
SETGID_HOME=no
QUOTAUSER=""
SKEL_IGNORE_REGEX="dpkg-(old|new|dist)"
EXTRA_GROUPS="sftp"
ADD_EXTRA_GROUPS=1

Pour info, mon dossier “/etc/skel_rssh/” est vide.

Et voici mon /etc/rssh.conf :

logfacility = LOG_USER
allowsftp
umask = 022
chrootpath = /CHROOT_RSSH

Mon /etc/ssh/sshd_config :

# What ports, IPs and protocols we listen for
Port 22
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no

PermitEmptyPasswords no
ChallengeResponseAuthentication no

PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

AllowUsers User1 User2
DenyUsers distcc root mysql ftp

Voilà ce que disent les logs :

auth.log :

Feb  2 12:33:51 hobbit sshd[2326]: Accepted password for User1 from 192.168.0.2 port 1415 ssh2
Feb  2 12:33:51 hobbit sshd[2328]: (pam_unix) session opened for user User1 by (uid=0)
Feb  2 12:33:51 hobbit sshd[2328]: subsystem request for sftp
Feb  2 12:33:51 hobbit sshd[2328]: (pam_unix) session closed for user User1

user.log :

Feb  2 12:33:56 hobbit rssh[2333]: allowing sftp to all users
Feb  2 12:33:56 hobbit rssh[2333]: setting umask to 022
Feb  2 12:33:56 hobbit rssh[2333]: chrooting all users to /CHROOT_RSSH
Feb  2 12:33:56 hobbit rssh[2333]: chroot cmd line: /usr/lib/rssh/rssh_chroot_helper 2 "/usr/lib/openssh/sftp-server"

debug.log :

Feb  2 12:33:56 hobbit rssh[2333]: allowing sftp to all users
Feb  2 12:33:56 hobbit rssh[2333]: setting umask to 022
Feb  2 12:33:56 hobbit rssh[2333]: chrooting all users to /CHROOT_RSSH

Par contre je vois que je n’ai pas la même chose dans mes dossiers “/CHROOT_RSSH/lib/” et "/CHROOT_RSSH/usr/lib/"
Comme j’ignore à quoi ça sert, je ne sais pas si le pb vient de là ou d’autres causes.

Pour info je fais les tests de connexion

  • en local directement sur le serveur, avec un compte utilisateur par la commande “sftp”
  • en distant depuis un autre PC du lan par “Filezilla” (tests sftp) ou “putty” (test ssh)
  • tout fonctionne pour un utilisateur non chrooté, mais pour mon User1 (chrooté) rien ne va plus.

J’ai fais à peu près tout ce que tu as fait, sauf que moi je n’ai pas touché au /etc/adduser.conf

Déjà pour être sur que ton user se connecte, dans le /etc/rssh.conf, si tu met en “rem” ta ligne chrootpath = /CHROOT_RSSH est-ce que ton user arrive à se connecter ?

Si ça connecte, c’est que le probléme vient bien du coté chroot, sinon faut chercher coté connexion ssh.

ensuite j’ai créé le fichier “null” à l’aide de la commande :

est-ce que tu l’as fait ?

Le fichier /etc/passwd de ta prison comprend t’il bien l’utilisateur chrooté et les bon paramêtre ?

tu peux si tu veux executer le code ci-dessous, cela te créera un fichier passwd dans ta prison avec tous les utilisateurs de ton /etc/passwd
Tu peux ensuite si tu le veux supprimer de ce fichier /CHROOT_RSSH/etc/passwd tous les utilisateurs qui n’ont rien à y faire.
N’oubli pas de mettre un chmod 600 sur ce fichier.

// on recrée un fichier propre.
echo "" > /home/etc/passwd
cat /etc/passwd | awk 'BEGIN { FS = ":" } {print $1":"$2":"$3":"$4"::/"$1":/usr/bin/rssh"}' >> /CHROOT_RSSH/etc/passwd

essais déjà ça et dis moi si ça change quelquechose.

Merci pour ta réponse

Pour répondre à tes questions,

  1. J’ai fais l’essai comme tu as dis en desactivant le “chrootpath” dans /etc/rssh.conf.
    En faisant cela, mon User1 arrive bien à se connecter en ssh et en sftp (mais n’est pas chrooté).
    Si je réactive le “chrootpath”, rebelotte, les portes du paradis se referment devant lui :cry:

  2. J’ai aussi créé le ficher “null”.
    Mais bon, pour en avoir le coeur net, je l’ai supprimé et recréé par :

mknod -m 666 /CHROOT_RSSH/dev/null c 1 3
J’ai refait un essai de connexion juste après, sans succès.

  1. Pffff, quel con je suis. La création de mon User par adduser alimente bien “/etc/passwd” mais pas "/CHROOT_RSSH/etc/passwd"
    j’ai donc fait un

egrep User1 /etc/passwd > /CHROOT_RSSH/etc/passwd
Je me retrouve avec un /CHROOT_RSSH/etc/passwd qui ne contient que la ligne suivante

User1:x:1002:1002:,,,:/CHROOT_RSSH/home/User1:/CHROOT_RSSH/usr/bin/rssh
J’ai refais un test après ça mais … sans davantage de succès.

Alors je me suis dit "c’est peut être parce que je n’ai pas copié le fichier “/etc/shadow” dans "/CHROOT_RSSH/etc"
J’ai donc aussi fait un

egrep User1 /etc/shadow > /CHROOT_RSSH/etc/shadow
Je me retrouve donc avec un “/CHROOT_RSSH/etc/shadow” d’une seule ligne qui contient

User1:$1$612o.x5f$GxUinNGq8YwsgF3jRqQ1H0:13910:0:15:7:::
Re-essai, … Re-echec…

:-/

( j’ai refais la liste de mon repertoire “/CHROOT_RSSH” dans mon 2eme post si tu veux y jeter un oeil à nouveau )

pour le shadow, moi il n’est pas dans mon chroot.

Par contre en regardant ton passwd du chroot

ton user étant en prison, il ne voit pas le répertoire CHROOT_RSSH car pour lui c’est sa racine /

il faut donc remplacer par :

A voir si le probléme est là, mais ça déjà c’est pas bon car le user1 ne voit pas les répertoire que tu lui donne.

Dans “/CHROOT_RSSH/etc/” j’ai fais les “chmod” pour correspondre à ceux de “/etc”.
644 sur passwd
640 sur shadow

  • J’ai désactivé le fichier “/CHROOT_RSSH/etc/shadow”
  • J’ai modifié “/CHROOT_RSSH/etc/passwd” en :

… Pas d’amélioration.


Par curiosité j’ai fait le contraire aussi pour voir.

  • J’ai remis en place “/CHROOT_RSSH/etc/shadow”
  • J’ai désactivé “/CHROOT_RSSH/etc/passwd”

… Pas d’amélioration.

y’a un fichier que tu n’as pas copier dans le répertoire /CHROOT_RSSH/lib

c’est un fichier à rajouter sur Debian.

Je n’ai pas le temps immédiatement, mais si ça marche toujours pas après ça, je vais comparer la liste des librairie que tu as copié avec les miennes voir si il en manque pas une autre.

Effectivement, le fichier que tu indique n’était pas dans le /CHROOT_RSSH/lib/…

J’ai fais un :

ca m’a donné :

/lib/libnss_compat.so.2 /lib/tls/i686/cmov/libnss_compat.so.2 /lib/tls/libnss_compat.so.2

que j’ai transformé en :

cp /lib/libnss_compat.so.2 /CHROOT_RSSH/lib/libnss_compat.so.2 cp /lib/tls/i686/cmov/libnss_compat.so.2 /CHROOT_RSSH/lib/tls/i686/cmov/libnss_compat.so.2 cp /lib/tls/libnss_compat.so.2 /CHROOT_RSSH/lib/tls/libnss_compat.so.2

Puis j’ai fais un test de connexion, mais User1 ne se connecte pas.

J’ai réactualisé la liste du repertoire /CHROOT_RSSH/ dans mon 2e post.

Bon … j’efface tout et je recommance.

============

  1. Comme dit dans le “man rssh”, j’édite le fichier “/usr/share/doc/rssh/examples/mkchroot.sh”
cd /usr/share/doc/rssh/examples
cp mkchroot.sh mkchroot.sh_old
nano mkchroot.sh

Après un petit :

locate sftp-server; locate rssh_chroot_helper
je remplace les lignes :
sftp_server_path="/usr/libexec/openssh/sftp-server"
chroot_helper_path="/usr/libexec/rssh_chroot_helper"

par les lignes :
sftp_server_path="/usr/lib/openssh/sftp-server"
chroot_helper_path="/usr/lib/rssh/rssh_chroot_helper"

Puis j’execute

Le contenu du fichier “log_mkchroot.txt” est le suivant :

NOT changing owner of root jail. 
NOT changing perms of root jail. 
setting up /CHROOT_RSSH/usr/bin
setting up /CHROOT_RSSH/usr/lib/openssh
setting up /CHROOT_RSSH/usr/lib/rssh
Copying libraries for /usr/bin/scp.
	(0xffffe000)
	/lib/tls/i686/cmov/libresolv.so.2
	/usr/lib/i686/cmov/libcrypto.so.0.9.8
	/lib/tls/i686/cmov/libutil.so.1
	/usr/lib/libz.so.1
	/lib/tls/i686/cmov/libnsl.so.1
	/lib/tls/i686/cmov/libcrypt.so.1
	/usr/lib/libgssapi_krb5.so.2
	/usr/lib/libkrb5.so.3
	/usr/lib/libk5crypto.so.3
	/lib/libcom_err.so.2
	/usr/lib/libkrb5support.so.0
	/lib/tls/i686/cmov/libc.so.6
	/lib/tls/i686/cmov/libdl.so.2
Copying libraries for /usr/lib/openssh/sftp-server.
	(0xffffe000)
	/lib/tls/i686/cmov/libresolv.so.2
	/usr/lib/i686/cmov/libcrypto.so.0.9.8
	/lib/tls/i686/cmov/libutil.so.1
	/usr/lib/libz.so.1
	/lib/tls/i686/cmov/libnsl.so.1
	/lib/tls/i686/cmov/libcrypt.so.1
	/usr/lib/libgssapi_krb5.so.2
	/usr/lib/libkrb5.so.3
	/usr/lib/libk5crypto.so.3
	/lib/libcom_err.so.2
	/usr/lib/libkrb5support.so.0
	/lib/tls/i686/cmov/libc.so.6
	/lib/tls/i686/cmov/libdl.so.2
Copying libraries for /usr/bin/rssh.
	(0xffffe000)
	/lib/tls/i686/cmov/libc.so.6
Copying libraries for /usr/lib/rssh/rssh_chroot_helper.
	(0xffffe000)
	/lib/tls/i686/cmov/libc.so.6
copying name service resolution libraries...
	lib/libnss_compat-2.3.6.so
	lib/libnss_compat.so.2
	lib/libnss_files-2.3.6.so
	lib/libnss_files.so.2
Setting up /etc in the chroot jail
Chroot jail configuration completed.

NOTE: if you are not using the passwd file for authentication,
you may need to copy some of the /lib/libnss_* files into the jail.

NOTE: you must MANUALLY edit your syslog rc script to start syslogd
with appropriate options to log to /CHROOT_RSSH/dev/log.  In most cases,
you will need to start syslog as:

   /sbin/syslogd -a /CHROOT_RSSH/dev/log

NOTE: we make no guarantee that ANY of this will work for you... if it
doesn't, you're on your own.  Sorry!

à l’écran j’obtiens les lignes suivantes :

cp: ne peut évaluer `(0xffffe000)': Aucun fichier ou répertoire de ce type
cp: ne peut évaluer `(0xffffe000)': Aucun fichier ou répertoire de ce type
cp: ne peut évaluer `(0xffffe000)': Aucun fichier ou répertoire de ce type
cp: ne peut évaluer `(0xffffe000)': Aucun fichier ou répertoire de ce type
tar: Retrait de « / » de tête des noms des membres
cp: omission du répertoire `/etc/ld.so.conf.d'

Ensutie, le “man rssh” dit qu’il faut copier dans le CHROOT, les librairies de “scp”, “sftp-server”, “rssh_chroot_helper”.
Et qu’il faut vérifier ces librairies par une commande “ldd”

Moi j’ai envie de rajouter à cette liste “sftp” et “rssh”.

Ce qui me donne une liste de librairies à vérifier pour :

  • scp
  • sftp
  • rssh
  • sftp-server
  • rssh-chroot-helper

C’est partie pour un :

qui me donne :

/bin/rssh
/CHROOT_RSSH/usr/bin/rssh
/CHROOT_RSSH/usr/bin/sftp
/CHROOT_RSSH/usr/lib/openssh/sftp-server
/CHROOT_RSSH/usr/lib/openssh/sftp-server/sftp-server
/CHROOT_RSSH/usr/lib/rssh
/CHROOT_RSSH/usr/lib/rssh/rssh_chroot_helper
/CHROOT_RSSH/usr/lib/rssh/rssh_chroot_helper/rssh_chroot_helper
/etc/logcheck/ignore.d.server/rssh
/etc/rssh.conf
/etc/skel_rssh
/lib/iptables/libipt_dscp.so
/lib/modules/2.6.18-5-686/kernel/drivers/hwmon/fscpos.ko
/lib/modules/2.6.18-5-686/kernel/net/ipv4/netfilter/ipt_dscp.ko
/usr/bin/rssh
/usr/bin/scp
/usr/bin/sftp
/usr/lib/openssh/sftp-server
/usr/lib/rssh
/usr/lib/rssh/rssh_chroot_helper
/usr/lib/sftp-server
/usr/share/console/ps2-to-riscpc
/usr/share/doc/rssh
/usr/share/doc/rssh/changelog.Debian.gz
/usr/share/doc/rssh/changelog.gz
/usr/share/doc/rssh/CHROOT.gz
/usr/share/doc/rssh/copyright
/usr/share/doc/rssh/examples
/usr/share/doc/rssh/examples/conf_convert.sh
/usr/share/doc/rssh/examples/mkchroot.sh
/usr/share/doc/rssh/NEWS.Debian.gz
/usr/share/doc/rssh/README
/usr/share/doc/rssh/README.Debian
/usr/share/doc/rssh/SECURITY.gz
/usr/share/doc/rssh/TODO
/usr/share/man/fr/man3/wcscpy.3.gz
/usr/share/man/man1/rssh.1.gz
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man5/rssh.conf.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/selinux/refpolicy-targeted/rssh.pp
/var/cache/apt/archives/rssh_2.3.2-2_i386.deb
/var/lib/dpkg/info/rssh.conffiles
/var/lib/dpkg/info/rssh.config
/var/lib/dpkg/info/rssh.list
/var/lib/dpkg/info/rssh.md5sums
/var/lib/dpkg/info/rssh.postinst
/var/lib/dpkg/info/rssh.postrm
/var/lib/dpkg/info/rssh.templates

La dedans il n’y en a que quelques uns qui me semblent interressants :

/usr/bin/rssh
/usr/bin/scp
/usr/bin/sftp
/usr/lib/openssh/sftp-server
/usr/lib/rssh/rssh_chroot_helper

Je vais lancer des commandes “ldd” dessus pour lister leurs librairies.

Je me programme donc un petit script qui va faire ça pour moi et dont voici le code :

[code]echo === /usr/bin/rssh === >> /home/fabrozor/log_ldd.rtf;
ldd /usr/bin/rssh >> /home/fabrozor/log_ldd.rtf;

echo === /usr/bin/scp === >> /home/fabrozor/log_ldd.rtf;
ldd /usr/bin/scp >> /home/fabrozor/log_ldd.rtf;

echo === /usr/bin/sftp === >> /home/fabrozor/log_ldd.rtf;
ldd /usr/bin/sftp >> /home/fabrozor/log_ldd.rtf;

echo === /usr/lib/openssh/sftp-server === >> /home/fabrozor/log_ldd.rtf;
ldd /usr/lib/openssh/sftp-server >> /home/fabrozor/log_ldd.rtf;

echo === /usr/lib/rssh/rssh_chroot_helper === >> /home/fabrozor/log_ldd.rtf;
ldd /usr/lib/rssh/rssh_chroot_helper >> /home/fabrozor/log_ldd.rtf;
[/code]

Ce qui me génère un fichier “log_ldd.rtf” dont voici le contenu :

=== /usr/bin/rssh ===
	linux-gate.so.1 =>  (0xffffe000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e33000)
	/lib/ld-linux.so.2 (0xb7f6b000)
=== /usr/bin/scp ===
	linux-gate.so.1 =>  (0xffffe000)
	libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7fa3000)
	libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e69000)
	libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7e64000)
	libz.so.1 => /usr/lib/libz.so.1 (0xb7e50000)
	libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7e3a000)
	libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7e0c000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7df0000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7d74000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7d4e000)
	libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7d4b000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7d46000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7c15000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7c11000)
	/lib/ld-linux.so.2 (0xb7fbd000)
=== /usr/bin/sftp ===
	linux-gate.so.1 =>  (0xffffe000)
	libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7f66000)
	libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e2c000)
	libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7e27000)
	libz.so.1 => /usr/lib/libz.so.1 (0xb7e13000)
	libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7dfd000)
	libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7dcf000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7db3000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7d37000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7d11000)
	libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7d0e000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7d09000)
	libedit.so.2 => /usr/lib/libedit.so.2 (0xb7cee000)
	libncurses.so.5 => /lib/libncurses.so.5 (0xb7cad000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7b7c000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7b77000)
	/lib/ld-linux.so.2 (0xb7f80000)
=== /usr/lib/openssh/sftp-server ===
	linux-gate.so.1 =>  (0xffffe000)
	libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7f13000)
	libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7dd9000)
	libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7dd4000)
	libz.so.1 => /usr/lib/libz.so.1 (0xb7dc0000)
	libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7daa000)
	libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7d7c000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7d60000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7ce4000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7cbe000)
	libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7cbb000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7cb6000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7b85000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7b81000)
	/lib/ld-linux.so.2 (0xb7f2d000)
=== /usr/lib/rssh/rssh_chroot_helper ===
	linux-gate.so.1 =>  (0xffffe000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e4c000)
	/lib/ld-linux.so.2 (0xb7f84000)

Bon, faut que je vérifie si j’ai tout ça dans mon /CHROOT_RSSH maintenant :-/
Mais ce fichier n’est pas exploitable tel qu’il est. Il faut donc que je le modifie.
Je souhaite virer le debut de chaque ligne jusqu’à "=> " et virer la fin de chaque ligne à partir de " ("

Je vais donc me creuse le crane pour trouver les commandes qui feront ça …
Après quelques aspirines, j’obtiens les formules magiques pour les debuts de lignes :
Dans le fichier “log_ldd.rtf_bkp”, je remplace tout ce qui est avant "=> " par un vide (donc je supprime), et j’ecris le résultat dans un fichier “log_ldd_deb.rtf”

 sed -e 's/^.*=> //g' log_ldd.rtf_bkp > log_ldd_deb.rtf

et la commande magique pour les fins de lignes :
Dans le fichier “log_ldd_deb.rtf”, je remplace tout ce qui est après " (" par des vides (donc je supprime), et j’ecris le résultat dans le fichier “log_ldd_fin.rtf”.

 sed -e 's/\((.*$\)//g' log_ldd_deb.rtf > log_ldd_fin.rtf

J’obtiens le fichier “épuré” suivant :

hobbit:/home/fabrozor# cat log_ldd_fin.rtf

=== /usr/bin/rssh ===
/lib/tls/i686/cmov/libc.so.6
        /lib/ld-linux.so.2

=== /usr/bin/scp ===
/lib/tls/i686/cmov/libresolv.so.2
/usr/lib/i686/cmov/libcrypto.so.0.9.8
/lib/tls/i686/cmov/libutil.so.1
/usr/lib/libz.so.1
/lib/tls/i686/cmov/libnsl.so.1
/lib/tls/i686/cmov/libcrypt.so.1
/usr/lib/libgssapi_krb5.so.2
/usr/lib/libkrb5.so.3
/usr/lib/libk5crypto.so.3
/lib/libcom_err.so.2
/usr/lib/libkrb5support.so.0
/lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libdl.so.2
        /lib/ld-linux.so.2

=== /usr/bin/sftp ===
/lib/tls/i686/cmov/libresolv.so.2
/usr/lib/i686/cmov/libcrypto.so.0.9.8
/lib/tls/i686/cmov/libutil.so.1
/usr/lib/libz.so.1
/lib/tls/i686/cmov/libnsl.so.1
/lib/tls/i686/cmov/libcrypt.so.1
/usr/lib/libgssapi_krb5.so.2
/usr/lib/libkrb5.so.3
/usr/lib/libk5crypto.so.3
/lib/libcom_err.so.2
/usr/lib/libkrb5support.so.0
/usr/lib/libedit.so.2
/lib/libncurses.so.5
/lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libdl.so.2
        /lib/ld-linux.so.2

=== /usr/lib/openssh/sftp-server ===
/lib/tls/i686/cmov/libresolv.so.2
/usr/lib/i686/cmov/libcrypto.so.0.9.8
/lib/tls/i686/cmov/libutil.so.1
/usr/lib/libz.so.1
/lib/tls/i686/cmov/libnsl.so.1
/lib/tls/i686/cmov/libcrypt.so.1
/usr/lib/libgssapi_krb5.so.2
/usr/lib/libkrb5.so.3
/usr/lib/libk5crypto.so.3
/lib/libcom_err.so.2
/usr/lib/libkrb5support.so.0
/lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libdl.so.2
        /lib/ld-linux.so.2

=== /usr/lib/rssh/rssh_chroot_helper ===
/lib/tls/i686/cmov/libc.so.6
        /lib/ld-linux.so.2

Ca prend forme mais ça n’est pas encore exploitable.
Il faut que je vérifie si chaque ligne de cette liste existe dans “/CHROOT_RSSH/”

Je me fais donc un petit script qui va lire chaque ligne du fichier “log_ldd_fin.rtf” et vérifier si elle existe dans le repertoire “/CHROOT_RSSH/”.
Ce script ecrira le résultat dans un fichier de log “compare_resultat.rtf”.
Si la ligne existe ça ecrira “OK”, si la ligne n’existe pas ça ecrira “XXX”.
Voilà le script “comparaison_chroot_rssh” :

#! /bin/bash

while read line
do
        {
        echo "$line";
        if [ -f "$line" ] ;
        then echo "OK";
        else echo "XXX";
        fi;
        echo '------------------------------------------';
        }

done < log_ldd_fin.rtf

Après un p’tit “chmod +x comparaison_chroot_rssh”, j’execute

et je lis le fichier “compare_resultat.rtf”

=== /usr/bin/rssh ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/ld-linux.so.2
OK
------------------------------------------
=== /usr/bin/scp ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
OK
------------------------------------------
=== /usr/bin/sftp ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/usr/lib/libedit.so.2
OK
------------------------------------------
/lib/libncurses.so.5
OK
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
OK
------------------------------------------
=== /usr/lib/openssh/sftp-server ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libresolv.so.2
OK
------------------------------------------
/usr/lib/i686/cmov/libcrypto.so.0.9.8
OK
------------------------------------------
/lib/tls/i686/cmov/libutil.so.1
OK
------------------------------------------
/usr/lib/libz.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libnsl.so.1
OK
------------------------------------------
/lib/tls/i686/cmov/libcrypt.so.1
OK
------------------------------------------
/usr/lib/libgssapi_krb5.so.2
OK
------------------------------------------
/usr/lib/libkrb5.so.3
OK
------------------------------------------
/usr/lib/libk5crypto.so.3
OK
------------------------------------------
/lib/libcom_err.so.2
OK
------------------------------------------
/usr/lib/libkrb5support.so.0
OK
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/tls/i686/cmov/libdl.so.2
OK
------------------------------------------
/lib/ld-linux.so.2
OK
------------------------------------------
=== /usr/lib/rssh/rssh_chroot_helper ===
XXX
------------------------------------------

XXX
------------------------------------------
/lib/tls/i686/cmov/libc.so.6
OK
------------------------------------------
/lib/ld-linux.so.2
OK
------------------------------------------

(PS : j’édite ce poste au fur et à mesure que j’avance)

Les librairies semblent toutes être là.

Je fais un test de connexion sftp.

Ca ne marche pas.

Voici ce que j’ai moi dans le chroot :

/REP_Chroot/
|--dev
|  `--null
|--etc
|  `--passwd
|--lib
|  |--ld-linux.so.2
|  |--libcom_err.so.2
|  |--libncurses.so.5
|  |--libnss_compat.so.2
|  `--tls
|     `--i686
|        `cmov
|         |--libcrypt.so.1
|         |--libc.so.6
|         |--libdl.so.2
|         |--libnsl.so.1
|         |--libresolv.so.2
|         |--libutil.so.1
|--usr
   `--bin
   |  |--rssh
   |  |--scp
   |  |--sftp
   `--lib
      |--libedit.so.2
      |--libgssapi_krb5.so.2
      |--libk5crypto.so.3
      |--libkrb5.so.3
      |--libkrb5support.so.0
      |--libz.so.1
      `--i686
      |  `--cmov
      |     |--libcrypto.so.0.9.8
      `--openssh
      |  |--sftp-server
      `--rssh
         |--rssh_chroot_helper

Voilà le mien :

/CHROOT_RSSH
|-- dev
|   `-- null
|-- etc
|   |-- ld.so.cache
|   |-- ld.so.conf
|   |-- ld.so.hwcappkgs
|   |-- nsswitch.conf
|   `-- passwd
|-- home
|   `-- User1
|-- lib
|   |-- libcom_err.so.2
|   |-- libnss_compat-2.3.6.so
|   |-- libnss_compat.so.2 -> libnss_compat-2.3.6.so
|   |-- libnss_files-2.3.6.so
|   |-- libnss_files.so.2 -> libnss_files-2.3.6.so
|   `-- tls
|       `-- i686
|           `-- cmov
|               |-- libc.so.6
|               |-- libcrypt.so.1
|               |-- libdl.so.2
|               |-- libnsl.so.1
|               |-- libresolv.so.2
|               `-- libutil.so.1
`-- usr
    |-- bin
    |   |-- rssh
    |   `-- scp
    `-- lib
        |-- i686
        |   `-- cmov
        |       `-- libcrypto.so.0.9.8
        |-- libgssapi_krb5.so.2
        |-- libk5crypto.so.3
        |-- libkrb5.so.3
        |-- libkrb5support.so.0
        |-- libz.so.1
        |-- openssh
        |   `-- sftp-server
        `-- rssh
            `-- rssh_chroot_helper

Juste une question, certainement idiote mais parfois on passe à coté des choses simples, car plus l’erreur est grosse moins on la voit (ou on y pense)

Le user qui doit se connecter en sftp a bien les droits d’accès en lecture à tous les fichiers de la prison ?
et les droits d’execution des executables de la prison ?

c’est con mais c’est le genre de connerie qui me fait parfois perdre beaucoup de temps car on cherche compliqué alors que l’erreur est devant nos yeux.