Protezione degli ambienti di shell limitati

9

Ho letto alcune cose per indicare che le shell ristrette possono essere scomposte se non implementate correttamente (anche wikipedia , ad esempio).

Sto cercando delle indicazioni su cosa causa problemi di sicurezza nelle shell ristrette e su come risolvere questi problemi.

Suppongo che il problema principale siano i binari che permetti all'utente di usare; se qualcuno di questi programmi facilita l'esecuzione di ulteriori programmi / script con privilegi più elevati.
Significa che una shell rbash predefinita è relativamente sicura?
Ci sono programmi specifici che sono (più o meno) decisamente sicuri / non sicuri (finora ho visto esempi specifici di vim e scp usati per scoppiare)?
E ci sono altre cose a cui pensare?

Inoltre, ci sono alternative migliori all'utilizzo di una shell limitata quando si desidera limitare i comandi che possono essere eseguiti da un utente?


Aggiornamento 1
In seguito a quanto menzionato da bstpierre con ssh command =, qualcuno ha provato a usare command = per forzare l'utente a eseguire uno script che ha ricevuto input dall'utente usando SSH_ORIGINAL_COMMAND e poi ha eseguito comandi / programmi aggiuntivi limitati basati su quell'input? Immagino che questo avrebbe un caso d'uso piuttosto limitato, ma mi sembra praticabile fintanto che la sceneggiatura è stata cauta sull'input che ha accettato.

Aggiornamento 2
Il suggerimento che ho fatto nell'aggiornamento 1 risulta essere esattamente ciò che fa la gitolite; usando command = e SSH_ORIGINAL_COMMAND, con qualche uncino magico per differenziare i rami. Informazioni dai loro documenti .
So che questo metodo è un'alternativa valida, ma sono ancora in attesa di una risposta alla query originale sulle shell con restrizioni.

    
posta Demelziraptor 13.12.2011 - 18:36
fonte

1 risposta

9

Ho impostato ambienti di shell limitati che mettono l'utente in una prigione chroot. Solo i file eseguibili minimi sono copiati nella prigione. L'utente della shell non ha praticamente permessi nella prigione - tutto è predefinito per negare e io fornisco solo le autorizzazioni laddove necessario. È possibile combinare la prigione con rbash per un ulteriore livello di protezione. Il vantaggio di una prigione chroot è che, se l'utente esce da rbash, è ancora bloccato in una prigione chroot e non può accedere al resto del sistema. (Ci sono stati casi in cui è stato possibile uscire da una prigione di chroot, ma costruita correttamente su un sistema operativo con patch è difficile da attaccare.)

Un altro punto da considerare è se è davvero necessario fornire una shell. Il servizio che è necessario fornire può essere configurato come un servizio Web semplice e sicuro?

Infine, se la shell viene fornita tramite ssh, è possibile limitare il set di comandi disponibile all'utente richiedendo l'accesso tramite le chiavi e impostando command= nel file authorized_keys. Devi stare attento qui, però, perché se i comandi che permetti permettono all'utente di "scoppiare", non stai meglio che con lo stesso attacco contro una shell ristretta.

    
risposta data 13.12.2011 - 20:06
fonte

Leggi altre domande sui tag