## Gestione utenti

L'amministrazione degli utenti è una parte critica per il mantenimento di un sistema sicuro. Utenti poco esperti con privilegi di amministrazione spesso sono la causa della compromissione di sistemi. Pertanto, è importante capire come proteggere il proprio server tramite delle semplici ed efficaci tecniche di gestione degli account utente.

### Dove è l'utente root?

Gli sviluppatori di Ubuntu hanno deciso di disattivare in modo predefinito l'account di amministrazione (root) in tutte le installazioni di Ubuntu. Questo non significa che l'account root è stato eliminato o che non può essere accessibile, è stata impostata una password che non corrisponde ad alcun possibile valore codificato, pertanto, l'accesso come root non è direttamente possibile.

Gli utenti sono incoraggiati a utilizzare lo strumento sudo per svolgere i compiti di amministrazione di sistema. Lo strumento sudo permette a un utente autorizzato di elevare temporaneamente i propri privilegi usando la propria password, invece di dover conoscere direttamente la password di root. Questo semplice, ma efficace, metodo cerca di fornire responsabilità per tutte le azioni degli utenti e dà all'amministratore un controllo granulare sulle azioni che un utente può eseguire con tali privilegi.

- Se per qualche ragione si desidera abilitare l'account root, basta assegnargli semplicemente una password:

      sudo passwd

  Il programma «sudo» chiederà di inserire la propria password e successivamente di inserirne una nuova per l'account root:

      [sudo] password for NOME_UTENTE: (inserire la propria password)
      Inserire nuova password UNIX: (inserire una nuova password per root)
      Reinserire la nuova password UNIX: (reinserire la nuova password per root)
      passwd: password aggiornata correttamente

- Per disabilitare l'account root, utilizzare la seguente sintassi per passwd:

      sudo passwd -l root

- Per maggiori informazioni riguardo sudo, consultarne il manuale:

      man sudo

In modo predefinito, l'utente iniziale creato dall'installazione di Ubuntu è un membro del gruppo «admin» ed è stato aggiunto al file `/etc/sudoers` come utente autorizzato all'utilizzo di sudo. Per autorizzare altri utenti ai pieni poteri amministrativi di root attraverso l'uso del comando sudo, è sufficiente aggiungerli al gruppo «admin».

### Aggiungere e rimuovere utenti

Il processo per la gestione di utenti e gruppi locali è molto intuitivo e differisce poco dalla maggior parte degli altri sistemi GNU/Linux. Ubuntu e altre distribuzioni basate su Debian, incoraggiano l'utilizzo del pacchetto «adduser» per la gestione degli utenti.

- Per aggiungere un nuovo utente, utilizzare i seguenti comandi e seguire le istruzioni per impostare all'account una password e fornire le caratteristiche identificabili come nome, cognome, numero di telefono, ecc...

      sudo adduser NOME_UTENTE

- Per eliminare un utente e il suo gruppo principale, digitare:

      sudo deluser NOME_UTENTE

  Quando si elimina un account utente non viene cancellata la sua cartella home. È decisione dell'amministratore se cancellare o no quella cartella in base alle proprie scelte.

  Ricordare che, se non sono state prese le necessarie precauzioni, ogni nuovo utente aggiunto successivamente con gli stessi UID/GID del precedente proprietario della cartella, avrà accesso a tale cartella.

  È possibile modificare questi valori UID/GID con qualcosa di più appropriato, come per esempio l'account root, e spostare la cartella per evitare futuri conflitti:

      sudo chown -R root:root /home/NOME_UTENTE/
      sudo mkdir /home/archived_users/
      sudo mv /home/NOME_UTENTE /home/archived_users/

- Per bloccare o sbloccare temporaneamente l'account di un utente, utilizzare, rispettivamente, i seguenti comandi:

      sudo passwd -l NOME_UTENTE
      sudo passwd -u NOME_UTENTE

- Per aggiungere o rimuovere un gruppo personalizzato, utilizzare, rispettivamente, i seguenti comandi:

      sudo addgroup NOME_GRUPPO
      sudo delgroup NOME_GRUPPO

- Per aggiungere un utente a un gruppo, digitare:

      sudo adduser NOME_UTENTE NOME_GRUPPO

### Sicurezza dei profili utente

Quando viene creato un nuovo utente, l'applicazione «adduser» crea una nuova directory chiamata `/home/NOME_UTENTE`. Il profilo predefinito è modellato secondo i contenuti presenti nella directory `/etc/skel` che contiene tutti i profili base.

Se il proprio server ospiterà più utenti, è necessario prestare la massima attenzione alle autorizzazioni delle home degli utenti, al fine di garantirne la riservatezza. In modo predefinito, in Ubuntu, le home degli utenti sono create con permessi di lettura e di esecuzione per tutti gli utenti. Questo significa che tutti gli utenti possono visualizzare e accedere al contenuto delle home degli altri utenti, cosa che potrebbe non essere soddisfacente per il proprio ambiente.

- Per verificare i permessi attuali delle home degli utenti utilizzare il seguente comando:

      ls -ld /home/NOME_UTENTE

  Il seguente output mostra che la directory `/home/NOME_UTENTE` è accessibile in lettura da parte di tutti gli utenti:

      drwxr-xr-x 2 nomeutente nomeutente 4096 2007-10-02 20:03 nomeutente

- È possibile rimuovere il permesso in lettura da tutti con il seguente comando:

      sudo chmod 0750 /home/NOME_UTENTE

  Alcuni amministratori utilizzano anche l'opzione per la modifica ricorsiva (-R) di tutte le sotto-cartelle e file della home, ma questo non è necessario e potrebbe inoltre causare degli effetti indesiderati. Modificare i permessi alla cartella principale è più che sufficiente per prevenire degli accessi non autorizzati.

  Un modo più efficiente potrebbe essere quello di modificare direttamente le impostazioni predefinite dell'applicazione adduser sui permessi da assegnare alle home degli utenti appena creati. È sufficiente modificare la variabile `DIR_MODE`, nel file `/etc/adduser.conf`, secondo le proprie esigenze.

      DIR_MODE=0750

- Dopo aver corretto opportunamente i permessi di accesso alle directory home come descritto precedentemente, verificare il risultato con il seguente comando:

      ls -ld /home/NOME_UTENTE

  Il risultato qui sotto mostra come i permessi di lettura per tutti gli altri utenti siano stai rimossi:

      drwxr-x--- 2 nomeutente nomeutente 4096 2007-10-02 20:03 nomeutente

### Politica delle password

Una severa politica delle password è uno dei più importanti aspetti della sicurezza di un sistema. Le più frequenti violazioni di un sistema avvengono tramite attacchi di forza bruta con degli elenchi di parole che statisticamente possono comprende delle parole chiavi utilizzate come password. Se si vuole di offrire un qualsiasi tipo di accesso remoto utilizzando la propria password locale, assicurarsi che la complessità della stessa superi dei limiti minimi di adeguatezza, di impostare delle password con durate massime e controllare frequentemente i propri sistemi di autenticazione.

#### Lungezza minima di una password

Ubuntu richiede, in modo predefinito, una lunghezza minima per le password pari a 4 caratteri, oltre ad alcuni controlli di entropia. Questi valori sono impostati nel file `/etc/pam.d/common-password` alla riga:

    password   required   pam_unix.so nullok obscure min=4 max=8 md5

Per modificare la lunghezza minima delle password impostandola a 6 caratteri, modificare la variabile appropriata con «min=6». Ecco un esempio della modifica:

    password   required   pam_unix.so nullok obscure min=6 max=8 md5

La variabile `max=8` non rappresenta la massima lunghezza di una password, ma indica semplicemente che le password con numero di caratteri maggiore a quello indicato non saranno sottoposte al controllo sulla complessità. Per maggiori informazioni sulla complessità delle password, fare riferimento all'applicazione libpam-cracklib.

#### Scadenza delle password

Quando vengono creati dei nuovi utenti è possibile impostare una durata minima e massima per le loro password, obbligando gli stessi a modificarla alla scadenza.

- Per visualizzare facilmente lo stato attuale di un account utente, utilizzare il seguente comando:

      sudo chage -l NOME_UTENTE

  L'output seguente mostra informazioni interessanti sull'account dell'utente, in particolare che non ci sono politiche applicate:

      Ultimo cambio della password : gen 20, 2008
      Scadenza della password : mai
      Inattività della password : mai
      Scadenza dell'account : mai
      Numero minimo di giorni tra i cambi di password : 0
      Numero massimo di giorni tra i cambi di password : 99999
      Giorni di preavviso prima della scadenza della password : 7

- Per impostare uno qualsiasi di questi campi, utilizzare il seguente comando e seguire le istruzioni:

      sudo chage NOME_UTENTE

  Quello che segue è un esempio di come sia possibile modificare manualmente la data di scadenza dell'account (-E) al 31/01/2008 (inserirla nel formato mm/gg/aaaa o nel formato aaaa/mm/gg), l'età minima della password (-m) a 5 giorni, l'età massima (-M) a 90 giorni, il periodo di inattività (-I) a 5 giorni dopo la scadenza della password e un avvertimento (-W) di 14 giorni prima della scadenza delle password.

      sudo chage -E 01/31/2008 -m 5 -M 90 -I 30 -W 14 username

- Per verificare le modifiche, utilizzare lo stesso comando di prima:

      sudo chage -l NOME_UTENTE

  Il seguente output mostra i cambiamenti effettuati sull'account:

      Ultimo cambio della password : gen 20, 2008
      Scadenza della password : apr 19, 2008
      Inattività della password : mag 19, 2008
      Scadenza dell'account : gen 31, 2008
      Numero minimo di giorni tra i cambi di password : 5
      Numero massimo di giorni tra i cambi di password : 90
      Giorni di preavviso prima della scadenza della password : 14

### Ulteriori considerazioni sulla sicurezza

Molte applicazioni usano meccanismi di autenticazione alternativi che possono essere facilmente trascurati anche da esperti amministratori di sistema. Pertanto, è importante comprendere e controllare come avviene l'autenticazione degli utenti e come accedono ai servizi e alle applicazioni sul proprio server.

#### Accesso SSH per gli utenti disabilitati

Disattivando o bloccando l'account di un utente non impedisce che quest'ultimo riesca a effettuare l'accesso al server se precedentemente utilizzava una chiave pubblica RSA; saranno ancora in grado di ottenere l'accesso al server senza la necessità della password. Controllare sempre se nella directory home degli utenti sono presenti dei file che permettano questo tipo di autenticazione SSH, come per esempio `/home/nomeutente/.ssh/authorized_keys`.

Eliminare o rinominare la directory `.ssh/` nella home degli utenti per prevenire future autenticazioni SSH.

Assicurarsi di controllare qualsiasi connessione SSH stabilita dagli utenti disabilitati, dato che potrebbero esserci connessioni aperti in entrata o in uscita. Terminare tutte quelle che vengono trovate.

Limitare l'accesso SSH solo agli utenti che ne hanno il diritto. Per esempio, è possibile creare un gruppo chiamato «sshlogin» e aggiungere il nome del gruppo alla voce `AllowGroupsvarname> nel file /etc/ssh/sshd_config.`

    AllowGroups sshlogin

Dopo aver aggiunto gli utenti con diritto di accesso SSH al gruppo «sshlogin», riavviare il server SSH.

    sudo adduser NOME_UTENTE sshlogin
    sudo /etc/init.d/ssh restart

#### Autenticazione utenti su database esterno

La maggior parte delle reti aziendali richiedono un servizio di autenticazione e di controllo degli accessi centralizzato per tutte le risorse di sistema. Se il server è stato configurato per gestire l'autenticazione attraverso database esterni, assicurarsi di disabilitare gli account utente sia esternamente che internamente, in questo modo l'autenticazione locale di riserva non è più possibile.

Capitolo 8. Sicurezza |  | Sicurezza della console