Com engabiar (jail) a usuaris que es connectin per SSH

En el nostre món hi ha molts però molts secrets ... honestament no crec poder aprendre prou com per conèixer la majoria, i això està donat pel simple fet que Linux ens permet fer tantes, però tantes coses que se'ns fa difícil conèixer-les totes.

Aquesta vegada els explicaré com fer alguna cosa summament útil, cosa que molts administradors de xarxes o sistemes hem necessitat fer, i se'ns ha dificultat per simplement no trobar una via mitjanament simple d'aconseguir-:

Com engabiar usuaris que es connectin per SSH

¿Engabiar? ... WTF!

Sí. Si per algun motiu hem de donar-li accés SSH a un amic nostre al nostre ordinador (o servidor), sempre hem cuideu per la seguretat i estabilitat de l'ordinador o servidor nostre.

Passa que fa poc vam voler donar-li accés SSH a Perseu a un servidor nostre, però no podem donar-li qualsevol tipus d'accés ja que comptem aquí configuracions de debò sensibles (hem compilat moltes coses, paquets que hem instal·lat individuals, etc ...) i si algú que no sigui jo intenta fer encara que sigui el més mínim canvi en el servidor, hi ha la possibilitat que tot es vagi a l'trast jeje.

Llavors, Com crear un usuari amb privilegis extremadament limiados, tant així que no pugui ni tan sols sortir de la seva gàbia (home)?

comencem descarregant jailkit, Una eina que ens permetrà fer això:

Totes les comandes següents són executats com a root

1. Primer hem de descarregar al nostre servidor JailKit.

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

2. Després hem descomprimir el paquet i entrar a la carpeta que recentment ens va aparèixer:

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

3. Posteriorment passem a compilar i instal·lar el programari (els deixo screenshot):

./configure
make
make install

. / Configure

fer

make install

4. A punt, ja amb això està instal · lat. Ara passem a crear la gàbia que contindrà als futurs usuaris, en el meu cas la vaig crear a: / opt / i li vaig trucar «jail», de manera que la ruta seria: / Opt / jail :

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

5. Ja la gàbia està creada, però no té totes les eines necessàries perquè els futurs usuaris que hi seran puguin treballar sense problemes. O sigui, fins aquest moment la gàbia està creada, però és només una caixa buida. Ara posarem a la gàbia algunes eines que els usuaris engabiats necessitaran:

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. A punt, la gàbia existeix i ja té les eines perquè l'usuari les faci servir ... ara només ens falta ... l'usuari !. Crearem a l'usuari Kira i el posarem a la gàbia:

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

Nota: executin la següent comanda en un terminal i han de tenir un resultat similar a què mostro al screenshot:

cat /etc/passwd | grep jk_chroot

Si noten que no els apareix res així com en el screenshot, alguna cosa han hagut de fer malament. Deixin un comentari aquí i amb molt de gust els ajudaré.

7. I ja està, ja l'usuari està engabiat ... però, està TAN engabiat, que no es pot connectar per SSH, doncs quan intenta connectar el servidor no el deixa:

8. Per permetre que l'usuari es connecti hem de fer un pas més.

Hem editar el fitxer etc / passwd de la gàbia, o sigui, en aquest cas seria / Opt / jail / etc / passwd , En ell vam comentar la línia de l'usuari que creem, i afegim una nova com:

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

O sigui, ens quedaria així l'arxiu passwd:

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

Noten bé els signes de puntuació duplicats i altres, és important no deixar-nos anar cap 🙂

Després de fer això, ja l'usuari podrà entrar sense cap tipus de problema 😀

I això és tot.

L'eina que fem servir per a tot això (jailkit) S'usa en el backend chroot, Que és en realitat el que gairebé tots els tutorials fan servir. No obstant això usant JailKit es fa més simple engabiar 😉

Important !: Això ha estat provat en Debian Squeeze (6) y Centenars i ha funcionat a 100%, Provat en Debian Wheezy (7) i també ha funcionat, encara que amb un petit detall, que no es mostra el nick de l'usuari en el ssh, però no perd cap funcionalitat.

Si algú presenta algun problema o alguna cosa no va bé, que deixi tants detalls com li sigui possible, no em considero un expert però sí que li ajudaré en tot el que pugui.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   v3on va dir

    llavors seria alguna cosa així com els permisos en FTP? interessant

    sempre surts amb cada cosa que ni tan sols sabia que existia, com el dels usuaris en mysql xD

    1.    KZKG ^ Gaara va dir

      No precisament, perquè SSH no és el mateix que FTP. SSH és un intèrpret d'ordres, és a dir, una terminal ... estaries en un terminal en un altre ordinador o servidor, podries executar ordres, iniciar processos, etc ... faries tant com l'administrador de l'server et permeti 😉

      jajajajajaja nah vingui, el que passa és que jo públic coses més tècniques ... o sigui, que m'agrada publicar cosetes que no són tan populars i sí interessants. Per exemple, jo personalment no penso publicar alguna cosa el dia que el nou Ubuntu surti, perquè considero que molts ja parlaran d'això ... però, d'això que llegeixes aquí en el post, no és una cosa que es llegeixi tots els dies o no? 😀

      1.    Damià Rivera va dir

        Molt bons aportacions gràcies

        també hi ha un protocol que es diu sftp que és ftp i Secure Shell junts, encara que no és el mateix que executar FTP sobre SSH: \

        Salutacions

        1.    KZKG ^ Gaara va dir

          Sí sí en efecte, però a l'engabiar SSH automàticament enjaulo a qui es connecti usant SFTP, ja que com bé dius, SFTP és en realitat SSH + FTP 😀

          Salutacions

  2.   Giskard va dir

    No es veuen les imatges !!! 🙁

    1.    KZKG ^ Gaara va dir

      Un petit error meu jeje, digues-me ara 😀

      1.    Giskard va dir

        Fet. gràcies 😀

  3.   Rots87 va dir

    molt bo, ho apunto als meus favorits per tenir-lo disponible quan ho necessiti jejeje

    1.    KZKG ^ Gaara va dir

      Gràcies, qualsevol dubte o problema aquí estem per ajudar-te 🙂

  4.   Manuel de la Font va dir

    Tenen a Perseu engabiat. http://i.imgur.com/YjVv9.png

    1.    correcte va dir

      LOL
      xD

  5.   jorgemanjarrezlerma va dir

    Que tal.

    Saps, és un tema de el qual no estic molt familiaritzat i que havia estat checando en BSD (PC-BSD i Ghost BSD) i em sembla molt interessant i amb funionalidades que poden ser molt útils.

    Vaig a guardar-lo per referències i el checare amb la documentació dels BSD. Gràcies per la dada.

    1.    KZKG ^ Gaara va dir

      Tampoc jo vaig estar familiaritzat amb això doncs mai vaig pensar en donar-li accés SSH a algun dels meus servers algú jaja, però quan em vaig trobar amb la necessitat de fer-ho, vaig voler donar accés però sense que hi hagi la possibilitat que per equivocació algú faci alguna cosa que no ha de 😀

      Mai he provat això en sistemes BSD, per la qual cosa no et puc dir que funcionarà, però si busques per com fer chroot en BSD, alguna cosa t'ha de sortir 😉

      Gràcies pel comentari amic 🙂

      1.    Damià Rivera va dir

        Hola, jo faig servir FreeBSD i clar jailkit funciona de fet aquesta en els ports

        El instal·les amb aquesta comanda

        cd / usr / ports / shells / jailkit / && make install clean

        O per paquet ftp

        pkg_add -r jailkit

        Només que en la configuració (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Necessites afegir tcsh o sh, amens que hagis instal·lat bash i afegir aquesta ruta

        / Usr / local / bin / bash

        I uns quants detalls més, en Ghost BSD ha de ser el procés semblant fins i tot més senzill a l'estar basat en FreeBSD

        Salutacions

  6.   adiazc87 va dir

    Genial, ho estava buscant; saps si funciona en Centos ??; gràcies.

    1.    KZKG ^ Gaara va dir

      No ho he provat en Centos, però sí, hauria de funcionar 😀
      De fet crec recordar que diversos han fet servir aquesta mateixa eina en servidors Centres i Red Hat 😉

  7.   ciberalejo17 va dir

    Moltes gràcies. Es va directament a marcadors.

    1.    KZKG ^ Gaara va dir

      Gràcies a tu per comentar 🙂

  8.   MVAltamirà va dir

    Molt bon «truc», super útil per a administradors de sys. Però millor encara exelentemente ben redactat. Que mes es pot demanar.
    Moltes gràcies per l'aportació.

    1.    KZKG ^ Gaara va dir

      Gràcies, de vers moltíssimes gràcies pel teu comentari 😀
      Salutacions

  9.   LINUxer va dir

    Lloat sigui SSH jaja
    Un cop vaig intentar fer una gàbia per ssh però a l'estil tradicional i la veritat que mai em va sortir correctament. Si caminava la gàbia no tenia ni bash, és a dir es connectava i ahi nomes quedava jaja si li caminava la shell podia pujar a l'jerarquia de directoris i munt de quilombos més jaja però aquest jailkit és una maça, et automatitza totes aquestes coses ... Altament recomanat

    1.    KZKG ^ Gaara va dir

      jaja gràcies.
      Sí, en realitat SSH és tot una meravella pel que ens permet, que en realitat no és més que el que permet el sistema així que ... un hurra per Linux! ... jaja.

  10.   nwt_lazaro va dir

    Hola, un dubte!
    perquè canviar el home de (1) / opt / jail /./ home / kira a (2) / home / kira

    Hem editar el fitxer etc / passwd de la gàbia, o sigui, en aquest cas seria / opt / jail / etc / passwd, en ell vam comentar la línia de l'usuari que creem, i afegim una nova com:

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

    O sigui, ens quedaria així l'arxiu passwd:

    root: x: 0: 0: root: / root: / 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 va dir

      Hola 🙂
      Si no es posa això l'accés SSH no funciona, l'usuari intenta connectar-se però és expulsat automàticament ... sembla ser un error o problema amb l'intèrpret que porta el JailKit, ja que a l'fer aquest canvi indicant-li que faci servir el bash normal de sistema, funciona tot .

      1.    Omar Ramírez va dir

        Tot em tanca la sessió ssh: C
        Suse 10.1 x64

  11.   Alexitu va dir

    Hola he instal·lat això i funciona excel·lent ment molt bé en centos = D

    però la meva dua és com ag per afegir més ordres per exemple a un usuari jail
    no pot executar la comanda svn co http://pagina.com/carpeta

    o sigui aquesta comanda no existeix per als usuaris jail en aquest cas com ago per afegir aquestes comandes a l'jail i hi ha molts mes que requereixo afegir.

    1.    KZKG ^ Gaara va dir

      Hola que tal 🙂
      Si vols habilitar la comanda «svn» al Jail tens la comanda jk_cp
      O sigui:
      jk_cp / opt / jail / / bin / svn

      Això suposant que el binari o executable de svn sigui: / bin / svn
      I que la Gàbia / Jail sigui: / opt / jail /

      Et trobaràs amb comandaments que depenen d'altres, o sigui que si afegeixes la comanda «pepe» veuràs que has de més afegir a «federico», ja que «pepe» depèn de «federico» per executar-se, si trobes això llavors afegeixes les comandes necessàries i ja 😉

      1.    Alexitu va dir

        Això és és excel·lent estic probandolo a hora mateix ja els dic que passo moltes gràcies = D

        1.    KZKG ^ Gaara va dir

          sort 😀

  12.   Alexitu va dir

    he aconseguit fer el que em dijistes però d'aquesta manera i automàtica ment m'ho ha detectat sense cap problema aquest va ser l'ordre que he utilitzat per poder usar el subverision.

    jk_cp -j / home / Jaúl svn

    bo igual ús centos xP i doncs potser és diferent però bé
    a hora voldria saber quines són les llibreries com la de svn però ara voldria compilar per que diguem que necessito usar una ordre així

    ./configure i marca error

    ./configure.line: line 434: expr: command not found

    no sabria quines són les llibreries ja tinc instal·lat el que és mysql i demas compilant fora de la jail però no dins de la jaui.

    perdó per les molèsties.

    pd: deverias col·locar a la guia el que et vaig dir sobre la comanda usat en centos =) salutacions.

    1.    KZKG ^ Gaara va dir

      Mira, quan et digui que no pot trobar una ordre (com aquí) el primer és trobar la comanda:

      whereis expr

      Un cop trobat (/ usr / bin / expr i / usr / bin / X11 / expr) el copiem a l'Jail amb jk_cp 😉
      Intenta això a veure.

      Sip, ja edito el post i agrego que funciona a Centos 😀

  13.   adiazc87 va dir

    Genial, moltes gràcies (:

  14.   Jesús va dir

    Gràcies per l'aportació ...

  15.   Yeli va dir

    hola cm estan

  16.   djfenixchile va dir

    Fotre tio! Des de Xile meves salutacions. Aquestes tan pet com jo! jajaja !. Abraçades. M'ha estat de gran ajuda teu post!

    1.    KZKG ^ Gaara va dir

      Gràcies a tu pel teu comentari 😀

  17.   Daniel PZ va dir

    Moltes gràcies pel post, em va ajudar molt, però lamentablement a la part de

    ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////
    Hem editar el fitxer etc / passwd de la gàbia, o sigui, en aquest cas seria / opt / jail / etc / passwd, en ell vam comentar la línia de l'usuari que creem, i afegim una nova com:

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

    O sigui, ens quedaria així l'arxiu passwd:

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

    Em causa igual error, o sigui, ho deixo tal com aquesta, i em bota de l'terminal a l'connectar-me ,,, .., Comento la línia i afegeixo una més modificant com indiques, i també em bota ....

    Instal la darrera versió «jailkit-2.16.tar», inclusivament creï un script per estalviar el temps, aca està a continuació:

    ////////////////////////////////////////////////// ////////////////////////////////////////////
    #! / 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
    fer
    make install
    sortir de
    ////////////////////////////////////////////////// ///////////////////////////

    Òbviament primer es logean com «root» ...

    Com podria resoldre l'error amic ????

    1.    Daniel PZ va dir

      Disculpa, ja em va sortir, havia comès un error sobre la carpeta Home, però tinc un gran dubte, com puc fer per q em deixi executar la comanda «screen»,, tracte d'usar-lo (en l'usuari engabiat), però no funciona ... una altra cosa és que ,, com ago perquè aquest usuari engabiat pugui executar el programa wine sobre un exe q acaba de posar dins del seu home ,, com seria?

  18.   leonel va dir

    hola, molt bon Estatut! sóc nou en aquests ambients, tinc una pregunta ...
    pel que fa a seguretat, veig que en el seu arrel té molts folders, són necessaris? només vull que tingui accés a la seva carpeta (ftp-pujar i ssh-executar) perquè executi una aplicació, que folders podria esborrar d'arrel? o no em representa cap perill? agraeixo per endavant la vostra ajuda, salutacions!

  19.   CubaRed va dir

    @ KZKG ^ Gaara, encara sort que pusistes l'error de wheezy però ja amb la versio de jailkit-2.16.tar.gz que em sugeristes ho van arreglar

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

  20.   Algabe va dir

    Crec m'ho passés a un PDF, jojo .. a engabiar i gràcies wn 😀

  21.   Samuel va dir

    Salutacions amic, tinc un dubte:

    Suposem que tenim un usuari de nom «prova».

    El dubte és, l'arxiu /home/prueba/.ssh/known_hosts que es localitza en el home d'aquest usuari, és el mateix arxiu aquest o no engabiat l'usuari?

  22.   Richard va dir

    Probe això. Es pot amb aquest mètode restringir la navegació als altres home dels altres usuaris.

  23.   TZBKR va dir

    Primer de tot, gràcies pel post! M'està sent de gran utilitat; però tinc dos dubtes, i aquestes sorgeix de l'escenari que tinc:

    Necessito crear N usuaris amb accés independent i privat al seu home, cada usuari només pot accedir al seu home per dipositar, modificar i eliminar arxius aquí continguts sense haver de caminar-movent a altres (Aquest punt ja el tinc). No requereix d'accés via ssh.

    1. S'ha de crear una gàbia per a cada usuari o bé, hi ha manera de tenir a la mateixa gàbia dels diferents usuaris però que cada un tingui el seu directori «privat»?

    2. A l'accesar (via client FTP) es mostren tots els directoris creats per l'eina, hi ha manera que es mostri la carpeta en net? O alguna cosa vaig fer malament en el camí?

  24.   eduardlh va dir

    Excel·lent tutorial! M'ha estat de gran ajuda, ho estic provant amb la versió 2.17 en Ubuntu 14.04 i funciona molt bé. Ara tinc el següent repte, un cop engabiat l'usuari perquè no pugui moure a cap ruta, vull que només pugui veure el contingut d'un arxiu que està en una altra ruta. Proveu amb un enllaç simbòlic però a l'intentar fer un tail o cat a aquesta arxiu em diu que no existeix encara que a l'accedir amb l'usuari puc llistar aquest arxiu en el home de la gàbia.

    Si poguessis ajudar-me estaria molt agraït, per endavant gràcies

  25.   va dir

    Hola, he seguit tot el manual i a l'iniciar sessió amb ssh es tanca automàticament, traces:

    Dec 4 19:20:09 toby sshd [27701]: Accepted password for prova from 172.16.60.22 port 62009 ssh2
    Dec 4 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session opened for user prova by (uid = 0)
    Dec 4 19:20:09 toby jk_chrootsh [27864]: now entering jail / opt / jail for user prova (1004) with arguments
    Dec 4 19:20:09 toby sshd [27701]: pam_unix (sshd: session): session closed for user prova

    Gràcias

  26.   Omar Ramírez va dir

    No quan faig l'últim pas de donar accés a ssh a l'usuari encara em tanca la connexió 🙁

  27.   Benj va dir

    Es pot potser des d'aquest usuari creat canviar a root? seva -root? no em deixa. Com seria Gràcies per la teva ajuda

  28.   esleví va dir

    Mil gràcies pel tutorial, ho necessitava per crear un usuari que pogués utilitzar el Clonezilla per fer una imatge i copiar-la a un servidor aliè però que no pogués pul·lular per on volgués

  29.   Mauro va dir

    Bones! estaria necessitant saber alguna cosa.

    És possible ingressar com ROOT usant FTP i tenint aquests permisos, per administrar-lo per FTP i no amb SSH? diguem com creant una connexió, estil túnel o alguna cosa així ¿Com es fa? ¿Configurant el achivo vsftpd?

    Moltes Gràcies!