Come utilizzare Restricted Shell per limitare ciò che un utente Linux può fare

0
4

Una finestra di terminale su un sistema Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Una shell con restrizioni limita ciò che un account utente può fare su Linux. Un utente con restrizioni non può modificare la propria directory e sei tu a controllare a quali comandi ha accesso. Ecco come configurare una shell con restrizioni su Linux.

Conchiglie limitate

Una shell con restrizioni non è una shell diversa. È una modalità diversa di una shell standard. Le shell Bash, Korn, Fish e altre possono essere avviate in modalità shell limitata. Useremo Bash in questo articolo, ma gli stessi principi si applicano alle altre shell.

Poiché le shell limitate sono solo un altro modo di utilizzare la shell standard, sono facili da configurare. Non c’è niente da installare e sono disponibili ovunque si trovi Linux.

Le shell limitate possono essere applicate anche agli script. Ciò garantisce che qualsiasi danno che possono causare se sono stati scritti in modo errato è limitato ai confini del loro mondo limitato e che non hanno accesso all’intero computer.

Tieni presente, tuttavia, che i gusci limitati non sono completamente a prova di fuga. Qualcuno con una conoscenza sufficiente può sfuggire a un guscio limitato. Sono ottimi per porre limiti sicuri a un utente occasionale, ma non fare affidamento su shell limitate per la sicurezza del mondo reale su un sistema di produzione.

RELAZIONATO: Qual è la differenza tra Bash, Zsh e altre shell Linux?

Bash ristretto

Quando esegui Bash come shell con restrizioni, all’utente vengono rimosse alcune funzionalità. In particolare, l’utente non può:

  • Uso cd per cambiare la directory di lavoro.
  • Modificare i valori di $PATH , $SHELL , $BASH_ENV , o $ENV variabili ambientali (ma possono leggere i valori correnti).
  • Leggi o cambia $SHELLOPTS opzioni ambientali shell.
  • Reindirizzare l’output di un comando.
  • Richiama comandi che richiedono un percorso per individuarli. Cioè, non puoi emettere un comando che ha una o più barre in avanti “/” dentro.
  • Invocare exec per sostituire un processo diverso per la shell.
  • Utilizzare una delle funzionalità limitate in uno script.
Annuncio pubblicitario

Puoi invocare una shell Bash ristretta usando il pulsante -r (limitato) opzione. È vietato tentare di eseguire un’attività semplice come cambiare la directory di lavoro. Un messaggio conciso te lo dice cd è limitato.

bash -r
cd Documents

La shell Bash può anche rilevare quando è stata invocata usando “rbash” invece di “bash”. Questo fa sì che inizi anche come shell con restrizioni. Ciò fornisce un modo conveniente per impostare la shell predefinita per un particolare utente, che useremo presto.

Se usiamo il whereis comando su Ubuntu per cercare il rbash file, vedremo che l’eseguibile si trova nella directory “usr/bin”. La pagina man si trova nella directory “/usr/share/man/man1”.

Usando il ls comando con il -l L’opzione (lunga) rivela che rbash è in realtà un collegamento simbolico a bash .

whereis rbash
ls -l /usr/bin/rbash

Su Manjaro e Fedora, il rbash doveva essere creato un collegamento simbolico. Funziona su entrambe le distribuzioni:

whereis rbash
sudo ln -s /bin/bash /bin/rbash
whereis rbash

Annuncio pubblicitario

La seconda volta che usiamo il whereis comando, trova rbash nella directory “/usr/bin”.

Limitazione di un utente

Creiamo un nuovo account utente chiamato “Minnie”. Imposteremo la loro shell come shell ristretta usando il -s (shell) opzione del useradd comando. Imposteremo anche la password dell’account utilizzando ilpasswd comando e creeremo una cartella home per loro.

Il -p (genitori) bandiera nel mkdir comando dice mkdir per creare la directory di destinazione e tutte le directory padre che deve creare. Quindi, creando la directory “/home/minnie/bin”, creiamo contemporaneamente la directory “/home/minnie”.

sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin

Quando minnie accede, verrà eseguita in una shell con restrizioni.

cd

Non può invocare comandi che devono includere una barra “/“:

/usr/bin/ping

Tuttavia, può ancora eseguire i comandi che si trovano nel percorso.

ping

Annuncio pubblicitario

Non è il comportamento che ti saresti aspettato, e di certo non è quello che vogliamo. Per inasprire ulteriormente le restrizioni, dobbiamo cambiare il percorso che la shell di Minnie utilizzerà per cercare i comandi.

Stringere le restrizioni

Quando abbiamo creato la directory home di minnie “/home/minnie”, abbiamo anche creato una directory “/home/minnie/bin”. È qui che entra in gioco quella directory.

Modificheremo il file “.bash_profile” di Minnie e imposteremo il suo percorso in modo che punti solo a quella directory. Limiteremo anche il file “.bash_profile” di minnie in modo che solo root possa modificarlo. Ciò significa che nessun altro utente può modificare quel file e cambiare il suo percorso.

sudo gedit /home/minnie/.bash_profile

Modifica il “PATH=” esistente o aggiungi la seguente riga:

PATH=$HOME/bin

Salva il file. Cambieremo il proprietario del file in root usando il chown comando e modificare i permessi del file utilizzando il chmod comando. Solo l’utente root potrà modificare il file.

sudo chown root:root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile

La prossima volta che l’utente minnie accede, il suo percorso punta a una singola cartella.

Annuncio pubblicitario

Il nostro utente con restrizioni Minnie può utilizzare solo i comandi incorporati di Bash come echo, alias, e logout. Non può nemmeno usare ls!

ls

Dovremo allentare un po’ la nostra stretta se vogliamo che siano in grado di fare qualcosa di utile. Creeremo dei collegamenti simbolici dalla directory “bin” di minnie ai comandi che vogliamo che minnie possa usare.

sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin

Al successivo accesso di Minnie, scoprirà che può utilizzare i comandi incorporati di Bash, oltre a quei comandi a cui è stata collegata.

ls
pinky dave
uptime

Limitazione degli utenti esistenti

Abbiamo creato minnie come nuovo utente. Per cambiare la shell di un utente esistente, possiamo usare il -s (shell) opzione del usermod comando.

sudo usermod -s /bin/rbash mary

Puoi usare il less comando sul file “/etc/passwd” per vedere rapidamente quale shell è impostata come shell predefinita dell’utente.

less /etc/passwd

Possiamo vedere che l’utente mary utilizzerà la shell con restrizioni al successivo accesso.

Annuncio pubblicitario

Ricorda di applicare le altre modifiche alle restrizioni $PATH variabile d’ambiente e per impostare i comandi che si desidera che l’utente possa eseguire.

Script di restrizione

Un utente normale e senza restrizioni può avviare script che vengono eseguiti in una shell con restrizioni. Copia le seguenti righe e incollale in un editor. Salva il file come “restricted.sh” e chiudi l’editor.

#!/bin/bash

# script starts in normal Bash shell
echo "## In UNrestricted mode! ##"

echo
echo "Current directory: `pwd`"
echo "Changing directory"
cd /usr/share
echo "Now in directory: `pwd`"
echo "Changing to home directory"
cd ~
echo "Now in directory: `pwd`"

# Setting restricted mode
set -r

echo
echo "## In restricted mode! ##"

echo
echo "Current directory: `pwd`"
echo "Changing directory to /home/"
cd /home
echo "Still in directory: `pwd`"

echo
echo "Trying to start another shell"
/bin/bash

echo
echo "Trying to redirect command output"
ls -l $HOME > my_files.txt
cat my_files.txt
echo

exit 0

Dobbiamo usare il chmod comando con il +x (esegui) per rendere eseguibile lo script.

chmod +x restricted.sh

La prima parte dello script viene eseguita in una shell normale.

./restricted.sh

La seconda parte dello script, il bit dopo la riga “set -r”, viene eseguita in una shell ristretta.

Nessuna delle azioni tentate riesce nella parte limitata dello script.

Annuncio pubblicitario

Un intero script può essere eseguito in una shell ristretta aggiungendo -r alla prima riga:

!#/bin/bash -r

Ricorda Houdini

Le shell limitate sono utili, ma non completamente infallibili. Un utente sufficientemente esperto potrebbe essere in grado di evitarli. Ma se usati con giudizio, sono un modo utile per stabilire una serie di limitazioni per un particolare account.

LEAVE A REPLY

Please enter your comment!
Please enter your name here