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.