Linux Kernel Live Patching: i migliori tool per evitare il reboot del sistema
Una feature molto interessante del kernel Linux è sicuramente il Kernel Live Patching. Si tratta della possibilità, tramite il caricamento di moduli del kernel opportunamente strutturati, di patchare “live” il kernel stesso, senza necessità di riavviare la macchina. Molte aziende che offrono soluzioni Linux a livello enterprise (RedHat, Oracle, Canonical, etc) hanno iniziato a fornire questa feature ai loro clienti. Purtroppo, all’interno delle organizzazioni IT, ci sono processi e pratiche talmente ordinari da essere ritenuti intoccabili. Non importa se tali processi sono imperfetti o se esiste un modo migliore di fare le cose: se qualcosa ha funzionato per anni, le persone smettono di cercare alternative. Questo descrive perfettamente l’approccio al patching del kernel.
Al momento, la maggior parte delle organizzazioni patcha i server pianificando i cicli di riavvio. Poiché il riavvio dei server causa tempi di inattività, le persone lo rimandano il più a lungo possibile. Ciò significa che le patch non vengono applicate non appena vengono rilasciate e sicuramente questo non è un approccio corretto perché espone i server all’attacco da parte dei cybercriminali, mettendo le organizzazioni IT in pericolo. Chiunque abbia il compito di proteggere la propria azienda dagli attacchi informatici dovrebbe cercare un modo migliore per patchare il kernel Linux minimizzando i riavvii della macchina.
Il kernel live patching offre preziose funzionalità alle organizzazioni che gestiscono più server, possiamo riassumerle in tre punti:
- Funzionamento continuo dei server, senza riavvii. Ciò significa tempi di inattività ridotti o nulli;
- Automatizzazione delle attività. Ciò consente al personale di supporto di svolgere altre attività più proficue per l’azienda;
- Applicazione immediata delle nuove patch. Ciò riduce notevolmente le vulnerabilità del parco macchine.
Un po’ di storia
Il kernel live patching nasce dopo che uno studente del MIT, Jeff Arnold, ha posticipato un update del kernel Linux e il suo server è stato hackerato. Da allora ha cercato un modo per unire l’utile al dilettevole: mantenere il server attivo anche durante la procedura di patching. Ha collaborato con altri tre studenti per sviluppare Ksplice, il primo strumento software “rebootless” per applicare patch al kernel Linux. Hanno formato una società per promuovere il loro nuovo prodotto, che è stato poi acquisito da Oracle. Quando Oracle ha integrato Ksplice con la propria distribuzione, Oracle Linux, altri fornitori hanno iniziato a lavorare sui propri sistemi di live patching.
Come funziona il Linux Kernel Live patching
Esistono fondamentalmente due metodi per il patching live di un kernel Linux: temporaneo e persistente. Il metodo temporaneo applica una patch senza riavvio, ma in realtà richiede il riavvio del server in un secondo momento. Il patching persistente non richiede invece alcun riavvio.
Patching temporaneo
Il metodo temporaneo di patching richiede l’installazione di software di gestione dei pacchetti (come il plug-in YUM) sul proprio parco server. Quando le patch vengono consegnate ai repository, vengono applicate in base ai flussi di lavoro di aggiornamento specificati dal sysadmin. Questo metodo, detto anche stack patching, è incluso in alcune distribuzioni GNU/Linux ma comporta costi nel tempo e problemi che non sono evidenti sin da subito. Come detto prevede riavvii del server e tempi di inattività. Questo perché le patch temporanee si accumulano l’una sull’altra nel tempo, compromettendo prestazioni e stabilità. L’unica soluzione a questo problema è riavviare il server quando possibile.
Patching persistente
Con il metodo persistente un server dedicato memorizza le patch più recenti. Queste patch sono “monolitiche”, non temporanee, perché incorporano anche le patch precedenti. Sui server da patchare, un programma agente viene eseguito in background, esso controlla periodicamente la presenza di patch nel “server delle patch”. Quando richiesto dall’agente, un modulo del kernel esegue la patch.
Questo metodo prevede commissioni di licenza del fornitore, ma queste tariffe sono abbastanza accessibili. Inoltre, nel sostituire il lavoro manuale con processi automatizzati, il metodo persistente riduce il tempo e lo sforzo necessari per amministrare i server. Soprattutto, poiché non prevede alcun riavvio, consente ai server di rimanere attivi e funzionanti, a volte per anni senza alcun problema. Anche con le vulnerabilità hardware che di solito richiedono riavvii, come Spectre, Meltdown o Zombieload, i server che utilizzano il metodo persistente rimangono attivi e funzionanti.
Cinque tool per il Kernel Live Patching
Esistono diversi sistemi di patching live per il kernel Linux. Qual è il migliore? Dipende da situazione a situazione.
Per un’azienda che ha i propri server internamente, con un ampio staff di sysadmin, sistemi standardizzati e contratti di supporto esistenti con Oracle, Red Hat o SUSE, i vantaggi dell’utilizzo dei sistemi di patching proprietari sono enormi. Interagire su base regolare con le operazioni di supporto di questi fornitori può aiutare a semplificare le proprie.
Per un’organizzazione che esegue server Web standardizzati su Ubuntu, il sistema Livepatch sviluppato da Canonical è la scelta migliore. Per un’azienda con un elevato numero di server, che include diverse distribuzioni Linux, il sistema KernelCare è l’unica opzione praticabile. È anche una buona scelta per le aziende per le quali i costi e l’efficienza sono importanti, fornendo patching automatizzato e flessibilità a basso costo.
Oracle Ksplice
Ksplice, come vi anticipavo prima, è l’originale sistema di patching del kernel Linux creato nel 2009 e acquisito da Oracle nel 2011. Ora funziona solo con Oracle Linux e RHEL ma sempre avendo una licenza Oracle. Manca una funzionalità di pianificazione, ma esegue aggiornamenti automatici delle patch senza il riavvio richiesto.
RedHat Kpatch
Kpatch è stato creato da Red Hat per funzionare sulla propria distribuzione Linux, sebbene possa essere eseguito anche su Fedora, CentOS e sistemi basati su Debian come Ubuntu e Gentoo. Non è automatizzato: con Kpatch, un amministratore deve controllare e applicare le patch manualmente.
SUSE Kgraft
Kgraft è il sistema di patching live di SUSE e funziona solo con Linux Enterprise Server di SUSE. A differenza di altri sistemi, Kgraft non interrompe le funzioni del kernel mentre vengono applicate le patch. Al contrario, controlla le funzioni in modo da poter applicare tutte le patch all’interno di una singola chiamata di sistema.
Ubuntu Livepatch
Livepatch è stato creato da Canonical. È unico tra i sistemi di patch live in quanto consente agli amministratori di creare le proprie patch del kernel personalizzate. Funziona su Ubuntu, ovviamente, ma anche su Red Hat Enterprise Linux. Un demone, configurato opportunatamente tramite un token univoco fornito da Canonical stessa, verifica la disponibilità di live patch e si preoccupa di scaricarle ed installarle, attivandole senza necessità di riavvio.
KernelCare
KernelCare, sviluppato da CloudLinux, funziona con le distribuzioni più popolari, come CentOS, RHEL, Oracle Linux, Amazon Linux, Debian e Ubuntu. È automatizzato, facile da installare, gestisce patch complesse e fornisce patch personalizzate e a data fissa per soddisfare esigenze specifiche.
A titolo informativo vi propongo questa comparativa tra i servizi messa a punto da Ostechnix:
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.