Modo semplice e facile per gli utenti in prigione


33

Ho bisogno di un modo semplice e facile per imprigionare gli utenti nelle loro home directory in Oneiric. Hai una configurazione semplice per gli utenti in jailing, con pieno aiuto o alcuni buoni collegamenti web?

Offrirò un server pubblico gratuito online con 10-20 GB di spazio libero. Non so quanti utenti. Voglio dare loro SSH e SFTP in modo che possano connettersi tramite FileZilla.


2 ° aggiornamento se gli utenti non sono bloccati nelle home directory
One Zero

allora ti credo 1-come menzionato da @Marco vuoi provare ChrootDirectory per SSH 2- potresti voler andare oltre i modi standard di fare le cose in quanto è necessario ridimensionarlo per gestire "molto" di archiviazione, ... 3- SSH è la scelta migliore? le persone hanno bisogno di SSH al tuo servizio? 4- Buona fortuna
Ali

1
ho anche un altro piano .... per gli utenti normali offriremmo solo SFTP con MY SHURE SHELL, è molto facile 2 handle
One Zero

Come posso rimuovere questo jail ad es. (Home / jail)? <br> E quando aggiungo una sezione jail ad es. Jk_init -v -f / home / jail netutils, come lo rimuoverò?

Risposte:


23

Jailkit è un insieme di utilità che possono limitare gli account utente a un albero di directory specifico e a comandi specifici. Configurare una prigione è molto più semplice usando le utility Jailkit che lo fanno "a mano". Una jail è un albero di directory creato all'interno del file system; l'utente non può vedere alcuna directory o file al di fuori della directory jail. L'utente viene imprigionato in quella directory e nelle sue sottodirectory.

Scarica e installa:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Configurare la prigione

Ora è il momento di impostare la directory jail. Gli utenti imprigionati vedranno questa directory come directory principale del server. Ho scelto di usare / home / jail:

mkdir /home/jail
chown root:root /home/jail

jk_init può essere utilizzato per creare rapidamente una jail con diversi file o directory necessari per un'attività o un profilo specifici (fare clic su di esso e leggere tutti i dettagli).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Aggiungi un utente

Aggiungi un nuovo utente con una home directory e una shell bash e imposta la password:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Ora è il momento di imprigionare questo utente

utilizzare il seguente comando:

jk_jailuser -m -j /home/jail jailtest

Il tuo /etc/passwddovrebbe contenere qualcosa di simile ora:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Abilita bash

Usando jk_cp le librerie bash vengono copiate nella jail:

jk_cp -v -f /home/jail /bin/bash

modificare /home/jail/etc/passwd

sostituire questa linea:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

con questo:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Manutenzione

Utilizzando gli jk_updateaggiornamenti sul sistema reale può essere aggiornato in prigione.

Un ciclo a secco mostrerà cosa sta succedendo:

jk_update -j /home/jail -d

Senza l'argomento -d viene eseguito il vero aggiornamento. Altre operazioni di manutenzione sono disponibili qui.

(Nel caso /home/jail/optmanchi, crealo con mkdir -p /home/jail/opt/ Ed esegui di jk_update -j /home/jailnuovo)

Dare accesso ad altre directory

È possibile montare cartelle speciali a cui l'utente della jail potrebbe accedere ora. Per esempio:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Aiuto preso

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (un ottimo aiuto)

Anche questo

Questo è stato verificato e verificato, funzionando correttamente


+1 molto buono. consiglio vivamente di leggere anche i link sopra menzionati nella sezione "Aiuto preso"
cwd

2
Questo non funziona su Ubuntu 13.10. Quando provi ad accedere finalmente ricevi subito il messaggio di benvenuto seguito da una connessione chiusa.
Matt H

Matt H: assicurati di seguire gli ultimi due passaggi; copiando i binari bash e modificando il file / home / jail / etc / passwd.
ONOZ,

2
Questo non funziona più o qualcosa è cambiato da quando questo tutorial è stato messo in piedi. Sto ottenendo esattamente gli stessi problemi di MattH.
James Heald,

Ho anche avuto il problema di connessione chiusa immediatamente dopo il messaggio di benvenuto. Ho cambiato la shell di accesso all'interno del file chwot passwd da jk_lsh a bash come letto qui linuxquestions.org/questions/linux-software-2/… Non è una soluzione ma una soluzione alternativa!
Attila Fulop,

6

Non puoi limitarli a / home poiché hanno bisogno di accedere ai file binari di sistema e ai file bash e di configurazione in / etc

IMO il metodo più semplice per proteggere gli utenti è usare apparmor.

Fai un collegamento reale

ln /bin/bash /usr/local/bin/jailbash

Aggiungi jailbash a / etc / shells

Quindi assegnare il jailbash alla shell degli utenti e quindi scrivere un profilo apparmor per il jailbash che consenta un accesso minimo.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Dovrai scrivere tu stesso un profilo apparmor, ma ho un profilo che potresti potenzialmente iniziare

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash


You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcNon c'è nulla che ti impedisca di collegare / copiare i file che ritieni necessari.
user606723

1
Sì, "puoi" fare come suggerisce user606723, ma non è così semplice e l'IMO di tutte le potenziali soluzioni è il meno pratico o facile. Potrebbe anche costruire un chroot o usare lxc. Copia un file binario, quindi le librerie. Spesso dovrai identificare manualmente le librerie con ldd. Questo metodo richiede un sacco di lavoro per essere impostato. E poi devi mantenere aggiornato il carcere, dovrai aggiornare (copiare) manualmente i binari / librerie. I collegamenti potrebbero funzionare meglio in termini di aggiornamenti, ma è comunque necessario configurarli tutti. In qualche modo non penso che questo sia ciò che l'OP aveva in mente. Come poi tenerli confinati?
Pantera

1
Penso che il punto centrale della domanda fosse individuare strumenti per automatizzare questo processo ... come jailkit, uno strumento menzionato dall'OP.
user606723

@ bodhi.zazen. cosa ne pensi di questo ... debootstrap (onirico) quindi crea un contenitore usando lxc. utilizzando il kit jail> utente nel contenitore>. quello che ho fatto finora è che ho debbootstrap minimo onirico quindi ho usato il jailkit> funziona bene
One Zero

è possibile utilizzare LXC per questa attività, attenzione che l'isolamento a volte è incompleto con LXC. Finché gli utenti non hanno accesso come root nel contenitore, dovresti essere OK e potresti voler iscriverti alla mailing list di LXC.
Pantera

1

È difficile indovinare quale scopo potresti voler raggiungere. Se si tratta di negare ssh / sftp fornendo al contempo l'accesso in jailing tramite FTP ... facile:

Aggiungi a / etc / shells una nuova shell:

sudo -e /etc/shells

Aggiungi una riga:

/bin/false

Salvare. Per ogni utente a cui si desidera negare ssh / sftp, modificare la shell dell'utente:

sudo chsh -s /bin/false userx

Ora userx non può accedere tramite ssh / sftp.

Installa vsftpd:

sudo apt-get install vsftpd

Modifica il file di configurazione:

sudo -e /etc/vsftpd.conf

E alcuni cambiamenti ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Salvare. Riavvia vsftpd:

sudo /etc/init.d/vsftpd restart

beh, voglio dare loro ssh + sftp (connettersi tramite filezilla)
One Zero

0

Puoi dare un'occhiata rbashcome shell per i tuoi utenti.

man bash

Cerca la RESTRICTED SHELLsezione

Oppure guarda in questa pagina http://linux.die.net/man/1/bash


3
Basta stare molto attenti con rbash, è molto facile uscire e in qualche modo considerati obsoleti. Vedi blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther

@ bodhi.zazen Intendi rbash?
Karlson,

si, scusa se l'ho risolto. C'era un blog diversi anni fa in cui qualcuno ha rotto la nostra di una prigione rash da me creata, e ho pensato che fosse una prigione minima e stretta. Li ho presi meno di 5 minuti. Nessuno ha fatto uscire il jailbash.
Pantera

puoi dirmi come posso configurarlo ... jailbash
One Zero

sì, man bash aiuta, usare le funzionalità shell limitate bash è più semplicemente
c4f4t0r,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.