GNU/Linux >> Linux Esercitazione >  >> Debian

Come creare un utente ssh in jail con Jailkit su Debian/Ubuntu

Salve, oggi creeremo un utente ssh incarcerato con Jailkit su una scatola Debian Wheezy. Jailkit è un insieme di utilità per limitare gli account utente a file specifici utilizzando chroot() eo comandi specifici. Configurare una shell chroot, una shell limitata a un comando specifico o un demone all'interno di una jail chroot è molto più semplice e può essere automatizzato utilizzando queste utilità.

Jailkit è noto per essere utilizzato in dispositivi di sicurezza di rete di diverse aziende leader di sicurezza IT, server Internet di diverse grandi organizzazioni aziendali, server Internet di provider di servizi Internet, nonché molte aziende più piccole e utenti privati ​​che devono proteggere cvs, sftp, shell o processi demoniaci.

1. Installazione di JailKit

In primo luogo, scaricheremo e installeremo il Jailkit.

$ cd /tmp
$ wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
$ tar xvfz jailkit-2.17.tar.gz
$ cd jailkit-2.17

Nota:sostituisci jailkit-2.17 con la versione di jailkit che intendi installare.

Poiché Jailkit richiede alcuni pacchetti prima della sua installazione, li installeremo come segue:

$ sudo apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold python

Ora il nostro sistema è pronto per installare il Jailkit, installalo come segue:

$ ./debian/rules binary
$ cd ..
$ dpkg -i jailkit_2.17-1_i386.deb

Installerà Jailkit in Debian Server, possiamo rimuovere i pacchetti extra da /tmp:

$ rm -rf /tmp/jailkit*

2. Configurazione dell'ambiente jail

È necessario che ci sia una directory in cui verrà impostato l'intero ambiente jail. Facciamolo in /opt/jail. Questo può essere qualunque cosa.

$ sudo mkdir /opt/jail

Il root dovrebbe possedere questa directory. Quindi eliminalo.

$ sudo chown root:root /opt/jail

3. Abilitare i programmi per essere disponibili all'interno della jail

Tutti i programmi che devono essere disponibili nella jail devono essere copiati al suo interno usando il comando jk_init.
Esempio

$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp

I nomi come basicshell , editors , netutils sono gruppi che contengono più programmi. Ogni gruppo è un insieme di file eseguibili, librerie ecc. da copiare nella shell. Ad esempio, la sezione basicshell fornisce molti programmi come bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep ecc. nella jail.

Per un elenco completo delle sezioni che possono essere configurate, dai un'occhiata a /etc/jailkit/jk_init.ini.

4. Crea l'utente che verrà incarcerato

Hai bisogno di un utente da mettere all'interno della prigione. Creiamone uno

$ sudo adduser arun

Nota che questo è un utente normale che viene creato nel filesystem effettivo e non all'interno del jail.
Nella fase successiva questo utente sarà imprigionato all'interno della prigione.

A questo punto se dai un'occhiata a /etc/passwd vedrai una voce alla fine che assomiglia a questa

arun:x:1006:1005:,,,:/home/arun:/bin/bash

Questo è il nostro nuovo utente e l'ultima parte /bin/bash indica che l'utente ha un normale accesso alla shell del sistema, se effettua il login.

5. Incarcerare l'utente

Ora è il momento di mettere l'utente all'interno della prigione.

$ sudo jk_jailuser -m -j /opt/jail/ arun

In questo modo l'utente arun è stato ora incarcerato.
Ora se dai un'occhiata a /etc/passwd l'ultima voce sarebbe simile a questa

arun:x:1006:1005:,,,:/opt/jail/./home/arun:/usr/sbin/jk_chrootsh
Nota che le ultime 2 parti che indicano l'utente domestico e il tipo di shell sono cambiate. La directory home dell'utente è ora all'interno dell'ambiente jail in /opt/jail. La shell dell'utente è ora un programma speciale chiamato jk_chrootsh che fornirà la shell incarcerata.

È questa particolare shell chiamata jk_chrootsh che porta l'utente all'interno della prigione, ogni volta che accede al sistema.

La configurazione della prigione ormai è quasi completata. Ma se provi a connetterti a id da ssh, fallirà in questo modo:

$ ssh arun@localhost

La connessione verrà chiusa. Ciò accade perché l'utente ha effettivamente una shell limitata.

6. Dai la shell bash all'utente all'interno della prigione

Ora, la cosa importante che dovremo fare è fornire all'utente una shell bash adeguata, ma all'interno della prigione.
Apri il seguente file

$ sudo nano /opt/jail/etc/passwd

È il file della password all'interno della prigione. Sembrerebbe un po' così

root:x:0:0:root:/root:/bin/bash
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh

Cambia /usr/sbin/jk_lsh in /bin/bash

root:x:0:0:root:/root:/bin/bash
arun:x:1006:1005:,,,:/home/arun:/bin/bash

Salva il file ed esci.

7. Accedi alla prigione

Quindi ora è il momento di accedere di nuovo alla prigione

$ ssh arun@localhost

Ora abbiamo una shell bash completamente funzionante ma all'interno della prigione. Ora controlla l'ambiente muovendoti. La radice / dell'ambiente in jail è /opt/jail del file system reale. Ma siamo solo noi a saperlo, non l'utente incarcerato.

Inoltre solo i comandi che sono stati copiati tramite le sezioni jk_cp saranno disponibili in questa jail . Se l'accesso non riesce, controlla /var/log/auth.log per i messaggi di errore.

Ora prova a eseguire qualche comando di rete come wget o qualcosa di simile.

$ wget http://www.google.com/

Se ricevi un errore come questo :

$ wget http://www.google.com/
--2012-06-23 12:56:43-- http://www.google.com/
 Resolving www.google.com (www.google.com)... failed: Name or service not known.
 wget: unable to resolve host address `www.google.com'

Risolvilo eseguendo i seguenti 2 comandi:

$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2

La posizione esatta di libnss_files.so e libnss_dns.so può variare, quindi controlla.

8. Esecuzione di programmi o servizi nella prigione

Ora la configurazione è completa. Le jail sono utili per eseguire programmi o servizi in ambienti ristretti/sicuri. Per avviare un programma o un demone all'interno della jail, usa il comando jk_chrootlaunch.

$ sudo jk_chrootlaunch -j /opt/jail -u arun -x /some/command/in/jail

L'utilità jk_chrootlaunch può essere utilizzata per avviare un processo particolare all'interno dell'ambiente jail con i privilegi dell'utente specificato. Se il demone non si avvia, controlla /var/log/syslog per i messaggi di errore.

Per eseguire il programma all'interno della jail, è necessario prima copiare completamente il programma all'interno della jail utilizzando il comando jk_cp.

jk_cp - un'utilità per copiare file inclusi permessi e librerie in una jail

Conclusione

Infine, abbiamo creato un ssh incarcerato funzionante con l'aiuto di Jailkit nel nostro server Debian/Ubuntu. Si limitava a un comando specifico oa un demone all'interno di una jail chroot con utilità automatizzate. Per ulteriori informazioni sui vari comandi di jailkit, consulta la documentazione sul sito Web di olivier. Se hai domande o domande per favore commenta.


Debian
  1. Come creare un utente SSH in jail con Jailkit su Debian 9 (Stretch)

  2. Come creare un utente Sudo su CentOS, Ubuntu e Debian

  3. Configura una shell incarcerata con jailkit su Ubuntu

  4. Come creare ed eliminare utenti su Ubuntu 16.04

  5. Come creare ed eliminare un utente su Debian 9

Come creare un utente SFTP con autorizzazioni di directory specificate in Ubuntu 20.04

Come creare un utente Sudo in Ubuntu Linux

Come configurare ModSecurity con Nginx su Debian/Ubuntu

Come creare un utente solo SFTP in Debian 11

Come installare sudo su Debian o Ubuntu Linux

Come creare un utente Sudo su Ubuntu e Debian