Forum Linux.debian/ubuntu Mettre en place un chroot SFTP sous Lenny

Posté par .
Tags : aucun
1
29
juin
2009
Cher journal forum,

J'utilisais jusqu'à présent un serveur sous Debian Etch 4.? avec scponly pour permettre à mes utilisateurs d'avoir un accès SFTP à leur home (et pas eu delà) et surtout que SFTP, pas de connexion SSH normale. Dans les équivalents, il y a rssh, MySecureShell, etc.

J'ai décidé de faire table rase et de passer à Debian Lenny 5.0. Elle arrive avec une nouvelle version d'OpenSSH qui est sensée gérer le chroot SFTP plus facilement, sans avoir à installer de paquet supplémentaire \o/ Sauf que j'ai beau tout essayé, je n'y arrive pas. Pire, quand je recommence de zéro, je n'arrive pas au même résultat. Ci-dessous, ma dernière tentative :

-J'installe Debian avec juste le système de base (même pas openssh-server !)
-J'ajoute mon utilisateur : useradd -m peter
-Je lui met un mot de passe : passwd peter
-Je créé mon groupe : groupadd sftponly
-J'ajoute mon utilisateur au groupe : adduser petr sftponly
-J'installe le serveur SSH : apt-get install openssh-server
-J'édite sa configuation : nano /et/ssh/sshd_config
--Je change : Subsystem sftp /usr/lib/openssh/sftp-server par Subsystem sftp internal-sftp
--J'ajoute à la fin du fichier :
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp


-Je donner les droits du dossier home de peter à root : chown root:root /home/peter/
-Je dit que la racine de peter est / : usermod -d / peter
-Je redémarre la daemon SSH : /etc/init.d/ssh restart

À un moment ça fonctionnait presque. Peter pouvait se connecter en SFTP mais ne pouvait pas créer de répertoires ni de fichiers.

Depuis que j'ai encore recommencer, la connexion se fige dès que je rentre le mot de passe. Le mode verbose de SSH m'indique que peter est bien connecté, mais rien.

Quelqu'un connaît une méthode fiable pour ce genre de besoin ?

Merci d'avance.
  • # ta méthode est fiable

    Posté par (page perso) . Évalué à 5.

    J'ai utilisé la même méthode sur plusieurs machines, et je ne vois rien de bizarre dans ce que tu as fait.

    Au moment où ça fonctionnait presque, il est normal que peter ne pouvait pas créer de répertoire ni de fichier! N'oublie pas que /home/peter appartient à root. Il faut donc donner des permissions à peter sur des sous-répertoires de /home/peter.

    Ensuite, le fait que ça se fige en verbose vient d'un problème dans la version OpenSSH de lenny qui n'incorpore pas un patch[1] qui fait qu'on ne peut pas mettre d'arguments à ForceCommand.

    [1] http://bugzilla.mindrot.org/show_bug.cgi?id=1527
    • [^] # Re: ta méthode est fiable

      Posté par . Évalué à 1.

      J'ai essayé à nouveau encore plusieurs fois et je n'arrive pas à retrouver la configuration où ça marchait presque. Il me suffirait, comme tu me le conseilles, de créer au moins un répertoire dans le home de l'utilisateur où il aurait les droits.

      Sinon, j'ai constaté que scponly fonctionne toujours sur Lenny...
      • [^] # Re: ta méthode est fiable

        Posté par . Évalué à 1.

        J'ai trouvé une solution, plus ou moins acceptable :

        Dans /home, chaque dossier d'utilisateur a ses propres droits :
        synaseserv2:/home# ls -l
        total 24
        drwx------ 2 root root 16384 2009-06-29 08:52 lost+found
        drwx------ 2 peter peter 4096 2009-06-29 09:57 peter
        drwx------ 2 thomas thomas 4096 2009-06-29 09:04 thomas

        Et les autres n'ont aucun droits (chmod 700).

        Accessoirement (est-ce que ça joue vraiment ?) j'ai modifié dans /etc/passwd le shell de peter en /usr/lib/openssh/sftp-server.

        Puis dans sshd_config j'ai mis :
        Subsystem sftp internal-sftp

        Match Group sftponly
        ChrootDirectory /home
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp


        Du coup quand peter se connecte, il atterrit dans /home, voit tous les dossiers utilisateurs, mais ne peut "entrer" que dans le sien.

        C'est pas très "beau" vu qu'il voit tout les dossiers des autres utilisateurs (même si il peut pas afficher el contenu). De plus, je ne sais pas ce que va donner le chmod 700 avec apache :?
        • [^] # Re: ta méthode est fiable

          Posté par (page perso) . Évalué à 1.

          Chez moi, j'ai tout simplement ce qui suit :
          ~$ grep user /etc/passwd
          user:x:1008:1001:,,,:/home/user:/bin/false
          niol@ripley:~$ tail -n 5 /etc/ssh/sshd_config
          Match group sftponly
                  ChrootDirectory /home/%u
                  X11Forwarding no
                  AllowTcpForwarding no
                  ForceCommand internal-sftp
          ~$ ls -la /home/user/
          total 20
          drwxr-xr-x  5 root  root  4096 oct  1  2008 .
          drwxr-xr-x 11 root  root  4096 mar 29 16:03 ..
          drwxr-xr-x  4 user user 4096 oct  1  2008 7demo
          drwxr-xr-x  2 user user 4096 nov 29  2007 Projet
          drwxr-xr-x  3 user user 4096 sep  9  2007 site.fr
          
          Pour ce qui est du shell, comme tu es en ForceCommand, je ne pense pas que ça joue sauf si /etc/pam.d/sshd est configuré avec pam_shells.so (j'ai pas testé).
  • # Shell sftp

    Posté par (page perso) . Évalué à 0.

    Salut Thomas B (je suis un Thomas B aussi),

    Ça ne va peut-être rien changer, voire même rien à voir, mais est-ce que tu as pensé à donner un shell à ton utilisateur ?

    usermod -s /usr/libexec/sftp-server peter
    (à adapter à debian)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.