[Linux] Restreindre un répertoire via SSH

Résolu
Dj TonTon Messages postés 31 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

J'aimerais savoir s'il est possible de restreindre l'accès à un répertoire spécifique via un accès ssh. Concrètement j'aimerais que l'utilisateur accède directement à un répertoire spécifique lors de sa connexion ssh (par exemple /usr/ssh) et qu'il ne puisse pas remonter d'un niveau. Je sais que ce principe existe en utilisant sftp, mais est-il portable pour un simple accès ssh ? Merci.
Configuration: Windows XP
Firefox 2.0.0.4

27 réponses

  • 1
  • 2
Résumé de la discussion

Restreindre l'accès à un répertoire lors de la connexion SSH est recherché dans ce fil, en particulier pour qu'un utilisateur accède directement à un dossier comme /usr/ssh et ne puisse remonter. Plusieurs éléments de réponse évoquent le recours à un chroot avec OpenSSH, l'usage de scripts comme prisonssh et des patchs, afin de limiter le chemin d'exécution et d'isoler l'utilisateur. D'autres échanges soulignent des difficultés de portabilité et de compatibilité selon les versions d'OpenSSH, les chemins d'installation et l'activation d'un démon dédié, avec des essais pratiques et des retours en cours. En complément, certains points évoquent la vérification des configurations et l'importance de tester dans un environnement séparé, afin d'éviter les effets de bord et d'assurer une isolation effective.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Peut être que cette astuce dans la FAQ répondra à ta demande...

    ;-))
    0
  2. Dj TonTon Messages postés 31 Statut Membre
     
    Super, c'est exactement ce que je cherchais je te remercie beaucoup. :) J'ai pourtant parcouru longuement ce forum ainsi que Google sans rien trouver... alors que la solution était simplement dans la FAQ!
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Merci lami20j alors ;-))
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    semble-t-il que les developpeurs de openssh-chroot ont stoppé le projet
    en fait c'est toujour l'histoire de patch pour les version de openssh

    je pense que je vais le reprendre, mais pour le moment je continue avec mon apprentissage du C

    dès que j'ai des nouvelles je vais modifié dans la FAQ à moins que quequ'un d'autre le fasse avant moi :-))
    0
    1. Dj TonTon Messages postés 31 Statut Membre
       
      C'est bien ce que je cherchais par contre j'ai des problèmes à la compilation. J'ai mis à jour le kernel et vérifié que j'utilisais bien la dernière version de openssl mais j'ai toujours la même erreur à la compilation :
      configure: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***
      0
    2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > Dj TonTon Messages postés 31 Statut Membre
       
      Salut,

      il s'agit de la version de openssl, il faut la version compative avec openssh que tu utilises.

      en revanche il faut aussi savoir que pour ssh2 tu as des directives pour chroot mais je ne me rappelle pas leur nom
      je te dirai ce soir
      0
    3. Dj TonTon Messages postés 31 Statut Membre > Dj TonTon Messages postés 31 Statut Membre
       
      Euh et comment je verifie ca ? Ma version de Openssl est 0.9.8c.
      0
    4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > Dj TonTon Messages postés 31 Statut Membre
       
      Il faut chercher avec une autre
      https://www.openssl.org/source/
      il me semble qu'avec 0.9.7j je l'ai installé, je ne me rappelle plus et je suis au boulot (je ne veux pas dire des bêtises)
      je vais regarder ce soir à la maison
      0
    5. Dj TonTon Messages postés 31 Statut Membre > Dj TonTon Messages postés 31 Statut Membre
       
      D'accord merci beaucoup. Bonne journée.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    As-tu appliqué le patch?
    affiche s'il te plaît
    grep utilisateur /etc/passwd


    utilisateur c'est ton utilisateur chrooté

    tu utilises quelle version d'openssh ?
    0
  7. Dj TonTon Messages postés 31 Statut Membre
     
    Oui j'ai appliqué le patch, j'ai suivi à la lettre les indications données dans le tuto.

    Voila ce que me donne le résultat de la commande :
    # grep userssh/etc/passwd
    userssh:x:1002:1003::/home/ssh/./home/userssh:/bin/bash

    J'utilise OpenSSH 4.3.
    0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    connecte toi avec l'utilisateur que tu as chrooté et ensuite affich le résultat de
    cat /etc/passwd
    grep userssh /etc/passwd
    --
    lami20j
    0
  9. Dj TonTon Messages postés 31 Statut Membre
     
    userssh@vm1:~$ cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    www-data:x:33:33:www-data:/var/www:/bin/sh
    backup:x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    cnsi:x:1000:1000:cnsi,,,:/home/cnsi:/bin/bash
    sshd:x:100:65534::/var/run/sshd:/usr/sbin/nologin
    snmp:x:101:65534::/var/lib/snmp:/bin/false
    userssh:x:1002:1003::/home/ssh/./home/userssh:/bin/bash
    
    
    userssh@vm1:~$ grep userssh /etc/passwd
    userssh:x:1002:1003::/home/ssh/./home/userssh:/bin/bash
    
    0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    comment tu fait pour te connecter
    affiche aussi le résultat de pwd

    après l'installation à nouveau as tu recommencé aussi la création d'environnement?

    0
    1. Dj TonTon Messages postés 31 Statut Membre
       
      Pour me connecter je passe par PuTTY sur Windows.

      Résulat de la commande pwd :
      userssh@vm1:~$ pwd
      /home/ssh/./home/userssh
      (Euh...)

      Non pas de nouvelle création d'environnement après l'installation. C'est nécessaire ?
      0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    tu peux supprimer et recommencer :-))

    chez moi ça marche
    0
  12. Dj TonTon Messages postés 31 Statut Membre
     
    Il y a un truc qui m'échappe (je dois me cracker quelque part...). J'ai supprimé mon utilisateur crée par le script. Puis :

    1. L'utilisateur sshd existe, pas besoin de le recréer

    2. Je lance le script prisonssh.pl et à la demande de répertoire je met ssh

    3. Je lance le script useradd_prisonssh.pl avec pour argument userssh et ssh. Ca me fait la même chose!

    Je fais une boulette dans le passage des paramètres ou autres ?
    0
  13. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Ce n'est pas que l'utilisateur que tu dois supprimer mais carrément l'environnement
    donc commencer à zero

    à la limite on s'en fiche
    crée un utilisateur azerty dans un autre environnement pour tester
    appelle ton environnement prison et l'utilisateur azerty pour voir

    0
    1. Dj TonTon Messages postés 31 Statut Membre
       
      Alors j'ai bien recrée mon environnement nommé prison avec l'utilisateur azerty. Tout s'est bien déroulé. J'ai mon répertoire /home/prison qui contient lui-même un répertoire home dans lequel figure le dossier azerty.

      L'utilisateur a été correctement créé, ainsi que ses répertoires :
      azerty:x:1002:1004::/home/prison/./home/azerty:/bin/bash

      Par contre au final c'est toujours la même chose, je peux tout le temps remonter d'un niveau. Je ne vois vraiment pas ce qui cloche...
      0
  14. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    As-tu patché openssh avant l'installé

    # tar xzvf /home/lami20j/prisonssh/openssh-4.3p1.tar.gz
    # cd openssh-4.3p1/
    # patch < /home/lami20j/prisonssh/osshChroot-4.3p1.diff
    patching file session.c
    # ./configure
    # make
    # make install
    0
  15. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Bon, d'abord je vais tester et aussi modifier la faq pour mettre à jour
    j'ai la version 4.5p1

    Ensuite je vais faire des imprimés écrans pour te montrer comment j'ai fait
    Ca marche chez moi, donc ça doit marcher aussi chez toi :-))
    Je ne vais pas te laisser tombé, je me suis cassé la tête avec ça trop longtemps avant d'écrire dans la faq :-DDD
    0
  16. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Bon, je viens de tester sur mon debian sur le laptop et je n'ai pas de problèmes, ça marche impeccable
    Si tu respectes exactement ce qu'il est écrit dans le tuto il ne doit pas avoir des problèmes

    A savoir que tu peux télécharger la version 4.5p1
    openssh-4.5p1.tar.gz
    openssh-4.5p1.tar.gz.asc
    le patch 4.5p1.diff
    j'utilise openssl version 0.9.8c (c'est la version qu'on trouve sur debian etch )
    0
    1. Dj TonTon Messages postés 31 Statut Membre
       
      D'abord merci beaucoup pour ton aide et le temps que tu passes à essayer de résoudre mon problème.

      J'ai tout recommencé, en téléchargeant la nouvelle version d'openSSH et en l'installant. J'ai bien patché avant de l'installer. J'ai tout suivi à la lettre le tuto, tout c'est très bien passé hormis l'étape de copie des fichiers dans le répertoire prison. Pour les fichiers suivants il me met :
      cp: ne peut évaluer `/usr/bin/less': Aucun fichier ou répertoire de ce type
      cp: ne peut évaluer `/usr/bin/bzip2': Aucun fichier ou répertoire de ce type
      cp: ne peut évaluer `/etc/bashrc': Aucun fichier ou répertoire de ce type
      cp: ne peut évaluer `/etc/termcap': Aucun fichier ou répertoire de ce type
      cp: ne peut évaluer `/etc/tsocks.conf': Aucun fichier ou répertoire de ce type

      Cela pose-t-il un problème ?

      Je suis également sur Debian Etch, donc tout devrait fonctionner correctement comme toi! :) Merci encore pour tes démarches.
      0
  17. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Cela pose-t-il un problème ?

    Non, mais en revanche dans ton environnement tu n'auras pas bzip2 par exemple
    Il faut regarder le script et faire les modifications nécessaires

    Regarde dans cette partie

    my @apps0=qw (
                  /bin/bash
                  /bin/ls
                  /bin/mkdir
                  /bin/mv
                  /bin/pwd
                  /bin/rm
                  /bin/sh
                  /bin/echo
                  /bin/cp
                  /bin/cat
                  /bin/ln
                  /bin/chown
                  /bin/chmod
                  /bin/grep
                  /bin/more
                  /bin/tar
                  /bin/gzip
                  /bin/true
                  /bin/false
                  /bin/ping
                  /bin/egrep
                  /bin/hostname
    );
    
    # les applications (/usr/bin, etc...)
    
    my @apps1=qw (
                  /usr/local/bin/scp
                  /usr/bin/env
                  /usr/bin/clear
                  /usr/bin/wc
                  /usr/bin/perl
                  /usr/bin/id
                  /usr/local/bin/ssh
                  /usr/bin/du
                  /usr/bin/less
                  /usr/bin/bzip2
                  /usr/bin/tset
    );


    tu vois bien que c'est écrit
    /usr/bin/bzip2
    mais sur etch c'est
    lami20j@deb:~/src$ whereis bzip2
    bzip2: /bin/bzip2 /usr/share/man/man1/bzip2.1.gz
    
    donc tu n'as qu'à remplacer /usr/bin/bzip2 avec /bin/bzip2 et tu n'auras plus le warning

    cp: ne peut évaluer `/usr/bin/bzip2': Aucun fichier ou répertoire de ce type
    0
  18. Dj TonTon Messages postés 31 Statut Membre
     
    OK, j'ai modifié le script c'est bon pour les erreurs. Mais toujours pas le reste! :) C'est quand même fou que tout fonctionne chez toi avec la même distrib et pas chez moi! J'en ai fini pour aujourd'hui, mais dès demain je m'y remet!
    0
  19. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Affiche s'il te plaît le résultat de
    ps aux | grep ssh
    whereis ssh
    whereis sshd
    0
  20. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Perso, je crois que sur on OS ce n'est pas openssh que tu as installé qui est en marche mais le ssh installé avec les paquetages

    J'ai besoin de voir le résultat de commandes que je t'ai demandé.
    Merci.
    0
  21. Dj TonTon Messages postés 31 Statut Membre
     
    Bonjour,

    Perso, je crois que sur ton OS ce n'est pas openssh que tu as installé qui est en marche mais le ssh installé avec les paquetages

    Oui c'est possible, mais dans tous les cas j'ai installé openssh derrière. Peut-être aurais-je dû désinstaller avant le paquetage installé ? :S

    Voici les résultats des commandes que tu m'as demandé de tapé :
    vm1:~# ps aux | grep ss
    root      2494  0.0  0.0   4928  1084 ?        Ss   Jun12   0:00 /usr/sbin/sshd
    root     18175  0.2  0.1   7696  2356 ?        Ss   10:15   0:00 sshd: root@pts/0
    root     18182  0.0  0.0   2880   768 pts/0    S+   10:15   0:00 grep ss
    
    vm1:~# whereis ssh
    ssh: /usr/bin/ssh /etc/ssh /usr/X11R6/bin/ssh /usr/bin/X11/ssh /usr/local/bin/ssh /usr/share/man/man1/ssh.1.gz
    
    vm1:~# whereis sshd
    sshd: /usr/sbin/sshd /usr/local/sbin/sshd /usr/share/man/man8/sshd.8.gz
    
    0
  • 1
  • 2