Har strammet systemd‑sandboxen på hver unit
Har reduceret eksponeringen i systemd‑sandkassen for hver unit, platformen installerer — en dead man's switch‑tjeneste fra 9,6 UNSAFE til 1,5, en git‑forge med adgang fra internettet fra 8,3 EXPOSED til 1,5 — og tilføjet et parsertjek ved konvergens efter at have fundet et fejlstavet direktiv, der ubemærket blev ignoreret i tre unit‑skabeloner.
Arbejdet udført: september 2026

Foto: Pexels / Pixabay 
Foto: daschorsch / Pixabay
hver unit lagt i sandkasse, og tastefejlen, der blev ignoreret
Situation. Tretten unit‑filer blev installeret af dette repository og kører på produktionsværten med de privilegier, supervisoren giver som standard, og det er de fleste. En hærdningsscore gav dead man’s switch‑tjenesten 9,6 og kaldte den usikker; den internetvendte git‑forge fik 8,3 og betegnelsen eksponeret. Begge tal var korrekte, og ingen af dem havde ført til noget, for en score uden en tilknyttet tærskel er et tal, folk lærer at springe over.
Opgave. Hver enhed skulle have en sandkasse, der står i forhold til det, den reelt gør, og sandkasserne skulle have et tjek, for en forkert sandkasse fejler på den måde, at enheden starter og derefter går i stykker et sted, parseren ikke kan se.
Handling. Privilegiebegrænsninger kom ind i alle unit‑skabeloner — et privilegieloft låst fast på enhedens egne privilegier, et systemkaldsfilter, begrænsede adressefamilier og hukommelse, der er skrivbar eller eksekverbar, men aldrig begge dele. De målte resultater: dead man’s switch gik fra 9,6 til 1,5, forgen fra 8,3 til 1,5 og de to sikkerhedskopienheder fra 9,6 til 2,3 og 2,5. Arbejdet med dem afdækkede noget, der var mere værd end scorerne. Ét direktiv havde været stavet forkert i tre unit‑skabeloner, lige så længe de roller havde eksisteret — et navn, der ser plausibelt ud, men ikke findes, og som supervisoren reagerer på ved at logge, at den ikke genkender nøglen, og starte enheden alligevel. En søgning efter et direktiv beviser, at det blev skrevet; kun parseren beviser, at det fik virkning. Derfor kører en verifikationsrolle nu hver enhed gennem supervisorens egen verifikator under kørslen, og den inkluderes af alle roller, der installerer en enhed. Det, den stadig ikke kan se, står klart i de samme dokumenter: alle direktiver, der kan ødelægge disse enheder, ødelægger dem under kørsel, ikke ved parsning, og en score kan ikke afgøre, om et script stadig når sin sidste linje.
Resultat. Hver enhed kører med de privilegier, den har brug for, og ikke dem, den ikke har brug for; tallene er målt, ikke påstået, og den fejltype, hvor en tastefejl bliver til en kontrol, der i al stilhed mangler, får nu en kørsel til at fejle. Målingens grænser er noteret ved siden af den, og det er den del, der forhindrer den næste læser i at stole for meget på et grønt scoreinterval.
Se tilbage på Har bygget overvågning med dead man's switch. Læs videre: Har bygget 7 skrivebeskyttede rapporteringsroller. Eller tag et kig på hele porteføljen.
Ét stykke af en længere fortegnelse — og det hele ligger her på sitet.
Hver post er skrevet på samme måde: situationen, opgaven, hvad vi gjorde, og hvad der ændrede sig.

