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

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.