3 581
contributi
(→Esempio di configurazione: aggiunta sezione per le considerazioni di sicurezza) |
|||
Riga 98: | Riga 98: | ||
# | # | ||
Defaults env_reset | Defaults env_reset, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | ||
# Configurazione di default per root | # Configurazione di default per root | ||
Riga 116: | Riga 116: | ||
# Definisco degli alias per i comandi che voglio impedire | # Definisco degli alias per i comandi che voglio impedire | ||
Cmnd_Alias NSHELLS = /bin/sh,/bin/bash | Cmnd_Alias NSHELLS = /bin/sh, /bin/bash, /bin/dash | ||
Cmnd_Alias NSU = /bin/su | Cmnd_Alias NSU = /bin/su | ||
Cmnd_Alias NVISUDO = /usr/sbin/visudo | Cmnd_Alias NVISUDO = /usr/sbin/visudo | ||
Riga 132: | Riga 132: | ||
</pre> | </pre> | ||
==== Valutazioni di sicurezza ==== | |||
Le restrizioni operate con '''!''' non sono '''MAI''' realmente efficaci contro malintenzionati se si permette l'uso di ''ALL'', vista la difficoltà di immaginare a priori tutti i comandi possibilit. Al limite comunicano che i SUPERUSERS non dovrebbero eseguire tali comandi o equivalenti con lo stesso effetto. | |||
L'unico modo per restringere le attività che un utente può eseguire come amministratore è limitarlo a una lista predeterminata di eseguibili, valutando singolarmente che non siano sfruttabili anche per altre azioni, come per esempio eseguire una shell o alterare il sistema in modo arbitrario.} | Non sarebbe vietato avviare altri interpreti (<code>awk</code>, <code>perl</code>, <code>python</code>, ...), eseguibili con una shell di escape (in grado di avviare una shell, tra cui perfino alcuni giochi) e in generale comandi in grado di avviarne altri (<code>env</code>, <code>find</code>, ...) o di contenere più sessioni (<code>screen</code>, <code>tmux</code>, ... ) o terminali grafici, editor di testo (<code>nano</code>, <code>vi</code>, ...) o qualsiasi comando in grado di alterare un file (<code>cp</code>, <code>mv</code>, <code>chmod</code>, <code>chown</code>, <code>tee</code>, <code>dd</code>, ...) per poter modificare <code>/etc/sudoers</code>. | ||
Se anche tutti questi venissero vietati, sarebbe sempre possibile fare copie di una shell con altri nomi e perfino creare nuovi eseguibili che modifichino file con [[privilegi di amministratore]]. | |||
L'unico modo per restringere le attività che un utente può eseguire come amministratore è limitarlo a una lista predeterminata di eseguibili, valutando singolarmente che non siano sfruttabili anche per altre azioni, come per esempio eseguire una shell o alterare il sistema in modo arbitrario.} | |||
E si noti che perfino rimuovendo ''ALL'' il solo <code>dpkg</code>, utilizzabile dagli ADMIN, è in grado di installare software esterno a Debian, creabile da chiunque se in forma di [[pacchetto|pacchetto deb]], e può essere quindi sfruttato per ottenere pieni privilegi di amministratore. E anche i comandi <code>apt-get</code> e <code>aptitude</code> durante un aggiornamento, in presenza di configurazioni cambiate, possono permettere di accedere a una shell con permessi di [[root]]. | |||
Questo per dire che a volte la sicurezza ottenuta da tali file di configurazione, pur riducendo di molto gli usi consentiti, è soltanto apparente senza un'attenta valutazione delle conseguenze per ogni comando permesso. E spesso, come nell'esempio precedente, non è possibile impedirne l'abuso senza togliere anche la possibilità di svolgere un'attività di amministrazione, il che non è accettabile. Le regole scritte nel file di configurazione in questi casi servono a comunicare a un amministratore minore le funzioni che è autorizzato a svolgere, che possono essere monitorate tramite i log delle attività, predisponendo dei sistemi di protezione (hardware o tramite ''Mandatory Access Control'') che ne garantiscano l'integrità. | |||
== Esempio di sessione ''sudo'' == | == Esempio di sessione ''sudo'' == |
contributi