L'amministrazione di una rete locale di grandi dimensioni può risultare onerosa per un solo soggetto: è quindi utile delegare ad altri utenti non privilegiati alcuni compiti come ad es la gestione degli account di utente, riavvio dei servizi, gestione di stampanti e copie di backup, gestione del server Web.
Tale possibilità viene offerta da Sudo (superuser do), disponibile nelle versioni più recenti di Linux o reperibile dal sito http://www.sudo.ws e offre un notevole vantaggio in ambito di sicurezza perchè limita la conoscenza della password di root. Le principali caratteristiche di Sudo sono:
- Limitare o permettere la possibilità di eseguire un certo comando ad un gruppo o ad un singolo utente
- Logging, per ogni comando eseguito.
- Ticketing system, cioè la possibilità di inserire una sola volta la password anche in caso di una sequenza di comandi (per sicurezza sarebbe consigliabile configurare un certo timeout).
- La struttura del file di configurazione permette di avere un file di configurazione valido per più host.
Quanto affermato ci fa comprendere che Sudo necessita di leggere le password perchè‚ verifica la password dell'utente quando viene richiamato ed è utile in questo caso in particolare utilizzare le password shadow.
Il meccanismo delle password shadow si basa su un principio molto semplice: nascondere le password cifrate ai processi che non hanno i privilegi dell'utente root. Infatti, nei sistemi in cui le password shadow non sono attivate, è il file /etc/passwd, leggibile a tutti i tipi di utenti, che contiene tali password cifrate.
Il problema nasce dal fatto che è possibile scoprire la password degli utenti attraverso programmi che vanno alla ricerca della parola che corrisponde alla password cifrata.
Tali programmi vengono eseguiti SUID(Set User ID) root e bisognerebbe settare il bit SUID. Per settare il bit SUID si deve agire come utente root per poter cambiare i cambiare i permessi e la proprietà. Un esempio:
user$ su
Password: ******
Si cambia la proprietà del file.
root# chown root.root nomefile [Invio]
root# ls -l nomefile
-rwxr-xr-x 1 root root 14367 Dec 12 08:15 nomefile
Si attribuisce il permesso SUID.
root# chmod u+s nomefile
root# ls -l nomefile
-rwsr-xr-x 1 root root 14367 Dec 12 08:15 nomefile
Si può quindi ritornare allo stato precedente, lasciando i privilegi dell'utente root e riprendendo l'identità dell'utente user.
root# exit
Si può provare a creare un file utilizzando l'eseguibile nomefile su cui è stato attivato il bit SUID.
user$ ./ nomefile copiafile
user$ÿls -l copiafile
-rw-rw-r-- 1 root user 0 Dec 12 08:20 copiafile
Si può osservare che il file creato appartiene all'utente root, pur essendo stato creato da un utente comune e di conseguenza come sia consigliabile usare il permesso SUID con oculatezza.
Per verificare se il bit SUID del comando passwd sia settato:
[root]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 15345 Dec 12 08:25 /usr/bin/passwd
Il carattere s al posto della x nei permessi indica l'attivazione di SUID.
Detto questo va comunque sottolineato che Sudo già viene eseguito SUID, perciò si può accedere al file /etc/shadow.
Sudo per la shadow suite si trova su: ftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo- 1.2-shadow.tgz
E' importante sapere che quando si installa Sudo il file /etc/sudoers sarà sostituito con uno predefinito, perciò sarebbe opportuno farne una copia di backup. Il pacchetto è già predisposto per le shadow, perciò tutto quello che viene richiesto è di ricompilare il pacchetto
(mettetelo in /usr/src):
# cd /usr/src
# tar -xzvf sudo-1.2-shadow.tgz
# cd sudo-1.2-shadow
#./configure
# make all
# make install
Su Gentoo esiste un pacchetto specifico per sudo:
# emerge sudo
Per la compilazione, l'ebuild controlla l'esistenza di pam nella variabile USE, il che determina il parametro di configurazione with-pam o without-pam.
Riepiloghiamo: sudo svolge la funzione di permettere a determinati utenti (e solo a loro) i eseguire determinati comandi (e solo quelli) da determinati host (e solo da quelli) con i privilegi di amministratore. Inoltre, consente di monitorare l'attività dei delegati inserendo nel registro di sistema (syslog) tutte le chiamate a sudo con i relativi argomenti. L'impostazione delle deleghe viene realizzata tramite il file di configurazione /etc/sudoers, che tipicamente è accessibile solo da root e che deve essere modificato tramite l'editor visudo (una versione dell'editor vi dedicata a questo scopo).
La sintassi del file di configurazione prevede:
# Creazione di gruppi di utenti
User_Alias AMMINISTRATORI = klizya, Pat
User_Alias OPERATORI = Alessia, Claudia
# Creazione di gruppi di comandi
Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown, /usr/bin/halt, /usr/bin/reboot
# Creazione di gruppi di host
Host_Alias SERVERS = ns, www, mail
Host_Alias WORKSTATION = m1, m2, m3
# L'utente root ha tutti i privilegi
root ALL = (ALL) ALL
# Gli utenti appartenenti al gruppo ADMINS possono qualsiasi comando senza inserire una password
ADMINS ALL = NOPASSWD: ALL
# Gli utenti appartenenti al gruppo OPERATORI possono eseguire i comandi relativi al gruppo SHUTDOWN
OPERATORS WORKSTATION = SHUTDOWN
# L'utente Alessia può aggiungere utenti tramite il comando useradd da qualunque host
Alessia ALL=/usr/sbin/useradd
Una volta stabilite queste regole, gli utenti possono eseguire i comandi suddetti con i diritti di root facendoli precedere dal comando sudo e rispettando le restrizioni specificate in /etc/sudoers. La prima volta che si richiama un comando tramite sudo, il programma chiede di inserire la password, dopodichè controlla che la sintassi del comando da eseguire sia conforme con quanto specificato in /etc/sudoers. Da quel momento in poi la password non verrà più richiesta, a meno che non sia trascorso un certo intervallo di tempo (di solito 5 minuti) dall'ultima operazione.
Quindi, per poter creare un account l'utente Alessia dovrà procedere nel seguente modo:
[Alessia@m1 Alessia]$ sudo useradd Pippo
Password: *********
Per maggiori informazioni, fare riferimento alle seguenti pagine del manuale in linea: man sudo, man sudoers e man visudo, disponibili anche agli indirizzi:
http://www.sudo.ws/sudo/man/sudo.html
http://www.sudo.ws/sudo/man/sudoers.html
http://www.sudo.ws/sudo/man/visudo.html
Infine va chiarito che il comando sudo non ha bisogno di settaggi se si conosce la password di root.
Un esempio è questo:
klizya$ sudo vi /etc/samba/smb.conf
dove si vuole modificare il file smb.conf perchè‚ lavorando da utente, ciò non sarebbe possibile.
A questo punto verrà richiesta la password di root e il file sarà aperto per la modifica.
Fonti:
http://www-tlc.deis.unibo.it/Didattica/CorsiCE/LabRetiLA/Lucidi/02-Linux.pdf
Nessun commento:
Posta un commento