Comment emprisonner les utilisateurs se connectant via SSH

Dans notre monde, il y a beaucoup, beaucoup de secrets ... Honnêtement, je ne pense pas pouvoir en apprendre assez pour en connaître la plupart, et cela est donné par le simple fait que Linux nous permet de faire tant de choses, mais tellement de choses que c'est difficile pour nous de les connaître tous.

Cette fois, je vais vous expliquer comment faire quelque chose d'extrêmement utile, quelque chose que de nombreux administrateurs réseau ou système ont dû faire, et nous avons eu du mal à ne pas trouver un moyen assez simple pour y parvenir:

Comment mettre en cage les utilisateurs se connectant via SSH

cage? … WTF!

Oui, si, pour une raison quelconque, nous devons donner à un de nos amis l'accès SSH à notre ordinateur (ou serveur), nous devons toujours veiller à la sécurité et à la stabilité de notre ordinateur ou serveur.

Il arrive que récemment nous voulions donner à Perseus SSH un accès à un de nos serveurs, mais nous ne pouvons lui donner aucun accès car nous y avons des configurations vraiment sensibles (nous avons compilé beaucoup de choses, des packages que nous avons installés individuellement, etc. .) et si quelqu'un qui ne le fait pas Si j'essaye de faire le moindre changement sur le serveur, il y a une possibilité que tout ira en enfer hehe

Ensuite, Comment créer un utilisateur avec des privilèges extrêmement limités, à tel point qu'il ne peut même pas sortir de sa cage (domicile)?

Commençons par télécharger kit de jail, un outil qui nous permettra de faire ceci:

Toutes les commandes suivantes sont exécutées en tant que root

1. Nous devons d'abord télécharger notre serveur JailKit.

wget http://ftp.desdelinux.net/jailkit-2.14.tar.gz

2. Ensuite, il faut décompresser le package et entrer dans le dossier qui vient d'apparaître:

tar xzf jailkit-2.14.tar.gz && cd jailkit-2.14

3. Plus tard, nous avons compilé et installé le logiciel (Je vous laisse une capture d'écran):

./configure
make
make install

. / Configure

faire

make install

4. Prêt, c'est déjà installé. Maintenant, nous allons créer la cage qui contiendra les futurs utilisateurs, dans mon cas je l'ai créée dans: / opt / et je l'ai appelée "prison", donc le chemin serait: / opt / prison :

mkdir /opt/jail
chown root:root /opt/jail

5. La cage est déjà créée, mais elle ne dispose pas de tous les outils nécessaires pour que les futurs utilisateurs qui y seront puissent travailler sans problème. Je veux dire, jusqu'à présent, la cage est créée, mais ce n'est qu'une boîte vide. Nous allons maintenant mettre dans la cage certains outils dont les utilisateurs en cage auront besoin:

jk_init -v /opt/jail basicshell
jk_init -v /opt/jail editors
jk_init -v /opt/jail extendedshell
jk_init -v /opt/jail netutils
jk_init -v /opt/jail ssh
jk_init -v /opt/jail sftp
jk_init -v /opt/jail jk_lsh

6. Prêt, la cage existe et elle a déjà les outils à utiliser par l'utilisateur ... maintenant nous n'avons besoin que de ... l'utilisateur! Créons l'utilisateur kira et nous allons le mettre dans la cage:

adduser kira
jk_jailuser -m -j /opt/jail kira

Remarque: exécutez la commande suivante dans un terminal et elle devrait avoir un résultat similaire à celui montré dans la capture d'écran:

cat /etc/passwd | grep jk_chroot

Si vous remarquez que rien comme la capture d'écran n'apparaît, vous devez avoir fait quelque chose de mal. Laissez un commentaire ici et je serai heureux de vous aider.

7. Et voila, l'utilisateur est déjà en cage ... mais, il est tellement en cage, qu'il ne peut pas se connecter par SSH, car quand il essaie de se connecter le serveur ne le laisse pas:

8. Pour permettre à l'utilisateur de se connecter, nous devons faire une étape de plus.

Il faut éditer le fichier etc / passwd de la cage, c'est-à-dire que dans ce cas ce serait / opt / jail / etc / passwd , nous y commentons la ligne utilisateur que nous avons créée et en ajoutons une nouvelle telle que:

kira: x: 1003: 1003 :: / home / kira: / bin / bash

Autrement dit, nous aurions le fichier comme celui-ci passwd:

racine: x: 0: 0: racine: / racine: / bin / bash
#kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
kira: x: 1003: 1003 :: / home / kira: / bin / bash

Notez bien les signes de ponctuation en double et autres, il est important de ne laisser tomber aucun d'entre eux 🙂

Après cela, l'utilisateur peut entrer sans aucun problème 😀

Et c'est tout.

L'outil que nous utilisons pour tout cela (kit de jail) utiliser dans le backend chroot, qui est en fait ce que presque tous les didacticiels utilisent. Cependant, en utilisant JailKit, il devient plus simple de mettre en cage 😉

Important!: Ceci a été testé sur Compression Debian (6) y Centos et ça a marché à 100%, testé dans Debian Wheezy (7) et il a également fonctionné, bien qu'avec un petit détail, que le surnom de l'utilisateur ne soit pas affiché dans le ssh, mais il ne perd aucune fonctionnalité.

Si quelqu'un a un problème ou quelque chose ne va pas, laissez le plus de détails possible, je ne me considère pas comme un expert mais je vous aiderai autant que possible.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   v3on dit

    alors ce serait quelque chose comme les autorisations dans FTP? intéressant

    vous trouvez toujours tout ce dont vous ne saviez même pas l'existence, comme les utilisateurs de mysql xD

    1.    KZKG ^ Gaara dit

      Pas exactement, car SSH n'est pas la même chose que FTP. SSH est un shell, c'est-à-dire un terminal ... vous seriez dans un terminal sur un autre ordinateur ou serveur, vous pourriez exécuter des commandes, démarrer des processus, etc ... vous feriez autant que l'administrateur du serveur vous le permet 😉

      hahahahaha nah allez, ce qui se passe, c'est que je publie des choses plus techniques ... c'est-à-dire que j'aime publier des petites choses qui ne sont pas si populaires et intéressantes. Par exemple, personnellement, je n'ai pas l'intention de publier quelque chose le jour de la sortie du nouvel Ubuntu, car je considère que beaucoup en parleront déjà ... cependant, ce que vous lisez ici dans le post, n'est-ce pas quelque chose qui est lu tous les jour ou pas? 😀

      1.    Damien rivera dit

        Très bonnes contributions merci

        il existe également un protocole appelé sftp qui est ftp et Secure Shell ensemble, bien que ce ne soit pas la même chose que l'exécution de FTP sur SSH: \

        salutations

        1.    KZKG ^ Gaara dit

          Oui oui en effet, mais en mettant en cage SSH, je mets automatiquement en cage quiconque se connecte en utilisant SFTP, car comme vous le dites, SFTP est en fait SSH + FTP 😀

          salutations

  2.   giskard dit

    Les images ne sont pas visibles !!! 🙁

    1.    KZKG ^ Gaara dit

      Une petite erreur de ma part hehe, dis-moi maintenant 😀

      1.    giskard dit

        Prêt. Merci 😀

  3.   Pourritures87 dit

    très bien, je le pointe vers mes favoris pour l'avoir disponible quand j'en ai besoin lol

    1.    KZKG ^ Gaara dit

      Merci, pour toute question ou problème, nous sommes là pour vous aider 🙂

  4.   Manuel de la source dit

    Ils ont Persée dans une cage. http://i.imgur.com/YjVv9.png

    1.    correct dit

      LOL
      xD

  5.   jorgemanjarrezlerma dit

    Qu'une telle.

    Vous savez, c'est un sujet que je ne connais pas très bien et que j'avais vérifié dans BSD (PC-BSD et Ghost BSD) et je le trouve très intéressant et avec des fonctionnalités qui peuvent être très utiles.

    Je vais le garder pour référence et le vérifier par rapport au document BSD. Merci pour l'astuce.

    1.    KZKG ^ Gaara dit

      Je n'étais pas familier avec cela non plus parce que je n'ai jamais pensé donner accès SSH à l'un de mes serveurs à quelqu'un haha, mais quand j'ai trouvé le besoin de le faire, je voulais donner accès mais sans la possibilité que quelqu'un fasse par erreur quelque chose qui ne doit pas 😀

      Je n'ai jamais essayé cela sur les systèmes BSD, donc je ne peux pas vous dire que cela fonctionnera, mais si vous cherchez comment chrooter dans BSD, quelque chose devrait sortir 😉

      Merci pour le commentaire ami 🙂

      1.    Damien rivera dit

        Bonjour, j'utilise FreeBSD et bien sûr jailkit fonctionne en fait ceci dans les ports

        Vous l'installez avec cette commande

        cd / usr / ports / shells / jailkit / && nettoie l'installation

        Ou par paquet ftp

        pkg_add -r jailkit

        Uniquement dans la configuration (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Vous devez ajouter tcsh ou sh, sauf si vous avez installé bash et ajoutez ce chemin

        / usr / local / bin / bash

        Et quelques détails supplémentaires, dans Ghost BSD, le processus similaire devrait être encore plus simple car il est basé sur FreeBSD

        salutations

  6.   adiazc87 dit

    Super, je le cherchais; savez-vous si cela fonctionne dans Centos ?? Merci.

    1.    KZKG ^ Gaara dit

      Je ne l'ai pas testé sur Centos, mais oui, ça devrait marcher :)
      En fait je crois me souvenir que plusieurs ont utilisé ce même outil sur les serveurs Centos et Red Hat 😉

  7.   cyberalejo17 dit

    Merci beaucoup. Il va directement aux signets.

    1.    KZKG ^ Gaara dit

      Merci à vous pour vos commentaires 🙂

  8.   MV Altamirano dit

    Très bon "truc", super utile pour les administrateurs système. Mais encore mieux, parfaitement bien écrit. Que pourrais-tu vouloir de plus.
    Merci beaucoup pour cette contribution.

    1.    KZKG ^ Gaara dit

      Merci, merci beaucoup pour ton commentaire 😀
      salutations

  9.   LiGNUXero dit

    Louange SSH haha
    Une fois, j'ai essayé de faire une cage pour ssh mais dans le style traditionnel et la vérité est qu'elle n'est jamais sortie correctement. Si la cage fonctionnait, elle n'avait même pas de bash, c'est-à-dire qu'elle était connectée et qu'il ne restait plus rien haha, si le shell était en cours d'exécution, il pourrait monter dans la hiérarchie des répertoires et beaucoup de quilombos plus haha mais ce jailkit est une masse, il automatise toutes ces choses ... Fortement recommandé

    1.    KZKG ^ Gaara dit

      haha merci.
      Oui, en fait SSH est une merveille pour ce qu'il nous permet, qui n'est vraiment rien de plus que ce que le système permet alors ... hourra pour Linux! … Haha.

  10.   nwt_lazaro dit

    Bonjour, une question!
    pourquoi changer la maison de (1) / opt / jail /./ home / kira à (2) / home / kira

    Nous devons éditer le fichier etc / passwd de la cage, c'est-à-dire que dans ce cas ce serait / opt / jail / etc / passwd, dans lequel nous commentons la ligne utilisateur que nous avons créée, et en ajoutons une nouvelle telle que:

    kira: x: 1003: 1003 :: / home / kira: / bin / bash

    En d'autres termes, le fichier passwd ressemblerait à ceci:

    racine: x: 0: 0: racine: / racine: / bin / bash
    (1) #kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
    (2) kira: x: 1003: 1003 :: / home / kira: / bin / bash

    1.    KZKG ^ Gaara dit

      Bonjour 🙂
      Si ce n'est pas défini, l'accès SSH ne fonctionne pas, l'utilisateur tente de se connecter mais est automatiquement expulsé ... cela semble être un bogue ou un problème avec l'interpréteur que JailKit apporte, car lors de cette modification, il indique qu'il utilise le bash normal du système, tout fonctionne.

      1.    Omar ramirez dit

        Je ferme toujours la session ssh: C
        Suse 10.1x64

  11.   alexitu dit

    Bonjour j'ai installé ceci et cela fonctionne très bien l'esprit en centos = D

    mais mon dua est comme il y a pour ajouter plus de commandes par exemple à un utilisateur de prison
    impossible d'exécuter la commande svn co http://pagina.com/carpeta

    Je veux dire, cette commande n'existe pas pour les utilisateurs de prison dans ce cas, comme il y a eu, pour ajouter ces commandes à la prison et il y en a beaucoup plus que je dois ajouter.

    1.    KZKG ^ Gaara dit

      Salut comment vas-tu 🙂
      Si vous voulez activer la commande «svn» dans la prison vous avez la commande jk_cp
      Ce est à dire:
      jk_cp / opt / jail / / bin / svn

      Ceci en supposant que le binaire ou l'exécutable svn est: / bin / svn
      Et que la Cage / Jail soit: / opt / jail /

      Vous rencontrerez des commandes qui dépendent des autres, c'est-à-dire que si vous ajoutez la commande «pepe» vous verrez que vous devez aussi ajouter «federico», car «pepe» dépend de «federico» à exécuter, si vous trouvez cela puis vous ajoutez les commandes nécessaires et déjà 😉

      1.    alexitu dit

        C'est excellent, je le teste en même temps, et je vous raconte ce qui s'est passé, merci beaucoup = D

        1.    KZKG ^ Gaara dit

          Chance 😀

  12.   alexitu dit

    J'ai réussi à faire ce que vous m'avez dit mais de cette façon et automatiquement il m'a détecté sans aucun problème.C'est la commande que j'ai utilisée pour pouvoir utiliser la subversion.

    jk_cp -j / home / jaul svn

    Bon j'utilise centos xP et c'est peut-être différent mais bon
    maintenant je voudrais savoir quelles sont les bibliothèques comme svn mais maintenant je voudrais compiler parce que disons que j'ai besoin d'utiliser une commande comme celle-ci

    ./configurer et marquer l'erreur

    ./configure.lineno: ligne 434: expr: commande introuvable

    Je ne saurais pas quelles sont les bibliothèques que j'ai déjà installées, qu'est-ce que mysql et d'autres s'il compile en dehors de la prison mais pas à l'intérieur du jaui.

    Désolé pour le dérangement.

    ps: vous devriez mettre dans le guide ce que je vous ai dit sur la commande utilisée dans centos =) salutations.

    1.    KZKG ^ Gaara dit

      Regardez, quand je vous dis qu'il ne trouve pas de commande (comme ici), la première chose à faire est de trouver la commande:

      whereis expr

      Une fois trouvé (/ usr / bin / expr et / usr / bin / X11 / expr) nous le copions dans la prison avec jk_cp 😉
      Essayez ceci pour voir.

      Oui, j'ai déjà édité le post et ajouté qu'il fonctionne dans Centos 😀

  13.   adiazc87 dit

    Super, merci beaucoup (:

  14.   Jésus dit

    Merci pour la contribution…

  15.   karma dit

    Salut comment ca va?

  16.   djfenixchile dit

    Putain mec! Du Chili mes salutations. Vous êtes aussi pet que moi! LOL!. Étreintes. Votre message m'a été d'une grande aide!

    1.    KZKG ^ Gaara dit

      Merci pour ton commentaire 😀

  17.   Daniel PZ dit

    Merci beaucoup pour le message, cela m'a beaucoup aidé, mais malheureusement dans le cadre de

    //////////////////////////////////////////////////// // ////////////////////////////////////////////////// //// ////////////////////////
    Nous devons éditer le fichier etc / passwd de la cage, c'est-à-dire que dans ce cas ce serait / opt / jail / etc / passwd, dans lequel nous commentons la ligne utilisateur que nous avons créée, et en ajoutons une nouvelle telle que:

    kira: x: 1003: 1003 :: / home / kira: / bin / bash

    En d'autres termes, le fichier passwd ressemblerait à ceci:

    racine: x: 0: 0: racine: / racine: / bin / bash
    #kira: x: 1003: 1003: ,,,: / opt / jail /./ home / kira: / usr / sbin / jk_lsh
    kira: x: 1003: 1003 :: / home / kira: / bin / bash
    //////////////////////////////////////////////////// // ////////////////////////////////////////////

    Cela provoque la même erreur, je veux dire, je le laisse tel quel, et il me démarre à partir du terminal lorsque je me connecte ,,, .., je commente la ligne et en ajoute une autre en la modifiant comme vous l'indiquez, et elle aussi me lance….

    Installez la dernière version "jailkit-2.16.tar", créez même un script pour gagner du temps, la voici ci-dessous:

    //////////////////////////////////////////////////// //// ////////////////////////////////////////////////
    #! / Bin / bash
    wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
    tar -zxvf jailkit-2.16.tar.gz
    cd jailkit-2.16
    . / Configure
    faire
    make install
    sortie
    //////////////////////////////////////////////////////////// /////////////////////////////

    Évidemment, ils se connectent d'abord en tant que "root" ...

    Comment pourrais-je résoudre l'erreur ami ????

    1.    Daniel PZ dit

      Désolé, je l'ai déjà compris, j'avais fait une erreur sur le dossier Home, mais j'ai un gros doute, comment puis-je l'obtenir pour me laisser exécuter la commande «screen», j'essaye de l'utiliser (dans l'utilisateur en cage) , mais ça ne marche pas ... Une autre chose est, comment puis-je amener cet utilisateur en cage à exécuter le programme wine sur un exe qu'il vient de mettre dans sa maison?

  18.   Leonel dit

    bonjour, très bon tuto! Je suis nouveau dans ces environnements, j'ai une question ...
    Quant à la sécurité, je vois qu'à sa racine il y a de nombreux dossiers, sont-ils nécessaires? Je veux juste qu'il ait accès à son dossier (ftp-upload et ssh-execute) pour qu'il puisse exécuter une application, quels dossiers pourrait-il supprimer de la racine? ou cela ne représente-t-il aucun danger pour moi? J'apprécie votre aide à l'avance, salutations!

  19.   CubaRouge dit

    @ KZKG ^ Gaara, Dieu merci, vous avez mis l'erreur sifflante mais avec la version de jailkit-2.16.tar.gz que vous avez suggérée, ils l'ont corrigé

    http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz

  20.   Albigeois dit

    Je pense que je vais le passer à un PDF, jojo .. à la cage et merci wn 😀

  21.   Samuel dit

    Salutations ami, j'ai une question:

    Supposons que nous ayons un utilisateur nommé "test".

    La question est, le fichier /home/test/.ssh/known_hosts qui se trouve dans le domicile de cet utilisateur, est-ce le même fichier ou n'est-il pas mis en cage l'utilisateur?

  22.   Richard dit

    Essaye ça. Il est possible avec cette méthode de restreindre la navigation à l'autre domicile des autres utilisateurs.

  23.   TZBKR dit

    Tout d'abord, merci pour le message! Cela m'est très utile; mais j'ai deux doutes, et ceux-ci découlent du scénario que j'ai:

    J'ai besoin de créer N utilisateurs avec un accès indépendant et privé à leur domicile, chaque utilisateur ne peut accéder à son domicile que pour déposer, modifier et supprimer les fichiers qui y sont contenus sans avoir à se déplacer vers d'autres (j'ai déjà ce point). Il ne nécessite pas d'accès via ssh.

    1. Devez-vous créer une cage pour chaque utilisateur, ou y a-t-il un moyen d'avoir les différents utilisateurs dans la même cage mais chacun a son répertoire "privé"?

    2. Lors de l'accès (via le client FTP) tous les répertoires créés par l'outil sont affichés, y a-t-il un moyen d'afficher le dossier propre? Ou ai-je fait quelque chose de mal en cours de route?

  24.   edouardlh dit

    Excellent tutoriel! Cela m'a été d'une grande aide, je le teste avec la version 2.17 sur Ubuntu 14.04 et cela fonctionne très bien. Maintenant, j'ai le défi suivant, une fois que l'utilisateur est mis en cage pour qu'il ne puisse se déplacer vers aucun chemin, je veux qu'il ne puisse voir que le contenu d'un fichier qui se trouve dans un autre chemin. J'ai essayé avec un lien symbolique mais en essayant de faire une queue ou un chat dans ce fichier, cela me dit qu'il n'existe pas bien que lors de l'accès avec l'utilisateur, je peux lister ce fichier dans la maison de la cage.

    Si vous pouviez m'aider, je vous serais très reconnaissant, merci d'avance

  25.   yas dit

    Bonjour, j'ai suivi tout le manuel et lors de la connexion avec ssh il se ferme automatiquement, trace:

    4 décembre 19:20:09 toby sshd [27701]: Mot de passe accepté pour le test du port 172.16.60.22 62009 ssh2
    4 déc 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session ouverte pour test utilisateur par (uid = 0)
    4 décembre 19:20:09 toby jk_chrootsh [27864]: entre maintenant en prison / opt / jail pour un test utilisateur (1004) avec des arguments
    4 déc 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session fermée pour test utilisateur

    merci

  26.   Omar ramirez dit

    Pas quand je fais la dernière étape pour donner un accès ssh à l'utilisateur, cela ferme toujours la connexion

  27.   Benj dit

    Est-il possible à partir de cet utilisateur créé de passer à root? votre racine? il ne me laisse pas. Comment serait-ce? Merci pour votre aide

  28.   Slevin dit

    Merci beaucoup pour le tutoriel, j'en avais besoin pour créer un utilisateur qui pourrait utiliser clonezilla pour créer une image et la copier sur un serveur tiers mais qui ne pouvait pas pulluler où il voulait

  29.   Mauro dit

    Bien! J'aurais besoin de savoir quelque chose.

    Est-il possible d'entrer en tant que ROOT en utilisant FTP et en ayant ces autorisations, de le gérer par FTP et non avec SSH? Disons comme créer une connexion, un style de tunnel ou quelque chose comme ça. Comment est-ce fait? Configurer le fichier VSFTPD?

    Je vous remercie!