Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

rssh et chroot

1 réponse
Avatar
Sylvain Lévêque
Bonjour

J'aimerais débugger un chroot avec rssh, que je n'arrive pas à mettre en
place.

J'aimerais n'autoriser que scp, et qu'en upload (qu'on ne puisse pas
facilement lister les fichiers uploadés et qu'on ne puisse pas faire
sortir des fichiers de ma machine) à un utilisateur anonymous dont le
password serait connu de tous ceux qui ont besoin de le connaître.
"$CHROOT_PATH/upload" est le homedir de l'utilisateur anonymous (je
value CHROOT_PATH, bien sûr, c'est juste pour avoir une vue globale que
je fais comme si c'était une variable d'environnement).
Pour le debug, j'ai laissé sftp.

Je suis sur une Debian unstable à jour.

J'essaye trois méthodes en parallèle, pour les trois, j'en suis au même
résultat: l'authentification a l'air ok, mais tout de suite après, je
perds la connexion ssh.

1ère méthode: tout à la main, je n'ai installé que ce qu'il me semblait
nécessaire. Même si je comprends bien ce que je fais, je ne suis pas à
l'abri d'un oubli. Le principe est expliqué dans la doc du package, on
surveille les librairies nécessaires avec ldd, et on les recopie où il
faut dans le chroot.
Voilà l'arborescence actuelle:
.
|-- bin
| `-- bash
|-- lib
| |-- ld-linux.so.2
| |-- libncurses.so.5
| `-- tls
| |-- libc.so.6
| `-- libdl.so.2
|-- upload
`-- usr
`-- bin
`-- rssh

(Tiens, pour le coup, je me demande pourquoi j'ai mis bash...)

2ème méthode: j'ai laissé le script fourni par le package créer son
arborescence
Voilà ce que ça donne:
.
|-- bin
| `-- bash
|-- dev
|-- etc
| |-- group
| |-- ld-2.3.2.so
| |-- ld-linux.so.2 -> ld-2.3.2.so
| |-- ld.so.cache
| |-- ld.so.conf
| |-- nsswitch.conf
| `-- passwd
|-- lib
| |-- ld-linux.so.2
| |-- libncurses.so.5
| |-- libnss_files-2.3.2.so
| |-- libnss_files.so.2 -> libnss_files-2.3.2.so
| `-- tls
| |-- libc.so.6
| |-- libcrypt.so.1
| |-- libdl.so.2
| |-- libnsl.so.1
| |-- libresolv.so.2
| `-- libutil.so.1
|-- upload
`-- usr
|-- bin
| |-- rssh
| `-- scp
`-- lib
|-- i686
| `-- cmov
| `-- libcrypto.so.0.9.7
|-- libz.so.1
|-- openssh
| `-- sftp-server
`-- rssh
`-- rssh_chroot_helper


3ème méthode: basée sur
http://www.open-organizations.org/view/Socialtools/StandardRssh et le
script make-rssh-chroot.sh, que j'ai mis à jour au niveau des chemins et
des versions de librairies, mais sans toucher au reste (d'où des
dossiers www)

Voilà, ce n'est pas très propre:
.
|-- bin
| |-- cp
| |-- ls
| |-- mkdir
| |-- mv
| |-- rm
| `-- rmdir
|-- dev
| |-- null
| `-- zero
|-- etc
|-- lib
| |-- ld-2.3.2.so
| |-- ld-linux.so.2 -> ld-2.3.2.so
| |-- libc-2.3.2.so
| |-- libc.so.6 -> libc-2.3.2.so
| |-- libcrypt-2.3.2.so
| |-- libcrypt.so.1 -> libcrypt-2.3.2.so
| |-- libdl-2.3.2.so
| |-- libdl.so.2 -> libdl-2.3.2.so
| |-- libncurses.so.5 -> libncurses.so.5.4
| |-- libncurses.so.5.4
| |-- libnsl-2.3.2.so
| |-- libnsl.so.1 -> libnsl-2.3.2.so
| |-- libpthread-0.10.so
| |-- libpthread.so.0 -> libpthread-0.10.so
| |-- librt-2.3.2.so
| |-- librt.so.1 -> librt-2.3.2.so
| |-- libutil-2.3.2.so
| `-- libutil.so.1 -> libutil-2.3.2.so
|-- upload
|-- usr
| |-- bin
| |-- lib
| | |-- libcrypto.so -> libcrypto.so.0.9.7
| | |-- libcrypto.so.0.9.7
| | |-- libz.so -> libz.so.1
| | |-- libz.so.1 -> libz.so.1.2.2
| | `-- libz.so.1.2.2
| `-- local
| |-- rssh
| | |-- bin
| | `-- libexec
| `-- ssh
| |-- bin
| `-- libexec
`-- var
`-- www

Dans les trois cas, mes arborescences sont la propriété de root:root
(755), hormis les dossiers "upload" qui appartiennent à
anonymous:anonymous (755).

Pour tester les trois configurations, je touche à deux fichiers:
- /etc/rssh.conf, qui contient
user=anonymous:277:00011:$CHROOT_PATH
- /etc/passwd, qui contient
anonymous:x:1009:1009:Compte RSSH,,,:$CHROOT_PATH/upload:/usr/bin/rssh

Tout ça m'a l'air correct.
Si j'essaye de faire un scp sur ce compte, je peux observer plusieurs
choses:
`sshd -ddde` sort beaucoup d'information, la seule qui me semble
intéressante étant que la phase d'authentification se déroule
correctement, puis que la connexion est fermée à l'initiative du client.

Côté scp, voilà le retour (légèrement adapté pour la cohérence avec ce
qui précède):

~$ scp README anonymous@host:
Password:
debug3: Normalising mapped IPv4 in IPv6 address
debug3: Copy environment: LANG=fr_FR@euro
Environment:
USER=anonymous
LOGNAME=anonymous
HOME=$CHROOT_PATH/upload
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
MAIL=/var/mail/anonymous
SHELL=/usr/bin/rssh
SSH_CLIENT=82.225.48.136 37030 22
SSH_CONNECTION=82.225.48.136 37030 10.0.0.1 22
LANG=fr_FR@euro
debug3: channel 0: close_fds r -1 w -1 e -1 c -1
lost connection

Enfin, dans le syslog, je récupère:
Jun 10 22:25:26 voracio rssh[8989]: setting log facility to LOG_USER
Jun 10 22:25:26 voracio rssh[8989]: setting umask to 022
Jun 10 22:25:26 voracio rssh[8989]: line 45: configuring user anonymous
Jun 10 22:25:26 voracio rssh[8989]: setting anonymous's umask to 0277
Jun 10 22:25:26 voracio rssh[8989]: allowing scp to user anonymous
Jun 10 22:25:26 voracio rssh[8989]: allowing sftp to user anonymous
Jun 10 22:25:26 voracio rssh[8989]: chrooting anonymous to $CHROOT_PATH
Jun 10 22:25:26 voracio rssh[8989]: chroot cmd line:
/usr/lib/rssh/rssh_chroot_helper "$CHROOT_PATH" 1 "/upload" scp -t .

Une chose à noter: si j'utilise le chroot de la deuxième méthode (script
fourni dans le paquet), j'obtiens en prime dans le résultat du scp un
"unknown user 1009" dont je n'ai pas encore réussi à déterminer la
cause. 1009 est bien l'uid de l'utilisateur anonymous.

Mes questions sont les suivantes:
- pourquoi est-ce que le client ferme la connexion ssh?
- avez-vous des astuces pour m'aider à glaner plus d'informations sur
les raisons de l'échec?

Merci d'avoir lu tout ça et pour le coup de main :)
--
Sylvain






--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

1 réponse

Avatar
sebastien.barthelemy
Sylvain Lévêque writes:

|-- etc
| |-- group
| |-- ld-2.3.2.so
| |-- ld-linux.so.2 -> ld-2.3.2.so
| |-- ld.so.cache
| |-- ld.so.conf
| |-- nsswitch.conf
| `-- passwd



- /etc/passwd, qui contient
anonymous:x:1009:1009:Compte RSSH,,,:$CHROOT_PATH/upload:/usr/bin/rssh



Une chose à noter: si j'utilise le chroot de la deuxième méthode (s cript
fourni dans le paquet), j'obtiens en prime dans le résultat du scp un
"unknown user 1009" dont je n'ai pas encore réussi à déterminer la
cause. 1009 est bien l'uid de l'utilisateur anonymous.



je pense que ton utilisateur anonymous doit être dans /etc/passwd _et_
dans $CHROOT_PATH/etc/passwd (qui me semble nécessaire, or il n'est
présent que dans la "2ième méthode")

Si tu as ajouté anonymous au système après la création du chroot, i l n'est
mentionné que dans le premier fichier, ça doit être l'explication.

++

--
Sébastien BARTHÉLEMY