Canonical Livepatch patch di sicurezza senza riavvio

Bentornati nel nuovo episodio della saga relativa al patching del kernel Linux senza la necessità di riavviare il sistema per applicare gli aggiornamenti. In questo episodio vedremo Canonical Livepatch ossia la soluzione ideata per Ubuntu che, a differenza delle altre, è gratuita fino a 3 sistemi Ubuntu.

Il fatto che essa sia gratuita permette, a chiunque possieda un computer con Ubuntu o un server con Ubuntu, di usare la tecnologia al prezzo di un’iscrizione sul sito di Canonical.

Come Kernelcare, Livepatch applica solo patch di sicurezza e non di funzionalità, queste ultime vanno installate tramite la solita procedura (es. apt upgrade) e riavvio del sistema.

Livepatch è installabile a partire da Ubuntu 14.04 fino all’ultima versione. In questo tutorial installeremo Livepatch su un server con Ubuntu 18.04 Bionic Beaver.

Per ottenere una chiave di attivazione di Livepatch basta collegarsi al sito https://ubuntu.com/livepatch, registrarsi e ottenere il proprio codice.

La prima cosa da fare sul sistema, invece, è aggiornare i metadati dei pacchetti e installare le patch del sistema.

sudo apt update && sudo apt upgrade

Poi è necessario installare snap (snapd):

sudo apt install snapd

Quindi è possibile procedere con la semplicissima installazione del pacchetto canonical-livepatch come mostrato dalla guida e poi l’abilitazione con la chiave.

sudo snap install canonical-livepatch
sudo canonical-livepatch enable afd6b**********************

Lanciato il comando di attivazione comparirà un token identificativo.

Prima di applicare le patch di sicurezza del kernel si può utilizzare il comando per capire lo stato del sistema:

sudo canonical-livepatch status

Che può restituire un output simile:

Nello screenshot precedente, si nota come il kernel instalato sia 4.15.0-72.81-generic mentre il patchState è nothing-to-apply, il che significa che il nostro kernel è già all’ultima versione con le ultime patch di sicurezza disponibili.

Ogni volta che ci colleghiamo al server, è possibile vedere nel banner iniziale alcune statistiche relative a Livepatch, che in questo caso ricordano che Livepatch è abilitato e le patch sono tutte applicate.

In questo altro sistema dopo aver installato Livepatch, abbiamo riscontrato che ci sono delle patch di sicurezza del kernel da applicare.

Solitamente per applicare le patch non bisogna fare nulla, perchè si arrangia il deamon canonical-livepatchd ad installare le patch in autonomia, in alternativa è sufficiente lanciare il seguente comando:

sudo canonical-livepatch refresh

Tuttavia nel caso dello screenshot è necessario procedere all’installazione di un nuovo kernel: non tramite livepatch ma tramite il solito dist-upgrade o apt upgrade (e riavvio). Questo perchè il patchState è kernel-upgrade-required, come si può notare nello screenshot sopra.

sudo apt update
sudo apt dist-upgrade
sudo reboot

Invece nel caso sotto proposto, Livepatch ha applicato automaticamente delle patch di sicurezza:

KernelCare – kernel security patching rebootless

Secondo appuntamento con le soluzioni per l’applicazione delle patch per il kernel Linux senza necessità di reboot.

Dopo Ksplice di Oracle, in questo episodio presenteremo KernelCare, la tecnologia di CloudLinux, disponibile per svariate distribuzioni ad un costo accessibile (molto più economico di Ksplice). Una licenza per un singolo server costa 45 dollari all’anno.

KernelCare, al momento, è disponibile per:

  • Red hat Entreprise Linux/CentOS 6 e 7,
  • Oracle Linux UEK 6 e 7,
  • Debian 8 e 9,
  • Amazon (Linux) 1 e 2,
  • Ubuntu 14.04, 16.04, 18.04.

Mancano per ora la versione 8 di RHEL/CentOS/Oracle Linux e le ultime Debian e Ubuntu.

Per ottenere KernelCare è sufficiente scaricare lo script di installazione di KernelCare e lasciarlo tramite bash:

curl -s https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash

Poi è necessario registrarsi sul sito, tramite il quale è possibile ottenere una chiave temporanea, valida per 30 giorni, con la quale attivare il periodo di prova di KernelCare.
La chiave di attivazione viene inviata via e-mail all’indirizzo di registrazione.

Dopo aver ottenuto la chiave è sufficiente lanciare questo comando, seguito dalla chiave (asteriscata):

kcarectl --register a***************o

Dopo aver registrato la propria licenza del software, si può procedere all’installazione delle patch con il comando:

kcarectl --update

Il risultato del comando dovrebbe essere “Kernel is safe”.

Prima di lanciare l’update delle patch, e dopo.

Per avere informazioni circa il “punto” (level) di patching si può usare il comando:

kcarectl --uname

Questo è necessario perchè il classico uname non restituisce variazioni. Neppure dopo il riavvio del sistema.

Infatti è bene precisare che Kernelcare, rispetto ad altre soluzioni come Kspice, applica le patch di sicurezza (solo sicurezza, no funzionalità) al kernel attivo sul sistema mentre per installare realmente un kernel nuovo è necessario farlo con metodi tradizionali (yum update o apt upgrade); questo significa che se installate solo le patch di Kernelcare al riavvio del sistema vi troverete lo stesso kernel con le patch Kernelcare, non un kernel nuovo.

Kernelcare di default installa automaticamente le patch di sicurezza ogni 4 ore per cui se desiderate disattivare tale funzionalità, potete ricorrere alla modifica del file /etc/sysconfig/kcare/kcare.conf trasformando AUTO_UPDATE=True in AUTO_UPDATE=False

Aggiornamento del kernel senza riavviare con Ksplice

L’avevamo promesso in un precedente articolo: avremmo trattato i diversi sistemi per aggiornare il kernel Linux senza la necessità di fare reboot per attivare le patch. In questo articolo vederemmo la tecnologia Ksplice messa a disposizione di Oracle Enterprise Linux (OEL), Red Hat EL, CentOS, Debian e Ubuntu.

Nella versione desktop, ossia Ksplice Desktop, è gratuito (previa registrazione mail) ed è installabile su Ubuntu 19.10, 19.04, 18.04 e 16.04 e anche su Fedora 29; questo il sito https://ksplice.oracle.com/try/desktop dove scaricare la versione desktop.

In alcuni casi, Ksplice non solo consente l’aggiornamento del kernel del pinguino ma anche di glibc e openssl (queste ultime due solo su Oracle Enterprise Linux 6 e 7, per il momento).

La tecnologia di Oracle Linux, Ksplice (per server) non è gratuita ma è possibile provarla per 30 giorni, registrandosi sul sito di Oracle, accettando il Ksplice Uptrack Subscription Agreement.

Dopo aver accettato l’accordo, viene mostrata una pagina con il codice da usare per l’attivazione di Ksplice.

La cosa è alquanto semplice, basta copiare le prime tre righe di codice sul proprio server Oracle Linux.

wget -N https://www.ksplice.com/uptrack/install-uptrack
sh install-uptrack fbf***********************456

Per installare gli aggiornamenti, è sufficiente usare il comando:

uptrack-upgrade -y

Al termine dell’installazione, avremo una nuova versione del kernel installata.

Il tutto è tremendamente semplice.

Ricordiamo che l’aggiornamento del kernel, non viene riportato dal comando uname, che continuerà a riportare il vecchio kernel come attivo. Utilizzare il comando uptrack-uname per visualizzare la versione effettiva del kernel:

# uptrack-uname -a

L’aggiornamento del sistema operativo, kernel compreso, senza riavvio

Se c’è una cosa che i sistemi GNU/Linux erano decenni avanti rispetto alla controparte Windows è la gestione del patching.
Un sistemista Windows passava nottate intere a fare il cosidetto WSUS, ossia l’applicazione delle patch di sicurezza e funzionalità, di Windows; senza contare che ogni tot numero di patch installate si doveva riavviare il sistema.

Organizzandosi in una pianificazione trimestrale o semestrale, si finiva per installare oltre la decina di aggiornamenti alla volta riguardanti solo il software Microsoft: Office, Silverlight, .Net Framework, SQL server, Exchange e ovviamente anche quelli relativi il sistema operativo. Poi rimanevano i programmi di terze parti come Adobe, Java. Un incubo.

Con le distribuzioni GNU/Linux tutto è molto più semplice, l’operazione di upgrade è molto rapida: potendo utilizzare un repository software interno, la discriminante la fa la CPU del server e la velocità del disco rigido. Un tempo sicuramente inferiore a quello del patching di Windows a parità di hardware.
Quindi il sistemista Linux rispetto a quello Windows specialmente per sistemi critici da presidiare, lavora meno ore.

L’unica cosa che probabilmente era migliorabile nelle distribuzioni del pinguino era la necessità di dover riavviare la macchina dopo l’installazione di un nuovo kernel.
Un unico riavvio, a fonte dei multipli riavvii necessari a Windows, che però era migliorabile ed eliminabile con un po’ di sforzo; tutto questo per portare l’uptime dei sistemi verso quell’agognato 99,99% su base annua che significa un downtime complessivo di poco inferiore ai 53 minuti all’anno. Possibile?

Oggi, nel 2019, installare le patch di sicurezza e di funzionalità in sistemi GNU/Linux è possibile anche senza riavvio, pur aggiornando il kernel.

Storicamente la prima soluzione, nata circa 10 anni fa, che consente di aggiornare il kernel di un server Linux senza interrompere i processi del sistema e senza riavvio, è Ksplice.
La tecnologia Ksplice fu acquisita da Oracle nel 2011 e implementata, a pagamento, sulla distribuzione Oracle Linux, derivata da Red Hat. Questo ha fatto sì che i maggiori produttori di distribuzioni Linux commerciali Red Hat e SuSE si mettessero in corsa per trovare una loro soluzione. Così sono nati Kpatch (di Red Hat) e Kgraph (di SuSE).
Dalle due soluzioni, ovviamente opensource, come sintesi nel 2016 è nata la versione di Canonical Ubuntu chiamata Livepatch.
Livepatch è gratuita per uso personale fino a 3 sistemi ed è attivabile tramite registrazione sul sito di Ubuntu: https://auth.livepatch.canonical.com/. In seguito è arrivata KernelCare di CloudLinux che ha permesso di attivare la tecnologia su CentOS, Debian e altre distribuzioni.

Grsecurity sistema di sicurezza per Linux kernel

lock Grsecurity è una soluzione di sicurezza, distribuita sotto forma di  una patch per il kernel Linux che permette di effettuare molteplici controlli e verifiche in modo attivo nel nostro sistema. Questi funzionalità passano dal livello di protezione del funzionamento del kernel, dal controllo di esecuzione dei job nello stack, dal controllo delle attività degli utenti, dai permessi di esecuzione in alcune aree del sistema, agli ulteriori controlli di sicurezza imposti da chroot e molto altro. Ecco una descrizione di ogni opzione che offre questa soluzione; la traduzione delle varie sezioni è manutenuta il più possibile vicina ai testi originali. Sono lasciati i titoli originali per agevolare la loro corretta identificazione.

Continua a leggere

La terza generazione della virtualizzazione e il futuro

virtualization starsLe aspettative verso gli strumenti in grado di virtualizzare degli ambienti stanno crescendo molto rapidamente così come il giro di denaro attorno a queste tecnologie. Grandi aziende sono entrate in questo ambito e il futuro vedrà sicuramente una diffusione massiccia dell’uso della virtualizzazione in vari settori.
Esistono vari ambiti su cui ottimizzare un software di virtualizzazione: ambiente desktop, server, real-time. Difficilmente esiste un prodotto in grado di dare il meglio in tutti questi.
Un hypervisor studiato per operare su server difficilmente offre basse prestazioni nel campo della virtualizzazione desktop: è importante, nell’ultimo caso, che sia molto reattivo. Un utente non deve stare ad aspettare che il puntatore del mouse si sposti di qualche pixel in una finestra.
La virtualizzazione è un tecnologia che sta tuttora evolvendo. Continua a leggere

Un kernel vanilla per il domU di Xen

tux xen domUE’ possibile, con delle limitazioni, adoperare un kernel vanilla (scaricabile da kernel.org) per far girare un domU. L’uso di un kernel vanilla permette di poter usufruire di tutti i miglioramenti dei nuovi kernel e di utilizzare i benefici della paravirtualizzazione.

Ci sono delle differenze tra un kernel vanilla e uno XenLinux. XenLinux è un kernel modificato per essere compatibile con l’ipervisore Xen, mentre il kernel vanilla è Linux ufficiale. Continua a leggere