Bevisade spärrkedjan mot intrång från början till slut vid varje härdningskörning genom att spärra en reserverad testadress, läsa den kärnregel som uppstod och häva spärren i ett städblock som alltid körs, så att en jail som slutar fungera fäller körningen i stället för att rapportera att allt är i ordning.
Arbetet utfört: september 2026
spärrkedjan, bevisad vid varje härdningskörning
Situation. Tjänsten som spärrar intrångsförsök hade redan ertappats med att lägga spärrar på en port som SSH‑daemonen inte lyssnade på. Att rätta porten stängde just det fallet. Det gjorde ingenting åt orsaken till att felet hade överlevt så länge, nämligen att ett spärrflöde saknar synligt felläge: tjänsten körs, jailen listas som aktiv, och ingenstans står det om en spärr någonsin når kärnan.
Uppgift. Spärrflödet måste provas skarpt vid varje konvergenskörning, mot den levande regeluppsättningen, i stället för att härledas ur att tjänsten är igång.
Handling. Konvergenskörningen spärrar nu en adress ur det block som standarderna reserverar för dokumentation, läser tillbaka den resulterande regeln i kärnans paketfilter och häver spärren i ett städblock som körs oavsett om kontrollen gick igenom eller misslyckades. Det reserverade intervallet är det bärande valet — testadressen tillhör ingen, så en kvarglömd spärr som överlever en misslyckad körning kan inte stänga ute ett verkligt nätverk. Återläsningen från kärnan är den andra halvan: tjänstens egen statusutdata skulle rapportera framgång för en spärr som inte gav upphov till någon regel, vilket är exakt det fel som testas. Vid sidan av detta är spärrbackenden fastlåst i stället för att lämnas åt tjänstens egen identifiering, och loggbackenden är inställd på automatisk identifiering eftersom operativsystemet inte levereras med någon traditionell autentiseringslogg och fel val misslyckas tyst genom att bevaka en fil som aldrig dyker upp.
Resultat. Ett spärrflöde som slutar fungera får nu en konvergenskörning att misslyckas i stället för att fortsätta rapportera felfri status, och det var den enda egenskap som spelade någon roll. Det kostar några sekunder vid varje körning, och varje gång skrivs och tas en brandväggsregel bort i produktion, vilket är ett verkligt ingrepp i ett levande system och godtogs med motiveringen att alternativet redan hade visat sig vara sämre.
Se tillbaka på Härdade SSH till 24 kontrollerade direktiv med validering i tre steg — kandidatfilen, den sammansatta konfigurationen och sedan daemonens egen återläsning — efter att återläsningen hade avslöjat att den körande servern tyst åsidosatte två av de tjugofyra. Läs vidare: Verifierade brandväggsregler efter position snarare än förekomst och läste den numrerade regellistan och den aktiva paketfilterkedjan, eftersom en regel som finns inte är detsamma som en regel som något paket når. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.