...

Live-opdatering af kernen til AlmaLinux Server med KernelCare: Sikkerhed uden genstart

Live-opdatering af kernen lukker sikkerhedskritiske sårbarheder i den kørende kernel i AlmaLinux uden at kræve en genstart og uden at forstyrre aktive arbejdsopgaver. Jeg viser i praksis, hvordan jeg opdaterer AlmaLinux 8/9 med kpatch og KernelCare sikrer, reagerer øjeblikkeligt og overholder compliance-krav – direkte under drift.

Centrale punkter

Følgende punkter giver et hurtigt overblik over fordelene og implementeringen.

  • Uden genstart: Implementering af kritiske kernel-rettelser i realtid, uden at tjenesterne bliver utilgængelige.
  • AlmaLinux 8/9: kpatch som standardværktøj, KernelCare med yderligere automatisering.
  • Automatisering: Planlagte opgaver og feeds leverer opdateringer til systemet i tide.
  • Overensstemmelse: Reagere hurtigt, lukke CVE’er, sikre muligheden for revision.
  • Webhosting: Høj tilgængelighed, minimal nedetid, tilfredse kunder.

Hvorfor live-patching af kernen er vigtig for AlmaLinux

På produktive AlmaLinux-servere opbevarer jeg Sikkerhedsvinduer så kort som muligt, for hvert minut med nedetid koster tillid og ofte penge. Livepatching giver mig mulighed for straks at lukke sikkerhedshuller i kernen uden vedligeholdelsesvinduer og uden genstart. Jeg bruger det i hosting-opsætninger, CI/CD-miljøer og på database-hosts, hvor konstant tilgængelighed er vigtig. Et yderligere plus: Jeg samler planlagte genstarter og udskyder dem til tidspunkter, hvor forretningsrisiciene er minimale. Hvis du vil læse mere om emnet, finder du praktisk baggrundsinformation om Live-opdatering af Linux, som gør fordelene håndgribelige i den daglige drift.

kpatch på AlmaLinux: Trin for trin til en fungerende rettelse

Med kpatch AlmaLinux har allerede den nødvendige infrastruktur til at udskifte kernefunktionaliteter under kørsel. Jeg installerer værktøjerne nemt via DNF med pakkerne kpatch og kpatch-build og tjekker, om der findes passende patch-RPM’er til den anvendte kerneversion. Derefter indlæser jeg modulerne i den kørende kerne ved hjælp af kpatch-værktøjet og kontrollerer status via kpatch list. På den måde aktiverer jeg hurtigt rettelser til kritiske CVE’er, mens webserveren, PHP-FPM, databaser eller caching-tjenester fortsætter med at køre. Det er dog afgørende, at der findes en passende Livepatch-pakke til den aktuelle kerneversion; ellers planlægger jeg en almindelig opdatering med genstart.

Sådan fungerer livepatching i kernen

Linux-kernelens Livepatch-infrastruktur erstatter udvalgte Funktioner dynamisk ved at omdirigere opkald til patchede varianter. Et patch-modul indeholder de korrigerede rutiner og beskriver, hvordan disse sikkert integreres i kørselskonteksten. Indlæsning, aktivering, erstatning, deaktivering og fjernelse hører til de standardoperationer, som jeg udfører på en kontrolleret måde. Jeg sørger for, at patcher passer nøjagtigt til min kernel-build, da selv små afvigelser kan føre til indlæsningsfejl. Som en del af min fallback-strategi deaktiverer jeg et modul kontrolleret efter behov og dokumenterer hver ændring til brug ved revisioner.

Krav og supportoversigt for AlmaLinux 8/9

Inden jeg tager Livepatching i brug i produktionsmiljøet, tjekker jeg de tekniske forudsætninger. I AlmaLinux 8 er standardkernen baseret på Enterprise-Stream 4.18, mens den i AlmaLinux 9 er baseret på 5.14 – inklusive backports fra Enterprise-distributionen. Livepatch-pakker er strengt bundet til build-, ABI- og konfigurationsversioner. Derfor sikrer jeg mig, at:

  • Den anvendte kernel-minor-version (inkl. el8/el9-suffikset) er tilgængelig og dækkes af en passende kpatch- eller KernelCare-pakke.
  • Secure Boot: Hvis denne funktion er aktiveret, skal de indlæste Livepatch-moduler være korrekt signeret. Ellers nægter kernen at indlæse dem med meddelelser som „Required key not available“.
  • Internet-/repo-adgang: Enten direkte adgang til pakkekilder/feeds eller en intern mirror/proxy.
  • Roller og rettigheder: Root-/sudo-adgang til installation, aktivering/deaktivering og statusforespørgsler.
  • Build-forudsætninger (valgfrit): Til egne kpatch-builds kræves der passende kernel-headere, debug-oplysninger og kompilator-værktøjskæder – det bruger jeg kun i specialiserede pipelines.

I heterogene flåder tjekker jeg desuden, om der anvendes EUS-/langtidsspor. Jo mere stabil og ensartet kernebasen er, desto nemmere er det at sikre dækning med livepatches på tværs af mange systemer.

kpatch vs. KernelCare: Oversigt over funktioner

For at gøre det lettere at vælge vil jeg sammenfatte de vigtigste forskelle mellem kpatch og KernelCare i en overskuelig tabel. Punkterne viser, hvilken løsning der egner sig til enkeltstående servere, klynger eller store serverparker, og hvor automatisering giver ekstra fordele. Jeg tager højde for implementering, dækning, administration og den daglige drift. På den måde træffer jeg en faktabaseret beslutning og tilpasser løsningen til min operative virkelighed. Begge metoder lukker sikkerhedshuller uden genstart, men vejen dertil adskiller sig mærkbart.

Kriterium kpatch (AlmaLinux) KernelCare
Bestemmelse Patch-RPM'er via DNF, kjerneafhængige Egne feeds, klienten indlæser live
Dækning af CVE’er Afhænger af de tilgængelige kpatch-pakker Løbende opdateringer til AlmaLinux 8/9
Automatisering Manuelle trin er almindelige Automatiske opdateringer med bestemte intervaller
Administration Lokale host-kommandoer CLI plus integrationer/orkestrering
Uden genstart Ja, for de omhandlede rettelser Ja, for de omhandlede rettelser
Operationelt scenarie Enkeltstående server, homogen kerne Heterogene flåder, høj tilgængelighed

AlmaLinux: Live-patching med KernelCare i praksis

For KernelCare Jeg installerer en letvægts-klient, forbinder værten med min konto og lader tjenesten regelmæssigt søge efter nye opdateringer. Så snart der udkommer en rettelse til en relevant CVE, henter klienten modulet og aktiverer det uden genstart. Jeg starter opdateringer manuelt efter behov med kcarectl –update og tjekker med kcarectl –patch-info, hvilke sårbarheder der er lukket. I flåder med blandede kernelversioner betaler denne tilgang sig, fordi jeg ikke behøver at håndhæve versionskonsistens i samme grad. Hvis du er interesseret i funktioner, politikindstillinger og skemaer, finder du detaljer om KernelCare Enterprise, som gør driften nemmere.

Sikkerheds- og compliance-fordele, der virkelig tæller

Jeg udelukker kritiske svagheder ofte samme dag, som opdateringerne ankommer, i stedet for at vente til det næste vedligeholdelsesvindue. Det mindsker mærkbart risikoen for angreb med rettighedseskalering eller container-escape. Til brug for revisioner registrerer jeg, hvornår hvilke CVE’er er blevet løst via Livepatch, og hvilken status de enkelte værter har. På den måde overholder jeg kravene i sikkerhedsretningslinjerne uden at bringe tjenesternes tilgængelighed i fare. Det dermed opnåede handlingsrum sikrer, at jeg kan forberede, dokumentere og gennemføre planlagte genstarter på en ordentlig måde på tidspunkter, der giver forretningsmæssig mening.

Virkeligheden inden for webhosting: Nul nedetid med AlmaLinux

I hosting-opsætninger mener jeg, at Serviceniveau højt ved at installere live-patches tilfældigt i baggrunden. CMS, webshops og API’er forbliver tilgængelige, mens kernen implementerer sikkerhedsrettelser. Klyngesystemer drager fordel af dette, da jeg ikke behøver at tage noder ud af klyngen for at udføre opdateringer. Jeg flytter vedligeholdelsesvinduer til tidspunkter, hvor også andre kerne- eller firmwareopdateringer kan samles. Hvis man overvejer de forskellige muligheder, kan man tage udgangspunkt i en kompakt Sammenligning af live-kernel-patching orientere sig og dermed træffe beslutninger hurtigere.

Praksis: Installation, kommandoer og automatisering

Konkrete kommandoer er en hjælp i hverdagen. Jeg sørger bevidst for, at processerne er enkle og kan automatiseres.

kpatch på AlmaLinux

# Installation af værktøjerne
sudo dnf install -y kpatch

# Søg efter tilgængelige patch-pakker til den aktuelle kernelversion
uname -r
sudo dnf search "kpatch-patch-$(uname -r)" || sudo dnf list available kpatch\* | grep $(uname -r)

# Installation af den relevante patch-RPM (eksempel på navn, kan variere afhængigt af build)
sudo dnf install -y kpatch-patch-$(uname -r)

# Indlæsning af patch og kontrol af status
sudo kpatch list
sudo kpatch load
sudo kpatch list

# Detaljer om indlæste moduler
sudo kpatch info

# Tilbagestil et specifikt modul (hvis nødvendigt)
sudo kpatch unload

Jeg planlægger at indføre en regelmæssig kontrol. Enten via Cron eller systemd-Timer, som opdaterer pakkecachen og henter nye kpatch-pakker. Det er vigtigt at huske: Hvis kpatch ikke henter noget, mangler der som regel en passende patch-RPM til den nøjagtige kernelfersion.

KernelCare på AlmaLinux

# Installation af klienten
sudo dnf install -y kernelcare

# Registrering af værten (indtast licens/token)
sudo kcarectl --register 

# Start manuel opdatering og kontroller status
sudo kcarectl --update
sudo kcarectl --info
sudo kcarectl --patch-info

# Valgfrit: Status for automatisk opdatering
sudo kcarectl --status

KernelCare tjekker regelmæssigt for nye opdateringer. Jeg lader standardintervallet køre, eller jeg udløser opdateringer målrettet inden risikovinduer (f.eks. inden weekender/helligdage) for at minimere tiden indtil sikkerheden er genoprettet.

Bedste praksis for drift

Før hver indsats tjekker jeg Kompatibilitet af kernen, modulerne og feeds for at undgå indlæsningsfejl. Derefter definerer jeg en klar proces: Test i staging, kontrolleret udrulning, overvågning og dokumentation. Efter større kerneopdateringer planlægger jeg dog alligevel en genstart for at sikre langsigtet konsistens på pakke- og ABI-niveau. Telemetri og alarmer viser mig, om ventetider eller fejlrater ændrer sig efter en patch, så jeg hurtigt kan reagere. Jeg registrerer ændringslogfiler på en revisionssikker måde, hvilket i høj grad forenkler senere revisioner og årsagsanalyser.

Fejlhåndtering og strategier til at undgå tilbagefald

I praksis støder jeg på tilbagevendende mønstre – med klare modforanstaltninger:

  • Versionsuoverensstemmelse: Patchen passer ikke til kernen (andet build-nummer). Løsning: Find den nøjagtige kerneversion (uname -r) og installer den passende patch, eller opdater kernen til en understøttet version.
  • Blokering af Secure Boot: „Required key not available“ ved indlæsning. Løsning: Kontroller signaturkæden, signer modulet og indtast nøglen via MOK, eller brug signerede pakker.
  • Der mangler afhængigheder: kpatch-build kræver header-/debug-oplysninger. Løsning: Sørg for, at de relevante -devel/-debuginfo-pakker er tilgængelige (kun hvis jeg selv bygger mine egne patches).
  • Inficeret kerne: Ikke-standardmoduler sætter taint-flags. Jeg tjekker /proc/sys/kernel/tainted og planlægger test og canary-udrulninger mere omhyggeligt.
  • Uventede bivirkninger: Jeg har en rollback klar: Aflast modulet, kontroller overvågningen, dokumenter hændelsen og planlæg om nødvendigt en almindelig kerneopdatering med genstart.

Min runbook er enkel: Identificere – Isolere – Tilbageføre – Eskalere. På den måde sikrer jeg, at jeg reagerer inden for få minutter, og at systemerne forbliver stabile.

Styring og skalering ved hjælp af orkestrering

I netværk med mange værter tilslutter jeg Live-patching i centrale administrationsværktøjer, så jeg kan styre opgaver, politikker og rapporter fra ét sted. Plugins og produktfeeds til AlmaLinux 8/9 gør det nemmere at distribuere KernelCare-patches og undgår manuelle indgreb på de enkelte systemer. Ved hjælp af skabeloner starter jeg opdateringer efter en tidsplan og modtager pålidelig feedback om, hvad der er lykkedes, og hvad der stadig mangler. Denne gennemsigtighed reducerer administrationsbyrden og gør sikkerhedsarbejdet planlæggeligt. Desuden sammenholder jeg patch-status med sårbarhedsstyring, så risici kan håndteres efter prioritet.

Eksempel: Ansible-kodestykker

# kpatch: Installation og aktivering
- name: Installer kpatch
  dnf:
    name: kpatch
    state: present

- name: Installer den passende kpatch-patch til den kørende kerne
  shell: dnf -y install "kpatch-patch-$(uname -r)"
  register: kpatch_install
  changed_when: "'Complete!' i kpatch_install.stdout"

- navn: Indlæs kpatch-moduler
  kommando: kpatch load
  registrer: kpatch_load
  ændret_når: "'Loading patch' i kpatch_load.stdout"

# KernelCare: Installer og registrer klient
- navn: Installer KernelCare-klienten
  dnf:
    navn: kernelcare
    tilstand: til stede

- navn: Registrer KernelCare-nøgle
  kommando: kcarectl --register {{ kernelcare_key }}
  argumenter:
    opretter: /var/cache/kcare/registered

Eksempel: systemd-Timer

# /etc/systemd/system/kpatch-auto.service
[Unit]
Description=Anvend tilgængelige kpatch-opdateringer

[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c 'dnf -y makecache && dnf -y install "kpatch-patch-$(uname -r)" && kpatch load'

# /etc/systemd/system/kpatch-auto.timer
[Unit]
Description=Periodisk kpatch-opdatering

[Timer]
OnBootSec=5m
OnUnitActiveSec=6h
Unit=kpatch-auto.service

[Install]
WantedBy=timers.target

På samme måde har jeg sat en timer op til KernelCare, der regelmæssigt kører kommandoen `kcarectl –update`. Det er vigtigt at følge en trinvis udrulning (Canaries, procentvise udrulninger), så bivirkninger kan opdages tidligt.

Livepatching i container- og Kubernetes-miljøer

Containere deler værtskernel. En livepatch virker derfor straks for alle pods og containere på noden. Det undgår den klassiske »drain/uncordon«-procedure, så længe arbejdsbelastningerne forbliver stabile. I praksis gør jeg således:

  • Jeg implementerer opdateringer node for node og overvåger nøje nøgletallene (CPU-sys, systemkald, netværksfejl).
  • Ved følsomme arbejdsbelastninger markerer jeg en eller to noder som »Canary« og lader nye live-patches først træde i kraft der.
  • Jeg gennemgår især clusterkomponenterne (CNI/CSI), da de berører mange kernegrænseflader.
  • I Managed Kubernetes-miljøer integrerer jeg Livepatch-strategien i node-livscykluspolitikkerne for at undgå konflikter med automatiske opgraderinger.

Denne tilgang er især fordelagtig i multi-tenant-klynger: Jeg kan reducere sikkerhedsvinduerne uden at forstyrre implementeringer eller CronJobs.

Præstation, grænser og risikovurdering

Livepatching medfører som regel kun en meget lille ekstra indirektion for de berørte funktioner. Ifølge målinger ligger overheadet typisk på et ubetydeligt niveau. Jeg holder alligevel øje med latenstider, kontekstskift og systembelastning for at opdage afvigelser i tide.

Det er vigtigt at have et klart overblik over grænserne:

  • Ikke alle fejl kan rettes med en live-patch. Omfattende ændringer af ABI eller strukturlayout kræver som regel en almindelig kernelopdatering.
  • Livepatches er additive rettelser. Efter større mindre kernelrevisioner planlægger jeg en genstart for at rydde „stakken“ af livepatches og bringe systemet tilbage til en konsistent basisstatus.
  • En livepatch erstatter kodestier, men ikke mikro- eller firmwareopdateringer. Til CPU-/firmware-risici planlægger jeg særskilte vedligeholdelsesvinduer.
  • Minimal indgriben har højeste prioritet: Jeg installerer kun sikkerhedsrelaterede rettelser og undgår funktionsændringer, der kan påvirke programmet mærkbart.

Overvågning, rapportering og revisionsspor

Gennemsigtighed er kernen i compliance. For hver host registrerer jeg kerneltilstanden, de indlæste livepatches og tidspunktet for aktiveringen. Dette kan nemt automatiseres via et script og synkroniseres med inventar-/CMDB-systemer.

# Quick-Report pr. vært
echo "Vært: $(hostname)"
echo "Kernel: $(uname -r)"
echo "kpatch:"
kpatch list 2>/dev/null || echo "kpatch ikke installeret"
echo "KernelCare:"
kcarectl --patch-info 2>/dev/null || echo "KernelCare ikke installeret"

Til målinger bruger jeg Node-Exporter (Textfile-Collector) eller Journald-Parser til at synliggøre indlæsningshændelser og fejl. Der udløses alarmer, når:

  • En host, der ikke har modtaget en patch i et bestemt antal timer/dage.
  • Det var ikke muligt at indlæse en Livepatch (uoverensstemmelse mellem signatur og version).
  • Forsinkelser/fejlprocenter stiger efter en opdatering.

I forbindelse med revisionen dokumenterer jeg CVE-ID’erne, kilden til opdateringen, dato og klokkeslæt samt den ansvarlige ændring. På den måde kan krav fra ISMS, PCI-DSS eller branchespecifikke standarder let dokumenteres.

Resumé: Sikkerhed uden afbrydelser

Jeg bruger Live-opdatering af kernen på AlmaLinux for hurtigt at lukke CVE’er uden at afbryde produktive arbejdsbelastninger. kpatch giver mig indbyggede værktøjer til homogene miljøer, mens KernelCare udmærker sig med automatiske feeds og orkestrering i store miljøer. På den måde reducerer jeg nedetid, opfylder compliance-krav og holder tjenesterne pålideligt online. Den, der etablerer klare processer for test, overvågning og dokumentation, udnytter potentialet fuldt ud. For at træffe mere dybtgående beslutninger er det værd at se nærmere på funktioner, driftsmodeller og den egen servicearkitektur – så sikkerhed og tilgængelighed forbliver i harmoni på lang sigt.

Aktuelle artikler