Come evitare i riavvii del server con Ubuntu Livepatch

Ubuntu Livepatch Featured

Se gestisci il tuo server, prima o poi ti trovi di fronte a questo problema: devi riavviare il sistema operativo, ma la macchina fornisce un servizio importante che non puoi interrompere.

Ma perché riavviare in primo luogo? Tutto sembra funzionare bene dopo un comando apt-get upgrade. Tuttavia, le cose non sono sempre come sembrano. Anche se il sistema continua a funzionare felicemente dopo ogni aggiornamento, senza forzare un riavvio come fa Windows, potrebbe comunque averne bisogno.

Ad esempio, quando viene scoperta una vulnerabilità nel nucleo del sistema (kernel), viene corretta e inviata al tuo server come un nuovo pacchetto. Dopo aver installato il kernel corretto, alcuni file vengono scritti su disco, ma è ancora il vecchio kernel a gestire tutto, poiché è quello caricato in memoria (RAM).

Questo significa che il tuo server è ancora vulnerabile alle falle di sicurezza precedentemente scoperte. Altri processi, demoni e servizi possono essere ricaricati senza riavviare il sistema operativo. Tuttavia, il kernel si trova al centro del sistema e può essere ricaricato solo al successivo avvio.

Leggi anche: Come aggiungere utenti in Ubuntu Server

Ubuntu Livepatch risolve questo problema consentendoti di chiudere le falle di sicurezza del kernel senza riavviare. In questo modo, puoi evitare o ritardare i riavvii per settimane o mesi senza compromettere la sicurezza.

L’idea principale dietro il live patching è semplice: quando una funzione è vulnerabile, riscrivila, elimina il difetto e carica la nuova funzione da qualche parte in memoria. Quando la funzione viene chiamata, invece di eseguire il codice nel kernel, reindirizza la chiamata per utilizzare il codice riscritto.

Ubuntu Livepatch Code Text

Ma, come per la maggior parte delle cose che sembrano funzionare semplicemente, l’implementazione e i dettagli tecnici non sono così semplici.

Come impostare Livepatch su Ubuntu

Vai a questa pagina e crea il tuo account Ubuntu One. (Oppure accedi se lo hai già.) Controlla la tua email e fai clic sul link di conferma dell’account successivamente. Successivamente, visita la pagina del servizio Canonical Livepatch. Seleziona che sei un “utente Ubuntu” e fai clic sul pulsante per generare il tuo token. La pagina successiva ti mostrerà i comandi esatti che devi inserire sul tuo server. Dopo il primo comando, inserisci

sudo snap install canonical-livepatch

Aspetta qualche secondo finché il pacchetto snap non è completamente installato. Quando è fatto, riceverai un risultato simile a quello che puoi vedere nell’immagine seguente.

Ubuntu Livepatch Install Snap

Infine, con l’ultimo comando dalla pagina di Canonical,

sudo canonical-livepatch enable#PASTE_YOUR_TOKEN_HERE

il servizio diventa attivo e applicherà automaticamente le patch di sicurezza al tuo kernel, ogni volta che necessario, senza alcun input richiesto da parte tua.

Installa il demone Snap se necessario

In rare occasioni, il primo comando nella sezione precedente potrebbe fallire, con il seguente messaggio di errore: -bash: /usr/bin/snap: Nessun file o directory di questo tipo. In questo caso significa che il tuo fornitore di server ha un’immagine del sistema operativo Ubuntu che non include il servizio del demone snap per impostazione predefinita. Installalo con:

sudo apt update &&sudo apt install snapd

Ora esegui di nuovo i due comandi dalla sezione precedente.

Leggi anche: 5 patch utili per migliorare la tua esperienza con dwm

Mantenere il tuo server aggiornato

Livepatch applicherà tutti gli aggiornamenti di sicurezza necessari al tuo kernel. Tuttavia, dovresti comunque aggiornare il resto del tuo sistema regolarmente con un comando come:

sudo apt update &&sudo apt upgrade

Dovresti farlo settimanalmente, o anche più spesso, se puoi. I pacchetti di sistema importanti potrebbero avvisarti che devono essere riavviati per applicare le ultime correzioni di sicurezza.

Ubuntu Livepatch Service Restart

Questi sono solitamente riavvii delicati, il che significa che non interrompono alcun servizio nel processo. Ad esempio, in questo caso, il demone SSH è stato riavviato senza interrompere la sessione SSH attiva.

In altre situazioni, potresti riavviare i servizi tu stesso per assicurarti che il nuovo codice corretto venga ricaricato e che le correzioni di sicurezza vengano applicate. Ad esempio, se noti che il pacchetto nginx è stato aggiornato, puoi eseguire

systemctl restart nginx.service

per ricaricare il demone nginx in memoria. Altrimenti, anche se un pacchetto è aggiornato, potrebbe comunque funzionare con il vecchio codice vulnerabile, mettendo a rischio il tuo server a attacchi noti. Alcuni aggiornamenti di pacchetti fanno questo per te, ma altri no. Ecco perché è una buona abitudine prestare attenzione a cosa fa “apt upgrade” e riavviare alcuni servizi, se necessario. Puoi anche controllare i log per vedere se questo è stato fatto automaticamente.

Conclusione

Come puoi vedere, Canonical ha reso piuttosto facile implementare questo su un server. Per quanto riguarda il kernel, non è richiesto alcun lavoro di manutenzione da parte tua. L’unica cosa che puoi fare è eseguire

canonical-livepatch status

di tanto in tanto per controllare la situazione.