Come imprigionare gli utenti che si connettono tramite SSH

Nel nostro mondo ci sono molti, molti segreti ... Onestamente non penso di poter imparare abbastanza per conoscerne la maggior parte, e questo è dato dal semplice fatto che Linux ci permette di fare così tanti, ma così tante cose che è difficile per noi conoscerli tutti.

Questa volta spiegherò come fare qualcosa di estremamente utile, qualcosa che molti amministratori di rete o di sistema hanno dovuto fare, e abbiamo trovato difficile semplicemente non trovare un modo abbastanza semplice per ottenerlo:

Come ingabbiare gli utenti che si connettono tramite SSH

gabbia? ... WTF!

Sì. Se per qualsiasi motivo dobbiamo consentire l'accesso SSH a un nostro amico al nostro computer (o server), dobbiamo sempre occuparci della sicurezza e della stabilità del nostro computer o server.

Succede che di recente abbiamo voluto dare a Perseus SSH l'accesso a un nostro server, ma non possiamo dargli alcun tipo di accesso perché lì abbiamo configurazioni davvero sensibili (abbiamo compilato molte cose, pacchetti che abbiamo installato individualmente, ecc. .) e se qualcuno che non lo fa Se provo ad apportare anche la minima modifica al server, c'è la possibilità che tutto vada sprecato hehe.

Poi, Come creare un utente con privilegi estremamente limitati, tanto da non riuscire nemmeno a uscire dalla sua gabbia (casa)?

Cominciamo scaricando jailkit, uno strumento che ci permetterà di fare questo:

Tutti i seguenti comandi vengono eseguiti come root

1. Per prima cosa dobbiamo scaricare il nostro server JailKit.

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

2. Dopodiché dobbiamo decomprimere il pacchetto ed entrare nella cartella appena apparsa:

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

3. Successivamente siamo passati alla compilazione e all'installazione del software (Vi lascio uno screenshot):

./configure
make
make install

. / Configure

make

make install

4. Pronto, questo è già installato. Adesso andiamo a creare la gabbia che conterrà i futuri utenti, nel mio caso l'ho creata in: / opt / e l'ho chiamata "jail", quindi il percorso sarebbe: / opt / jail :

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

5. La gabbia è già creata, ma non ha tutti gli strumenti necessari affinché i futuri utenti che saranno lì possano lavorare senza problemi. Voglio dire, fino a questo punto la gabbia è stata creata, ma è solo una scatola vuota. Ora metteremo nella gabbia alcuni strumenti di cui gli utenti in gabbia avranno bisogno:

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. Pronto, la gabbia esiste e ha già gli strumenti che l'utente può utilizzare ... ora ci serve solo ... l'utente! Creeremo l'utente kira e lo metteremo nella gabbia:

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

Nota: esegui il seguente comando in un terminale e dovrebbe avere un risultato simile a quello mostrato nello screenshot:

cat /etc/passwd | grep jk_chroot

Se noti che non appare nulla come lo screenshot, devi aver fatto qualcosa di sbagliato. Lascia un commento qui e sarò felice di aiutarti.

7. E voilà, l'utente è già in gabbia ... ma, è COSÌ ingabbiato, che non può connettersi tramite SSH, perché quando cerca di connettersi il server non gli consente:

8. Per consentire all'utente di connettersi dobbiamo fare un ulteriore passaggio.

Dobbiamo modificare il file etc / passwd della gabbia, cioè, in questo caso sarebbe / opt / jail / etc / passwd , in esso commentiamo la riga utente che abbiamo creato e ne aggiungiamo una nuova come:

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

Cioè, avremmo il file come questo 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

Notare bene i segni di punteggiatura duplicati e altri, è importante non lasciare cadere alcun 🙂

Dopo aver fatto ciò, l'utente può entrare senza problemi 😀

E questo è tutto.

Lo strumento che utilizziamo per tutto questo (jailkit) utilizzare nel backend chroot, che in realtà è quello che usano quasi tutti i tutorial. Tuttavia, usando JailKit diventa più semplice ingabbiare 😉

Importante!: Questo è stato testato su Spremere Debian (6) y Centos e ha funzionato al 100%, testato in Debian Wheezy (7) e ha anche funzionato, sebbene con un piccolo dettaglio, che il nickname dell'utente non è mostrato in ssh, ma non perde alcuna funzionalità.

Se qualcuno ha un problema o qualcosa non va, lascia quanti più dettagli possibile, non mi considero un esperto ma ti aiuterò il più possibile.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   v3on suddetto

    allora sarebbe qualcosa come i permessi in FTP? interessante

    esci sempre con tutto ciò che non sapevi nemmeno esistesse, come gli utenti in mysql xD

    1.    KZKG ^ Gaara suddetto

      Non esattamente, perché SSH non è la stessa cosa di FTP. SSH è una shell, cioè un terminale ... sareste in un terminale su un altro computer o server, potreste eseguire comandi, avviare processi, ecc ... fareste quanto l'amministratore del server vi consente 😉

      hahahahahaha nah dai, quello che succede è che pubblico cose più tecniche ... cioè, mi piace pubblicare piccole cose che non sono così popolari e interessanti. Ad esempio, personalmente non ho intenzione di pubblicare qualcosa il giorno in cui uscirà il nuovo Ubuntu, perché credo che molti ne parleranno già ... comunque quello che leggi qui nel post, non è qualcosa che viene letto ogni giorno o no? 😀

      1.    Damian rivera suddetto

        Molto buoni contributi grazie

        c'è anche un protocollo chiamato sftp che è ftp e Secure Shell insieme, sebbene non sia la stessa cosa che eseguire FTP su SSH: \

        saluti

        1.    KZKG ^ Gaara suddetto

          Sì, sì, ma ingabbiamento SSH automaticamente intrappolo chiunque si connetta usando SFTP, perché come dici tu, SFTP è in realtà SSH + FTP 😀

          saluti

  2.   Giskard suddetto

    Le immagini non si vedono !!! 🙁

    1.    KZKG ^ Gaara suddetto

      Un mio piccolo errore hehe, dimmelo adesso 😀

      1.    Giskard suddetto

        Pronto. Grazie 😀

  3.   marcisce87 suddetto

    bravissimo, lo indico ai miei preferiti per averlo a disposizione quando ne ho bisogno lol

    1.    KZKG ^ Gaara suddetto

      Grazie, qualsiasi domanda o problema, siamo qui per aiutarti 🙂

  4.   Manuale della Fonte suddetto

    Hanno Perseo in una gabbia. http://i.imgur.com/YjVv9.png

    1.    corretto suddetto

      LOL
      xD

  5.   jorgemanjarrezlerma suddetto

    Come stai.

    Sai, è un argomento che non conosco molto bene e che stavo controllando in BSD (PC-BSD e Ghost BSD) e lo trovo molto interessante e con funzionalità che possono essere molto utili.

    Lo terrò per riferimento e lo confronterò con il documento BSD. Grazie per l'informazione.

    1.    KZKG ^ Gaara suddetto

      Non avevo nemmeno familiarità con questo, perché non ho mai pensato di dare a qualcuno l'accesso SSH a nessuno dei miei server haha, ma quando ho trovato la necessità di farlo, volevo dare l'accesso ma senza la possibilità che qualcuno potesse fare qualcosa per errore che non doveva 😀

      Non l'ho mai provato su sistemi BSD, quindi non posso dirti che funzionerà, ma se stai cercando come eseguire il chroot in BSD, dovrebbe venire fuori qualcosa 😉

      Grazie per il commento amico 🙂

      1.    Damian rivera suddetto

        Ciao, io uso FreeBSD e ovviamente il jailkit funziona in effetti questo nei port

        Lo installi con questo comando

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

        O tramite pacchetto ftp

        pkg_add -r jailkit

        Solo nella configurazione (kira: x: 1003: 1003 :: / home / kira: / bin / bash)

        Devi aggiungere tcsh o sh, a meno che tu non abbia installato bash e aggiungi questo percorso

        / usr / local / bin / bash

        E qualche dettaglio in più, in Ghost BSD dovrebbe essere il processo simile ancora più semplice dato che è basato su FreeBSD

        saluti

  6.   adiazc87 suddetto

    Fantastico, lo stavo cercando; sai se funziona in Centos ?? Grazie.

    1.    KZKG ^ Gaara suddetto

      Non l'ho provato su Centos, ma sì dovrebbe funzionare :)
      Infatti ricordo che molti hanno utilizzato lo stesso strumento sui server Centos e Red Hat 😉

  7.   cyberalejo17 suddetto

    Molte grazie. Va direttamente ai segnalibri.

    1.    KZKG ^ Gaara suddetto

      Grazie a te per aver commentato 🙂

  8.   MV Altamirano suddetto

    Ottimo "trucco", super utile per gli amministratori di sistema. Ma anche meglio, ottimamente ben scritto. Cosa si può volere di più.
    La ringrazio molto per il contributo.

    1.    KZKG ^ Gaara suddetto

      Grazie, grazie mille per il tuo commento 😀
      saluti

  9.   LiGNuxero suddetto

    Lodate SSH haha
    Una volta ho provato a fare una gabbia per ssh ma nello stile tradizionale e la verità è che non è mai uscito correttamente. Se la gabbia era in esecuzione, non aveva nemmeno un bash, cioè era collegata e non era rimasto nulla ahah, se la shell era in esecuzione, poteva salire nella gerarchia delle directory e molti più quilombos haha ​​ma questo jailkit è una mazza, automatizza tutte quelle cose ... Altamente raccomandato

    1.    KZKG ^ Gaara suddetto

      haha grazie.
      Sì, in realtà SSH è una meraviglia per ciò che ci permette, che in realtà non è altro che ciò che il sistema consente quindi ... evviva Linux! ... haha.

  10.   nwt_lazaro suddetto

    Ciao, una domanda!
    perché cambiare la casa da (1) / opt / jail /./ home / kira a (2) / home / kira

    Dobbiamo modificare il file etc / passwd della gabbia, cioè, in questo caso sarebbe / opt / jail / etc / passwd, in esso commentiamo la riga utente che abbiamo creato e ne aggiungiamo una nuova come:

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

    In altre parole, il file passwd sarebbe simile a questo:

    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 suddetto

      Ciao 🙂
      Se non è impostato, l'accesso SSH non funziona, l'utente prova a connettersi ma viene automaticamente espulso ... sembra essere un bug o un problema con l'interprete che porta il JailKit, perché quando apporta questa modifica gli dice di usare il normale sistema bash, tutto funziona.

      1.    Omar ramirez suddetto

        Chiudo ancora la sessione ssh: C
        Usa 10.1 x64

  11.   Alessio suddetto

    Ciao ho installato questo e funziona benissimo mente molto bene in centos = D

    ma il mio dua è come fa per aggiungere più comandi ad esempio a un utente jail
    non è possibile eseguire il comando svn co http://pagina.com/carpeta

    Voglio dire, questo comando non esiste per gli utenti di jail in questo caso come fa per aggiungere questi comandi alla jail e ce ne sono molti altri che devo aggiungere.

    1.    KZKG ^ Gaara suddetto

      Ciao, come stai?
      Se vuoi abilitare il comando «svn» nella Jail hai il comando jk_cp
      Questo è:
      jk_cp / opt / jail / / bin / svn

      Presumendo che il file binario o eseguibile svn sia: / bin / svn
      E lascia che Cage / Jail sia: / opt / jail /

      Troverai comandi che dipendono da altri, cioè se aggiungi il comando «pepe» vedrai che devi aggiungere anche «federico», perché «pepe» dipende da «federico» da eseguire, se trovi questo allora aggiungi i comandi necessari e già 😉

      1.    Alessio suddetto

        Ottimo, lo sto provando nello stesso momento e ti dico cosa è successo, grazie mille = D

        1.    KZKG ^ Gaara suddetto

          Fortuna 😀

  12.   Alessio suddetto

    Sono riuscito a fare quello che mi hai detto ma in questo modo e automaticamente l'ha rilevato senza alcun problema, questo era il comando che ho usato per poter usare il subversion.

    jk_cp -j / home / jaul svn

    Beh io uso centos xP e forse è diverso ma buono
    ora vorrei sapere quali sono le librerie come svn ma ora vorrei compilare perché diciamo che ho bisogno di usare un comando come questo

    ./configure e contrassegna l'errore

    ./configure.lineno: riga 434: expr: comando non trovato

    Non saprei quali sono le librerie che ho già installato cos'è mysql e altre se si compila fuori dal jail ma non dentro jaui.

    Ci dispiace per l'inconvenienza.

    ps: dovresti mettere nella guida quello che ti ho detto sul comando usato in centos =) saluti.

    1.    KZKG ^ Gaara suddetto

      Guarda, quando ti dico che non riesce a trovare un comando (come qui) la prima cosa è trovare il comando:

      whereis expr

      Una volta trovato (/ usr / bin / expr e / usr / bin / X11 / expr) lo copiamo nella Jail con jk_cp 😉
      Prova questo per vedere.

      Sì, ho già modificato il post e aggiungo che funziona in Centos 😀

  13.   adiazc87 suddetto

    Grazie mille (:

  14.   Gesù suddetto

    Grazie per l'input…

  15.   karma suddetto

    Ciao, come stai?

  16.   djfenixchile suddetto

    Fanculo amico! Dal Cile i miei saluti. Sei scoreggia come me! LOL !. Abbracci. Il tuo post mi è stato di grande aiuto!

    1.    KZKG ^ Gaara suddetto

      Grazie per il tuo commento 😀

  17.   Daniel PZ suddetto

    Grazie mille per il post, mi ha aiutato molto, ma purtroppo nella parte di

    ////////////////////////////////////////////////// // //////////////////////////////////////////////// ////// //////////////////////
    Dobbiamo modificare il file etc / passwd della gabbia, cioè, in questo caso sarebbe / opt / jail / etc / passwd, in esso commentiamo la riga utente che abbiamo creato e ne aggiungiamo una nuova come:

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

    In altre parole, il file passwd sarebbe simile a questo:

    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
    ////////////////////////////////////////////////// //// //////////////////////////////////////////

    Mi causa lo stesso errore, voglio dire, lo lascio così com'è, e mi avvia dal terminale quando mi connetto ,,, .., commento la riga e ne aggiungo un'altra modificandola come indicato, e anche stivali me ...

    Installa l'ultima versione "jailkit-2.16.tar", crea anche uno script per risparmiare tempo, eccolo qui sotto:

    ////////////////////////////////////////////////// // //////////////////////////////////////////////
    #! / 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
    make
    make install
    exit
    ////////////////////////////////////////////////// ///////////////////////////

    Ovviamente prima accedono come "root" ...

    Come potrei risolvere l'errore amico ????

    1.    Daniel PZ suddetto

      Scusa, l'ho già preso, avevo fatto un errore sulla cartella Home, ma ho un grosso dubbio, come posso ottenerlo per farmi eseguire il comando "screen", cerco di usarlo (nell'utente in gabbia) , ma non funziona ... Un'altra cosa è che, come faccio a convincere questo utente in gabbia a eseguire il programma wine su un exe che ha appena messo in casa, come sarebbe?

  18.   Leonel suddetto

    ciao, bravissimo tuto! Sono nuovo in questi ambienti, ho una domanda ...
    Per quanto riguarda la sicurezza, vedo che nella sua root ha molte cartelle, sono necessarie? Voglio solo che abbia accesso alla sua cartella (ftp-upload e ssh-execute) in modo che possa eseguire un'applicazione, quali cartelle potrebbe eliminare dalla root? o non rappresenta alcun pericolo per me? Apprezzo in anticipo il tuo aiuto, saluti!

  19.   CubaRosso suddetto

    @ KZKG ^ Gaara, meno male che hai messo l'errore wheezy ma con la versione di jailkit-2.16.tar.gz che hai suggerito l'hanno risolto

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

  20.   Algave suddetto

    Penso che lo passerò a un PDF, jojo .. a cage e grazie wn 😀

  21.   Samuel suddetto

    Saluti amico, ho una domanda:

    Supponiamo di avere un utente chiamato "test".

    La domanda è: il file /home/test/.ssh/known_hosts che si trova nella home di quell'utente, è lo stesso file o non ha ingabbiato l'utente?

  22.   Richard suddetto

    Prova questo. Con questo metodo è possibile restringere la navigazione all'altra home degli altri utenti.

  23.   TZBKR suddetto

    Prima di tutto, grazie per il post! Mi sta essendo molto utile; ma ho due dubbi, e questi nascono dallo scenario che ho:

    Ho bisogno di creare N utenti con accesso indipendente e privato alla loro casa, ogni utente può accedere alla propria casa solo per depositare, modificare ed eliminare i file in essa contenuti senza doversi spostare da altri (ho già questo punto). Non richiede l'accesso tramite ssh.

    1. Devi creare una gabbia per ogni utente o c'è un modo per avere diversi utenti nella stessa gabbia ma ognuno ha la propria directory "privata"?

    2. Quando si accede (tramite client FTP) vengono mostrate tutte le directory create dallo strumento, c'è un modo per mostrare la cartella pulita? O ho fatto qualcosa di sbagliato lungo la strada?

  24.   eduardlh suddetto

    Ottimo tutorial! Mi è stato di grande aiuto, lo sto testando con la versione 2.17 su Ubuntu 14.04 e funziona molto bene. Ora ho la seguente sfida, una volta che l'utente è ingabbiato in modo che non possa spostarsi su alcun percorso, voglio che sia in grado di vedere solo il contenuto di un file che si trova in un altro percorso. Ho provato con un link simbolico ma quando provo a fare una coda o un gatto a questo file mi dice che non esiste anche se accedendo con l'utente posso elencare quel file nella home della gabbia.

    Se potessi aiutarmi te ne sarei molto grato, grazie in anticipo

  25.   yas suddetto

    Ciao, ho seguito tutto il manuale e accedendo con ssh si chiude automaticamente, traccia:

    4 dic 19:20:09 toby sshd [27701]: password accettata per il test dalla porta 172.16.60.22 62009 ssh2
    4 dicembre 19:20:09 toby sshd [27701]: pam_unix (sshd: session): sessione aperta per test utente da (uid = 0)
    4 dicembre 19:20:09 toby jk_chrootsh [27864]: ora entrando in jail / opt / jail per il test utente (1004) con argomenti
    4 dicembre 19:20:09 toby sshd [27701]: pam_unix (sshd: session): sessione chiusa per test utente

    grazie

  26.   Omar ramirez suddetto

    Non quando eseguo l'ultimo passaggio per consentire l'accesso ssh all'utente, chiude comunque la connessione 🙁

  27.   Benj suddetto

    Può essere possibile da questo utente creato passare a root? la tua radice? non me lo permette. Come sarebbe? Grazie per il tuo aiuto

  28.   Slevin suddetto

    Grazie mille per il tutorial, ne avevo bisogno per creare un utente che potesse usare clonezilla per creare un'immagine e copiarla su un server di terze parti ma che non poteva sciamare dove voleva

  29.   Mauro suddetto

    Buona! Avrei bisogno di sapere qualcosa.

    È possibile entrare come ROOT utilizzando FTP e avendo questi permessi, per gestirlo via FTP e non con SSH? Diciamo come creare una connessione, uno stile tunnel o qualcosa del genere. Come si fa? Configurazione del file VSFTPD?

    Molte grazie!