JustVit

Disabilitare account ‘root’ su Ubuntu / Debian

Eccoci qui con questo nuovo articolo che spiegherà come mettere in sicurezza il vostro sistema disabilitando l’account root su Ubuntu / Debian, impedendo a chiunque di accedere al sistema con privilegi così elevati che permetterebbero di compiere azioni dannose o causare gravi danni al vostro ambiente.

Passeremo attraverso diversi passaggi e forse molti di questi possono risultare ridondanti, ma non si può mai sapere quale sarà la prossima vulnerabilità scoperta che potrebbe esporre anche parzialmente il vostro sistema.

Chi è root? e perché è così importante?

L’utente root è il primo utente che troverete di default sulla vostra macchina, è l’utente che ha i privilegi di fare qualsiasi cosa nel vostro sistema e chiunque (anche il proprietario del sistema) a cui venga concesso l’accesso con quel ruolo ha il controllo completo su tutto il sistema. La nostra prima preoccupazione è evitare che chiunque, anche noi stessi se possibile, possa effettuare il login come utente root.
Questo ruolo è molto critico quando si tratta di sicurezza e protezione e dovremmo fare del nostro meglio per rispettarlo e proteggerlo.

Nelle prossime sezioni vedrete alcune tecniche per chiudere l’accesso ad esso, disabilitando l’account root su Ubuntu / Debian, permettendo solo a determinati utenti di eseguire azioni root usando il comando sudo davanti ad ogni comando che richiediamo di eseguire come “super user” alla nostra macchina.

Privilegi di utenti e gruppi

Il primo passo prima di iniziare a rafforzare la sicurezza dell’utente root è assicurarci di avere un utente che possa eseguire azioni sudo.

Per verificare questo possiamo vedere quali utenti abbiamo nel nostro gruppo sudo digitando:

$ getent groups sudo

Questo ci darà un elenco di utenti iscritti a quel gruppo e dobbiamo assicurarci di essere o di avere un utente in quel gruppo poiché è quello che ci permetterà di eseguire comandi con privilegi root.

Se procediamo a rafforzare il login prima di avere un utente in questo gruppo potremmo perdere per sempre la possibilità di eseguire azioni nel nostro sistema.

Se non abbiamo un utente diverso da root possiamo creare un nuovo utente con:

$ sudo adduser <nomeutente>

Questo ci guiderà attraverso un elenco di informazioni che dobbiamo inserire, ma solo la password è obbligatoria, le altre non sono necessarie.

E poi dobbiamo aggiungere il nuovo utente al gruppo sudo con:

$ sudo usermod -aG sudo <nomeutente>

Questo aggiungerà (-a) al gruppo (G) sudo il nostro utente.

A questo punto dovremmo passare all’utente che abbiamo appena creato:

$ su <nomeutente>

Ora dovremmo controllare di nuovo per essere sicuri di essere nel gruppo sudo e procedere rimuovendo la possibilità di effettuare il login come root.

Il primo passo per rimuovere le possibilità di login è cambiare la sua shell da /bin/bash (potrebbe essere diversa) a /sbin/nologin nel file /etc/passwd.

Apriamo il file:

$ nano /etc/passwd

poi dobbiamo cercare l’utente root e alla fine della riga effettuare la modifica come detto prima. Il risultato dovrebbe essere così:

root:x:0:0:root:/root:/sbin/nologin

Salvare il file e chiuderlo.

Ora chi proverà ad accedere come root riceverà il messaggio: “This account is currently not available”. Questo è il messaggio predefinito ma potete modificarlo in /etc/nologin.txt.

SSH

L’accesso attraverso il protocollo ssh (secure socket shell) è il modo più usato e diffuso per prendere il controllo di un’altra macchina usando una connessione criptata e questo significa che è sempre preinstallato su ogni sistema e pronto ad ascoltare sulla porta 22 come opzione predefinita ed è per questo che disabilitare l’account root su Ubuntu / Debian è molto importante.

La configurazione del servizio ssh può essere fatta modificando il file /etc/ssh/sshd_config:

$ sudo nano /etc/ssh/sshd_config

La prima cosa che faremo è assicurarci di avere la regola:

PermitRootLogin no

Se non c’è dobbiamo aggiungerla.

Questo rimuoverà la possibilità di login come root ma nella prossima guida spiegherò come mettere in sicurezza il servizio ssh correttamente.

PAM

Nei nostri sistemi PAM (pluggable authentication module) è l’applicazione che gestisce i compiti di autenticazione richiesti da molti dei nostri servizi come “system login” e “sshd” che abbiamo sul nostro sistema e fornisce il comportamento appropriato nel caso in cui i singoli PAM falliscano.

Tutti i file di configurazione per ogni servizio che usa PAM si trovano nella directory: /etc/pam.d/. Qui troveremo i due file che stiamo cercando:
login e sshd.

A questo punto apriremo entrambi questi file con privilegi root:

$ sudo nano /etc/pam.d/login

e

$ sudo nano /etc/pam.d/sshd

andando ad aggiungere in ognuno le seguenti righe:

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

Possiamo aggiungere queste due righe in ogni file all’interno di /etc/pam.d/ per impedire l’accesso da root anche ad altri servizi compatibili con PAM come ftp, imap e molti altri.

Ora dobbiamo creare il file deniedusers che dovrebbe contenere solo un elemento per riga

$ sudo nano /etc/sshd/deniedusers

aggiungere al suo interno il nome dell’utente root e poi salvarlo.

È possibile creare anche un file per ogni servizio se è necessario avere diversi utenti disabilitati per ogni servizio.

Dopo dovremmo evitare che questo file venga letto o modificato da altri:

$ sudo chmod 600 /etc/sshd/denieduser

TTY

Per limitare l’accesso alla console dall’utente root dobbiamo modificare il file /etc/securetty in cui sono elencati tutti i terminali in cui l’utente root può effettuare il login.
Per ottenere questo svuoteremo il file. In questo modo il sistema non troverà corrispondenze per i terminali disponibili da utilizzare da root.

Prima rinominiamo il file esistente per mantenerne una copia:

$ sudo mv /etc/securetty /etc/securetty.orig

Poi creeremo un nuovo file vuoto con il nome dell’originale:

$ sudo touch /etc/securetty

E ora lo proteggiamo dall’essere modificato da altri:

$ sudo chmod 600 /etc/securetty

Ora dovremmo avere 2 file: quello vecchio rinominato securetty.orig con il contenuto originale e il nuovo securetty che è un file vuoto.

Quali sono i prossimi passi?

Sto già lavorando su un altro articolo sulla messa in sicurezza del vostro sistema e questa volta sarà focalizzato su ssh probabilmente.

Fatemi sapere se lo avete trovato utile, se qualcosa non è chiaro e altro.

Foto di chris panas su Unsplash

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *