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.