Serveur sftp, shell réduit (rssh) et chroot

Bonjour,

J’ai récemment suivi le très bon tutoriel sur le wiki.
Les causes peuvent être multiples, je doute que cela résoudra ton problème …

Voici les causes des problèmes que j’ai rencontré:

  1. Problème avec “/etc/network/interfaces”. (Erreur de débutant …)
  2. Problème avec le fichier /home/sftp/dev/null. (J’ai fait un nano lefichier, ce qui l’a détérioré …)
  3. Tentative de AllowGroups au lieu de AllowUsers qui n’a pas fonctionné dans sshd_config.

Et la dernière avec un résultat un peu comparable au tien:

  1. Problème de fstab avec /home en nodev …

[quote=“cedric058”]
Voici les causes des problèmes que j’ai rencontré:

  1. Problème avec “/etc/network/interfaces”. (Erreur de débutant …)
  2. Problème avec le fichier /home/sftp/dev/null. (J’ai fait un nano lefichier, ce qui l’a détérioré …)
  3. Tentative de AllowGroups au lieu de AllowUsers qui n’a pas fonctionné dans sshd_config.

Et la dernière avec un résultat un peu comparable au tien:

4) Problème de fstab avec /home en nodev …[/quote]
Je ne vois pas où le fstab intervient :017
explique !

en effet, n’importe quel fichier corrompu dans lib ou lib64 du chroot donne aussi ce résultat, je me souviens qu’avec libnss_files.so.2 j’avais été enmerdé avec le même log que toi.
regarde aussi dans /var/log/user.log, il donne des indications sur la séquence du chroot.

Tu peux mentionner des options de montage au fichier fstab (à la suite de defaults) pour le montage des partitions.

Genre:

Mon /home était en nodev, ce qui interdisait le fonctionnement de /home/sftp/dev/null.

[quote=“nykoos”]en effet, n’importe quel fichier corrompu dans lib ou lib64 du chroot donne aussi ce résultat, je me souviens qu’avec libnss_files.so.2 j’avais été enmerdé avec le même log que toi.
regarde aussi dans /var/log/user.log, il donne des indications sur la séquence du chroot.[/quote]
Merci pour ce log qui est plus “causant”. on y voit une erreur, en effet.

[mono]Feb 21 12:34:25 ricardo rssh[7779]: allowing sftp to all users
Feb 21 12:34:25 ricardo rssh[7779]: setting umask to 066
Feb 21 12:34:25 ricardo rssh[7779]: chrooting all users to /home/sftp
Feb 21 12:34:25 ricardo rssh[7779]: chroot cmd line: /usr/lib/rssh/rssh_chroot_helper 2 “/usr/lib/openssh/sftp-server -f LOCAL7 -l INFO”
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: new session for cesar, UID=1002
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: user’s home dir is /home/cesar
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: couldn’t find /home/cesar in chroot jail
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: chrooted to /home/sftp
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: changing working directory to / (inside jail)[/mono]

Par contre, je ne comprends pas la dernière ligne (en rouge) :017

EDIT :
[mono]root@ricardo:~# ls -al /home
total 40
drwxr-xr-x 10 root root 4096 févr. 20 14:49 .
drwxr-xr-x 23 root root 4096 mars 21 2013 …
drwxr-xr-x 2 cesar sftp 4096 févr. 20 14:49 cesar
drwx------ 2 root root 4096 oct. 25 2010 lost+found
drwxrwxrwx 4 root root 4096 janv. 12 2011 photo
drwxr-xr-x 19 ricardo ricardo 4096 févr. 6 19:48 ricardo
drwxr-xr-x 8 root root 4096 févr. 19 01:19 sftp
drwxr-xr-x 10 ricardo ricardo 4096 juil. 14 2013 transfert
drwxr-xr-x 2 root root 4096 févr. 12 2011 video[/mono]

Par contre, le chroot est dans /home/sftp , pas dans /home ,
C’est bon ou pas ?

EDIT ajouté dans le msg précédent.

la dernière ligne que tu as mis en rouge est normal, je l’ai aussi mais par contre là, c’est pas bon:

Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: user’s home dir is /home/cesar
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: couldn’t find /home/cesar in chroot jail
Feb 21 12:34:25 ricardo rssh_chroot_helper[7779]: chrooted to /home/sftp

tu devrais avoir tout les 2 /home/sftp, chez moi ces 2 lignes indique le même endroit du chroot.
que donne cat /etc/passwd | grep cesar

SUITE :
Mes autres données à comparer avec les vôtres :

[mono]root@ricardo:~# ls -l /home/sftp/
drwxr-xr-x 2 root root 4096 févr. 20 01:26 dev
drwx–x— 2 root sftp 4096 févr. 18 01:28 etc
drwx–x— 3 root sftp 4096 févr. 13 18:15 lib
drwx–x— 2 root sftp 4096 nov. 26 2010 lib64
drwxrws— 8 root sftp 4096 févr. 19 01:29 perso … Il s’agit du dossier d’échanges
drwx–x— 5 root sftp 4096 nov. 27 2010 usr

root@ricardo:~# ls -l /home/sftp/dev
srw-rw-rw- 1 root root 0 févr. 20 01:26 log
crw-rw-rw- 2 root root 1, 3 oct. 22 2012 null

root@ricardo:~# ls -l /home/sftp/etc
-rw-r–r-- 1 root root 103 févr. 21 00:42 passwd
cesar est bien présent dans ‘passwd’ avec /home/cesar:/usr/bin/rssh

root@ricardo:~# ls -l /home/sftp/lib
-rwxr-xr-x 1 root root 11648 nov. 26 2010 libcom_err.so.2
-rwxr-xr-x 1 root root 39112 nov. 26 2010 libcrypt.so.1
-rwxr-xr-x 1 root root 1375536 nov. 26 2010 libc.so.6
-rwxr-xr-x 1 root root 14616 nov. 26 2010 libdl.so.2
-rwxr-xr-x 1 root root 7736 nov. 26 2010 libkeyutils.so.1
-rwxr-xr-x 1 root root 256288 nov. 26 2010 libncurses.so.5
-rwxr-xr-x 1 root root 88968 nov. 26 2010 libnsl.so.1
-rw-r–r-- 1 root root 47520 nov. 26 2010 libnss_files.so.2
-rwxr-xr-x 1 root root 130114 nov. 26 2010 libpthread.so.0
-rwxr-xr-x 1 root root 72568 nov. 26 2010 libresolv.so.2
-rwxr-xr-x 1 root root 10560 nov. 26 2010 libutil.so.1
drwxr-xr-x 2 root root 4096 févr. 13 18:16 x86_64-linux-gnu

root@ricardo:~# ls -l /home/sftp/lib64
-rwxr-xr-x 1 root root 119288 nov. 26 2010 ld-linux-x86-64.so.2

root@ricardo:~# ls -l /home/sftp/usr
drwxr-xr-x 2 root root 4096 févr. 13 18:15 bin
drwxr-xr-x 4 root root 4096 févr. 13 18:15 lib
drwxr-xr-x 2 root root 4096 nov. 27 2010 lib64

root@ricardo:~# ls -l /home/sftp/usr/bin
-rwxr-xr-x 1 root root 117032 févr. 13 18:15 sftp

root@ricardo:~# ls -l /home/sftp/usr/lib
-rwxr-xr-x 1 root root 1667176 nov. 26 2010 libcrypto.so.0.9.8
-rwxr-xr-x 1 root root 157192 nov. 26 2010 libedit.so.2
-rwxr-xr-x 1 root root 181416 nov. 26 2010 libgssapi_krb5.so.2
-rwxr-xr-x 1 root root 154784 nov. 26 2010 libk5crypto.so.3
-rwxr-xr-x 1 root root 660264 nov. 26 2010 libkrb5.so.3
-rwxr-xr-x 1 root root 32232 nov. 26 2010 libkrb5support.so.0
-rwxr-xr-x 1 root root 93504 nov. 26 2010 libz.so.1
drwxr-xr-x 2 root root 4096 déc. 4 2010 openssh
drwxr-xr-x 2 root root 4096 févr. 13 18:15 x86_64-linux-gnu

root@ricardo:~# ls -l /home/sftp/usr/lib64
-rwxr-xr-x 1 root root 119288 nov. 27 2010 ld-linux-x86-64.so.2[/mono]

Je rajoute ta dernière demande qui semble confirmer que mon pass est bien présent où il doit être :

[mono]root@ricardo:~# cat /etc/passwd | grep cesar
cesar:x:1002:1002:cesar,:/home/cesar:/usr/bin/rssh[/mono]

ton /etc/passwd n’est pas bon, il n’indique pas le chroot de césar mais son home.

ici mon /etc/passwd (j’avais carrément chrooté sur une autre partition), chez toi tu devrais avoir /home/sftp et non pas /home/cesar

invite:x:1004:1004:,,,:/montage/partage/sftp:/usr/bin/rssh

C’est certainement un truc de ce genre.
Je m’absente 5 mn et je fais l’essai.

Alors, j’ai modifié ‘a la mano’ dans
/etc/passwd
& dans
/home/sftp/etc/passwd
ainsi :
cesar:x:1002:1002:cesar,:/home/sftp/cesar:/usr/bin/rssh

Même résultat négatif :
[mono]cesar@serveur’s password:
Connection closed[/mono]

Je regarde le log et je le recopie ici en EDIT

EDIT :

[mono]root@ricardo:~# tail /var/log/user.log
Feb 21 15:02:23 ricardo rssh_chroot_helper[7918]: could not cd to user’s home dir: /cesar
Feb 21 15:04:10 ricardo rssh[7952]: allowing sftp to all users
Feb 21 15:04:10 ricardo rssh[7952]: setting umask to 066
Feb 21 15:04:10 ricardo rssh[7952]: chrooting all users to /home/sftp
Feb 21 15:04:10 ricardo rssh[7952]: chroot cmd line: /usr/lib/rssh/rssh_chroot_helper 2 "/usr/lib/openssh/sftp-server -f LOCAL7 -l INFO"
Feb 21 15:04:10 ricardo rssh_chroot_helper[7952]: new session for cesar, UID=1002
Feb 21 15:04:10 ricardo rssh_chroot_helper[7952]: user’s home dir is /home/sftp/cesar
Feb 21 15:04:10 ricardo rssh_chroot_helper[7952]: chrooted to /home/sftp
Feb 21 15:04:10 ricardo rssh_chroot_helper[7952]: changing working directory to /cesar (inside jail)
Feb 21 15:04:10 ricardo rssh_chroot_helper[7952]: could not cd to user’s home dir: /cesar[/mono]

bon je t’ai indiqué une mauvaise piste alors, tu peux remettre ton /etc/passwd comme il l’était, si je me souviens bien j’avais du modifié le mien pour changer le chemin de dossier par défaut dans le chroot.
là je vois plus trop, et c’est exactement pareil si tu recréais un nouvel utilisateur ?

dans ce tuto:
#adduser machin --shell /usr/bin/rssh
#grep ‘^machin:’ /etc/passwd >> /home/sftp/etc/passwd

et rajouter machin dans sshd_config pour tester.

Ça, j’ai déjà essayé plusieurs fois, donc inutile de retester.
J’avais replacé déjà les pass comme avant.
Par contre, je viens d’essayer d’entrer de nouveau dans mon ancien serveur et, contrairement à ce que je pensais, il est encore exploitable en interne,
ET,
je viens de le tester avec un “machin” qui aboutit correctement.
Bien sûr, c’est en interne 192.168.0.X mais ça va me servir pour comparer tous les fichiers et dossiers concernés.
Je reviendrai bientôt pour donner des nouvelles.
Merci encore de l’aide :006

Affaire règlée : je suis dans l’impossibilité de le faire;
Mon serveur est déjà dans un univers chrooté et on ne peut pas faire un chroot dans un chroot.
ce n’est pas grave, ce sftp ne sert que rarement et je peux le faire par l’intermédiaire d’une autre machine si besoin s’en fait sentir.
Je suis quand même rassuré, je n’avais pas fait d’erreur.
Merci de l’aide quand même.

[quote=“ricardo”]Affaire règlée : je suis dans l’impossibilité de le faire;
Mon serveur est déjà dans un univers chrooté et on ne peut pas faire un chroot dans un chroot.
[/quote]

pas très clair, si c’est par exemple sur un vps, cela devrait être tansparent puisque tu as accès à un système à part entière, c’est pareil qu’une virtual box non ?

et si tu essayais un chroot sftp sans passer par rssh:
j’aimerais avoir ton avis, j’envisage d’utiliser un vps.

#le répertoire de chroot doit appartenir à root:sftp impérativement avec droits 750 sinon “Write failed: Broken pipe”

création de l'utilisateur invite (sans shell,il ne pourra faire que du sftp) adduser --shell /bin/false invite addgroup sftp #on ajoute invite dans le groupe sftp adduser invite sftp #le répertoire du chroot doit appartenir à root:sftp impérativement avec droits 750 sinon message d'erreur "Write failed: Broken pipe" mkdir /sftp chown root:sftp sftp chmod 750 /sftp

ajouter dans sshd_config

AllowUsers invite AllowGroups sftp Subsystem sftp internal-sftp -f AUTH -l VERBOSE Match Group sftp ChrootDirectory /sftp

ne pas oublier de commenter la ligne:
#Subsystem sftp /usr/lib/openssh/sftp-server -f LOCAL7 -l INFO

et bien sûr créer un répertoire partage dans le chroot avec les droits écritures pour les utilisateurs sftp.

Tout ce que tu décris, je l’ai vérifié mais j’ai eu l’assurance qu’il m’était impossible de faire un chroot dans mon serveur qui est dans un conteneur LXC lui-même chrooté.
Il s’agissait pour moi d’installer ce sftp sans en avoir vraiment l’utilité, par simple plaisir de tester :wink:
D’ailleurs, si j’en avais véritablement besoin, je pourrais me servir de mon ancien serveur qui fonctionne encore. Il me suffirait de le laisser branché le temps du transfert.
Pour ton futur VPS, je pense qu’il en va différemment et que tu devrais pouvoir lui installer un sftp “chrooté”.

c’est possible d’ajouter au groupe sftp ( rtorrent / rutorrent ) parce que il ne peut télécharger doit etre les droit si oui comment faire cela

[quote=“ricardo”]Affaire règlée : je suis dans l’impossibilité de le faire;
Mon serveur est déjà dans un univers chrooté et on ne peut pas faire un chroot dans un chroot.[/quote]root@portos:/home/francois# chroot /tmp/temporoot/mnt root@TEMPORAIRE:/ # ls bin emul home lib64 mnt proc sbin sys usr boot etc lib lost+found mnt2 root selinux TEMPO var dev hercule lib32 media opt run srv tmp root@TEMPORAIRE:/ # chroot / root@TEMPORAIRE:/ # exit root@TEMPORAIRE:/ # exit root@portos:/home/francois#
Ben si, c’est possible la preuve ci dessus

Au top ce tuto :041

Juste un petit plus : comment faire pour que l’utilisateur ne voit pas les répertoires “dev etc lib lib64 usr” lorsqu’il se connecte via son client ( Filezilla ) ?