4.4. Controlli amministrativi

Quando si amministra una macchina personale, l'utente deve effettuare alcuni compiti come utente root, o ottenere dei privilegi root tramite un programma setuid, come ad esempio sudo o su. Un programma setuid opera con l'User ID (UID) del proprietario del programma invece dell'utente che usa il programma. Tali programmi sono caratterizzati da una lettera minuscula s nella sezione del proprietario di un elenco molto lungo, come riportato nel seguente esempio:

-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

Per gli amministratori del sistema di una organizzazione, tuttavia, è importante prendere delle decisioni su come regolare l'accesso amministrativo dei propri utenti alle loro macchine all'interno dell'organizzazione. Attraverso un modulo PAM chiamato pam_console.so, alcune attività normalmente riservate all'utente root, come ad esempio il riavvio e il montaggio di mezzi mobili, sono permessi anche al primo utente che effettua la registrazione alla console fisica (controllare il capitolo Pluggable Authentication Modules (PAM) nella Red Hat Enterprise Linux Reference Guide per maggiori informazioni sul modulo pam_console.so). Tuttavia, altri compiti importanti come il cambiamento delle impostazioni di rete, la configurazione di un nuovo mouse, o il montaggio di dispositivi di rete, sono impossibili senza un accesso amministrativo. Come risultato, gli amministratori di sistema, devono decidere quanto accesso amministrativo devono ricevere gli utenti sulle loro reti.

4.4.1. Concedere l'accesso root

Se gli utenti di una organizzazione, sono utenti fidati, computer-savvy group, è una buona idea abilitarli ad avere un accesso root. Permettere ad alcuni utenti di avere un accesso root, significa sgravare l'amministratore dai compiti del tipo, aggiunta dei dispositivi o della configurazione delle interfacce di rete, lasciando così loro la possibilità di occuparsi della sicurezza della rete e di altre questioni più importanti.

D'altro canto, dare accesso root a utenti individuali, significa andare incontro alle seguenti problematiche:

4.4.2. Annullare l'accesso root

Se un amministratore non desidera permettere agli utenti di eseguire un log in come utenti root, allora la password root dovrebbe essere tenuta segreta e l'accesso al runlevel uno o alla modalità utente singolo, dovrebbe essere annullato tramite una protezione della password del boot loader (per maggiori informazioni, consultate la Sezione 4.2.2.)

Tabella 4-1 mostra come un amministratore possa essere sicuro di annullare i login root:

MetodoDescrizioneEffettiNon incide
Cambiare la shell di rootModificate il file /etc/passwd e cambiate la shell da /bin/bash a /sbin/nologin.

Previene l'accesso alla shell di root e ne registra il tentativo.
I seguenti programmi non possono accedere all'account root:
· login
· gdm
· kdm
· xdm
· su
· ssh
· scp
· sftp

Programmi che non richiedono una shell, come client FTP, mail client e molti programmi setuid.
I seguenti programmi possono accedere all'account root:
· sudo
· client FTP
· client Email

Annullare l'accesso root tramite qualsiasi console del dispositivo (tty).Un file /etc/securetty vuoto, previene la registrazione root su qualsiasi dispositivo collegato al computer.

Previene l'accesso all'account root, tramite la console o la rete. I seguenti programmi non possono accedere all'account root:
· login
· gdm
· kdm
· xdm
· Altri servizi di rete che possono aprire un tty

Programmi che non effettuano una registrazione come root, ma effettuano compiti amministrativi tramite setuid o altri meccanismi.
I seguenti programmi possono accedere all'account root:
· su
· sudo
· ssh
· scp
· sftp

Annullare le registrazioni root SSHModificare il file /etc/ssh/sshd_config e impostare il parametro PermitRootLogin su no.

Previene l'accesso root tramite la suite OpenSSH degli strumenti. I seguenti programmi non possono accedere all'account di root:
· ssh
· scp
· sftp

Questo previene solo l'accesso root alla suite OpenSSHdegli strumenti.

Uso di PAM per limitare l'accesso root ai servizi.Modificare il file per il servizio scelto nella directory /etc/pam.d/. Assicuratevi che pam_listfile.so sia necessario per l'autenticazione. [a]

Previene l'accesso root ai servizi di rete che sono PAM-aware.
I seguenti servizi non possono accedere all'account root:
· FTP clients
· Client email
· login
· gdm
· kdm
· xdm
· ssh
· scp
· sftp
· Qualsiasi servizio PAM-aware

Programmi e servizi che non sono PAM-aware.

Note:
a. Controllare la Sezione 4.4.2.4 per maggiori informazioni.

Tabella 4-1. Metodi di annullamento dell'account root

4.4.2.1. Annullare la shell di root

Per prevenire gli utenti a eseguire direttamente un log in come root, l'amministratore del sistema può impostare la shell dell'account di root su /sbin/nologin nel file /etc/passwd. Ciò è in grado di prevenire l'accesso all'account root attraverso dei comandi che necessitano una shell, come ad esempio su e i comandi ssh.

ImportanteImportante
 

I programmi che non richiedono un accesso della shell, come ad esempio client email o il comando sudo, possono ancora accedere all'account root.

4.4.2.2. Annullare le registrazioni root

Per limitare maggiormante l'accesso all'account root, gli amministratori possono disabilitare i log in di root sulla console modificando il file /etc/securetty. Questo file elenca tutti i dispositivi ai quali l'utente root è abilitato al login. Se il file è inesistente, l'utente root può effettuare un login attraverso qualsiasi dispositivo di comunicazione sul sistema, sia attraverso la console che attraverso una interfaccia di rete. Ciò può risultare pericoloso in quanto un utente generico è in grado di effettuare un log in tramite Telnet nella sua macchina come utente root, inviando la sua password in testo normale attraverso la rete. Per default, il file /etc/securetty di Red Hat Enterprise Linux permette solo all'utente root di effettuare il login alla console fisicamente collegata alla macchina. Per impedire ad un utente root di effettuare un login, rimuovere i contenuti di questo file inserendo il seguente comando:

echo > /etc/securetty

AttenzioneAvviso
 

Un file /etc/securetty vuoto, non previene l'utente root dalla registrazione in modo remoto usando gli strumenti della suite OpenSSH, in quanto la console non si apre se non si effettua l'autenticazione.

4.4.2.3. Annullare le registrazioni root SSH

Per impedire i login root tramite il protocollo SSH, modificate il file di configurazione del demone SSH (/etc/ssh/sshd_config). Cambiate la riga che riporta:

# PermitRootLogin yes

per poter leggere nel seguente modo:

 
PermitRootLogin no

4.4.2.4. Annullare root usando PAM

PAM, attraverso il modulo /lib/security/pam_listfile.so, permette di avere una grande flessibilità nel negare specifici account. Ciò permette ad un amministratore di indicare il modulo ad un elenco di utenti che non sono abilitati alla registrazione. Di seguito, viene riportato un esempio di come viene usato il modulo per il server FTP vsftpd nel file di configurazione PAM /etc/pam.d/vsftpd (il carattere \ alla fine della prima riga nel seguente esempio, non è necessario se la direttiva è su di una singola riga):

auth   required   /lib/security/pam_listfile.so   item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed

Questo indica a PAM di consultare il file /etc/vsftpd.ftpusers e negare l'accesso al servizio di qualsiasi utente presente nell'elenco. L'amministratore è libero di cambiare il nome di questo file e può mantenere degli elenchi separati per ogni servizio, oppure usare un elenco principale per negare l'accesso a servizi multipli.

Se l'amministratore desidera negare l'accesso a servizi multipli, una riga simile può essere aggiunta ai servizi di configurazione PAM, come ad esempio /etc/pam.d/pop e /etc/pam.d/imap per client email o /etc/pam.d/ssh per client SSH.

Per maggiori informazioni su PAM, consultare il capitolo Pluggable Authentication Modules (PAM) nella Red Hat Enterprise Linux Reference Guide.

4.4.3. Limitare l'accesso root

Invece di negare completamente l'accesso all'utente root, l'amministratore può abilitare l'accesso solo ai programmi setuid, come ad esempio su o sudo.

4.4.3.1. Il comando su

Inserendo il comando su, viene richiesto all'utente di digitare la password root conferendogli, dopo l'autenticazione, un prompt della shell.

Una volta effettuato il login tramite il comando su, l'utente diventa un utente root, ottenendo così un accesso amministrativo completo al sistema. In aggiunta, una volta che l'utente diventa un utente root, potrebbe essere possibile usare il comando su per diventare un qualsiasi altro utente sul sistema, senza dover inserire alcuna password.

A causa della potenza di questo programma, gli amministratori all'interno di una organizzazione, possono limitare l'accesso a questo comando.

Un modo semplice per fare questo, è quello di aggiungere utenti al gruppo amministrativo speciale chiamato wheel. In tal senso, inserire il seguente comando come utente root:

usermod -G wheel <username>

Nel comando precedente, sostituire il <nome utente> con il nome utente aggiunto al gruppo wheel.

Per usare Utente Manager in tal senso, andate su Pulsante menu principale (sul pannello) => Impostazioni del sistema => Utenti & Gruppi o inserire il comando system-config-users al prompt di una shell. Selezionare la scheda Utenti, e successivamente selezionare l'utente dall'elenco, e fare clic su Proprietà dal menu (o scegliere File => Proprietà dal menu a tendina).

Selezionate successivamente la scheda Gruppi e fate clic sul gruppo wheel, come mostrato in Figura 4-2.

Figura 4-2. Schermata Gruppi

Successivamente aprire il file di configurazione PAM per su, (/etc/pam.d/su), in un editor di testo, e rimuovere il commento [#] dalla seguente riga:

auth  required /lib/security/$ISA/pam_wheel.so use_uid

Facendo in questo modo, si permette ai soli membri del gruppo amministrativo wheel, di usare questo programma.

NotaNota
 

L'utente root fa parte per default del gruppo wheel.

4.4.3.2. Il comando sudo

Il comando sudo, offre un approccio diverso nel dare agli utenti un accesso amministrativo. Quando un utente fidato antepone sudo a un comando amministrativo, gli verrà richiesto la propria password. Successivamente una volta autenticata e assumendo che il comando venga accettato, il comando amministrativo viene eseguito come se l'utente fosse un utente root.

Il formato di base del comando sudo, è il seguente:

sudo <command>

Nel precedente esempio <comando> sarà sostituito da un comando normalmente riservato agli utenti root, come ad esempio mount.

ImportanteImportante
 

Gli utenti del comando sudo, dovrebbero fare molta attenzione nell'effettuare un log out prima di abbandonare la propria macchina, in quanto altri utenti possono usare il comando per un periodo di cinque minuti, senza richiedere alcuna password. Questa impostazione, può essere alterata tramite il file di configurazione, /etc/sudoers.

Il comando sudo permette di avere una grande flessibilità. Per esempio, solo gli utenti elencati nel file di configurazione /etc/sudoers, sono abilitati ad usare il comando sudo, e il comando viene eseguito nella shell dell'utente, non in quella di root. Questo significa che la shell di root, può essere disabilitata completamente, come mostrato nella Sezione 4.4.2.1.

Il comando sudo fornisce anche un esempio completo di verifica. Ogni autenticazione effettuata in modo positivo, viene registrata sul file /var/log/messages e il comando emesso insieme al nome dell'utente, verrà registrato sul file /var/log/secure.

Un altro vantaggio del comando sudo è rappresentato dalla possibilità che un amministratore possiede, di abilitare l'accesso a utenti diversi a comandi specifici in base alle loro necessità.

Gli amministratori che desiderano modificare il file di configurazione di sudo, /etc/sudoers, dovrebbero usare il comando visudo.

Per dare a qualcuno privilegi amministrativi completi, inserire visudo e aggiungere una riga simile alla seguente, nella sezione di specificazione dei privilegi dell'utente:

juan ALL=(ALL) ALL

Questo esempio indica che l'utente juan, può usare sudo da qualsiasi host ed eseguire qualsiasi comando.

L'esempio sotto riportato , indica la possibile granularità quando si configura sudo:

%users  localhost=/sbin/shutdown -h now

Il seguente esempio indica come qualsiasi utente sia in grado di emettere il comando /sbin/shutdown -h now, solo se lo stesso viene emesso dalla console.

La pagina man per sudoers, possiede un elenco delle opzioni dettagliato per questo file.