Veilig zonder downtime: Linux-kernel patching uitgelegd

Leestijd
3 minuten
Auteur
William Edwards
Datum
9 september 2019

De Linux-kernel vormt de basis voor allerlei systemen. Door de complexiteit van de kernel komen er geregeld patches uit die wij zonder downtime doorvoeren.

De Linux-kernel vormt de basis voor Linux, het meestgebruikte besturingssysteem voor websites en servers. De kernel is een onmisbaar stuk software dat het systeem aanstuurt. Om de Linux-kernel veilig te houden worden geregeld kernel-updates uitgebracht. Om deze updates door te voeren moet het systeem echter opnieuw gestart worden, wat downtime met zich meebrengt. Bij Cyberfusion doen we het anders...

Linux-kernel update probleem

De Linux-kernel is behoorlijk complexe software. Aan de Linux-kernel hebben meer dan 14.000 mensen bijgedragen en de code bestaat uit meer dan 15 miljoen lijnen. Het is namelijk cruciaal dat Linux super-stabiel draait.

Door deze complexiteit komt het geregeld voor dat er nieuwe kernel-versies worden uitgebracht om de code te verbeteren. Kernel-updates variëren van kleine code-verbeteringen tot oplossingen voor beveiligingslekken. Wanneer een kernel-update uitkomt, moeten systemen zo snel mogelijk bijgewerkt worden. Als een update een oplossing bevat voor een beveiligingslek, is een systeem vatbaar voor aanvallers totdat deze geüpdatet wordt.

Het nadeel van het doorvoeren van een update, is dat een systeem opnieuw gestart moet worden om een kernel-update door te voeren. Een systeem is dus niet veilig totdat deze opnieuw gestart wordt, maar herstarten brengt downtime met zich mee. Aan de ene kant willen we het doorvoeren van updates niet uitstellen, en aan de andere kant willen we geen downtime veroorzaken...

Direct veilig met 'live patching'

Wij vinden dat een systeem én veilig moet zijn én hoge uptime moet hebben. Daarom maken wij gebruik van zogenaamde 'live kernel patching', waardoor onze systemen direct veilig zijn zonder downtime.

Normaal gesproken moet een systeem opnieuw gestart worden omdat de Linux-kernel in het geheugen (RAM) draait. Geheugen is namelijk duizenden keren sneller dan een schijf, waardoor Linux zeer goed presteert. De kernel kan echter niet aangetast worden wanneer het in het geheugen geladen is. De enige manier om de nieuwe versie van de kernel opnieuw in te laden is door het systeem te herstarten.

Wij werken hieromheen met 'live kernel patching'. Met deze technologie worden stukjes kernel-code slim verwisseld met updates terwijl het systeem draait. In plaats van dat de hele kernel opnieuw ingeladen wordt, met een herstart tot gevolg, wordt de code in het geheugen verwisseld. Dit gaat als volgt in zijn werk.

Update wordt in KVAS geladen

Een update kan bestaan uit slechts enkele code-lijnen of een heel blok code. Zodra een update uitkomt, worden de wijzigingen in de Kernel virtual address space (KVAS) geladen. Dit is een speciaal stuk geheugen dat gereserveerd is voor de Linux-kernel. De code die nu in het geheugen staat wordt vervangen met de zojuist ingeladen, nieuwe code.

Linux-kernel staat in Kernel Space-geheugen
Linux-kernel staat in Kernel Space-geheugen
Processen worden bevroren

Om de update veilig door te voeren worden processen, zoals web-verkeer en de database, voor een fractie van een seconde bevroren.

Update wordt doorgevoerd

Terwijl de processen heel even bevroren zijn, wordt de draaiende code direct vervangen met de nieuwe code uit de update.

Processen worden hervat

Binnen een fractie van een seconde worden de processen weer hervat. De oude code is vervangen met de nieuwe code en zal niet meer draaien tenzij de update met de hand ongedaan wordt gemaakt.

Live Linux-kernel updates in de praktijk

Door de jaren heen zijn er flink wat kritische kernel-updates uitgebracht. Om er een paar te noemen:

  • Fix voor kritische Dirty COW beveiligingslek (2016)
  • Workaround voor kritische Meltdown/Spectre beveiligingslek in Intel CPU's (2018)
  • Fix voor kritische SACK PANIC bug (2019)
  • Workaround voor kritische SWAPGS beveiligingslek in Intel CPU's (augustus 2019)

Daarnaast zijn er nog tal van kleine updates die het nieuws niet halen maar wel misbruikt kunnen worden. Als we kijken naar een systeem dat al anderhalf jaar draait, zijn er 114 'live Linux-kernel updates' toegepast, zonder enige onderbreking of downtime. Dat hebben we liever dan 114 keer plannen en herstarten...

Ook interessant
Cyberfusion is verhuisd naar de Eindhoven Tower
Leestijd
< 1 minuut
Auteur
William Edwards
Datum
10 juli 2020

Op 1 juni zijn we verhuisd naar de Eindhoven Tower! We hebben het iconische Evoluon ingeruild voor een nieuwe basis tegenover Eindhoven Centraal station.

IPv6 als standaard: we gaan je actief informeren!
Leestijd
2 minuten
Auteur
William Edwards
Datum
19 mei 2020

Vanaf juni informeren we partners proactief over IPv6. Als websites geen AAAA-record hebben, gaan we helpen bij de implementatie van IPv6.

NGINX op clusters: nóg snellere sites!
Leestijd
2 minuten
Auteur
William Edwards
Datum
4 mei 2020

Nieuw op 100% uptime Cyberfusion clusters: NGINX én Apache webservers zijn nu beschikbaar! Serveer content óók tijdens bezoekerspieken razendsnel!

Direct Contact

Meer informatie? Neem direct contact op!

icon-phone

Bel nu: 040 - 711 44 96

icon-mail

Mail nu: sales@cyberfusion.nl