Danilo Poccia - Tecnologia et al.
Processi & Privilegi con Solaris 10 OS
Tradizionalmente in ambiente Unix la gestione dei privilegi è realizzata tramite l'uso di utenti e ruoli (v. RBAC in the Solaris Operating Environment). Ogni utente è associato ad un ruolo e ne eredita i permessi necessari per le proprie attività. Putroppo spesso, nell'operatività quotidiana dei sistemi, questo modello porta ad un sovrautilizzo della UID 0 (ovvero dell'utente root) con un approccio del tipo "tutto o niente".
Il sistema operativo Solaris 10 introduce, non in alternativa ma in unione alla metodologia precedente, una nuova modalità di gestione dei privilegi, basata sull'utilizzo dei privilegi minimi richiesti da un processo per poter svolgere le attività richieste.
In tale modo si possono eliminare, da quei processi critici che richiedono l'utilizzo di ruoli potenzialmente rischiosi, quei privilegi non richiesti che, per semplicità di amministrazione, sarebbero rimasti comunque associati al ruolo e quindi all'utente.
Viceversa si possono estendere i privilegi di un processo al di là di quelli assegnati all'utente in base al suo ruolo, evitando di estendere i permessi a livello di ruolo o di utente, o addirittura di dover ricorrrere all'utilizzo dell'utente root. Questo secondo approccio "incrementale" è quello consigliato per una corretta politica di sicurezza.
Con Solaris 10 OS ogni processo ha assegnati 4 insiemi di privilegi:
- Effective
Sono i privilegi effettivi ed utilizzabili dal processo. I privilegi possono essere aggiunti o rimossi da questo insieme in base al contenuto degli altri insiemi. - Permitted
E' il limite superiore dei privilegi permessi al processo. Se dei privilegi sono rimossi da questo insieme, l'insieme Effective sarà modificato di conseguenza, rimuovendoli a sua volta. - Inheritable
Indica l'insieme dei privilegi che sarà di default assegnato come Permitted ed Effective ai processi figli generati dal processo stesso. - Limit
E' il limite superiore per l'insieme Inheritable. Solitamente contiene tutti i privilegi.
Il comando che permette di verificare e cambiare i privilegi di un processo è ppriv(1). Per avere una lista dei privilegi disponibili il comando è:
# ppriv -l
Con il parametro "-v" si aggiunge ad ogni privilegio una descrizione:
# ppriv -lv
Per verificare lo stato dei privilegi del proprio processo unix (quello della shell che si sta utilizzando) si può utilizzare il comando:
# ppriv $$
dove $$ è sostituito dalla shell unix con il pid (process id) del proprio processo.
Esistono alcuni insiemi standard di privilegi (ad es. basic e all) che sono utilizzati per rendere più sintetico l'output del comando precedente. Per vedere a quali privilegi corrisponde un insieme standard (ad es. basic) il comando è:
# ppriv -lv basic
con o senza il parametro "-v" per avere anche una descrizione dei privilegi indicati.
Proviamo ora a modificare i privilegi di un processo, utilizzando le funzionalità di debugging per verificare, in caso si incontrino delle limitazioni, quali privilegi mancano per l'esecuzione di un determinato comando.
Per semplicità utilizzeremo la sintassi:
# ppriv -e -s spec command
dove spec indica con una opportuna sintassi come modificare i privilegi per l'esecuzione del comando command.
Il comando seguente lancia una nuova shell per l'esecuzione del comando ls:
# sh -c ls
Rimuovendo il privilegio al processo figlio (lavorando sull'insieme Inheritable) di poter effettuare "fork", si ottiene il seguente output:
# ppriv -e -s I-proc_fork sh -c ls
sh: permission denied
Per effettuare un debug dei privilegi mancanti (che sono in questo modo indicati) è sufficiente aggiungere il paramentro "-D":
# ppriv -e -D -s I-proc_fork sh -c ls
sh[60657]: missing privilege "proc_fork" ...
sh: permission denied
E' possibile utilizzare il framework DTrace per monitorare l'utilizzo dei privilegi da parte di processi, applicazioni o zone. Un esempio è il Privilege Debugging Tool del sito della comunità OpenSolaris, descritto nel corrispondente Blueprint.
Per ulteriori informazioni:
- The Least Privilege Model in the Solaris 10 OS
- XPert Transcript: Process Rights Management in the Solaris 10 OS
- Solaris 10 Security Presentation
- OpenSolaris Community: Security
Posted at 12:21PM feb 27, 2006 by danilop in Solaris | Comments[0]


